Diff: LPC1768/api/TCPSocket.h
- Revision:
- 3:e02ec42cf9c8
- Parent:
- 0:0f5a52711275
--- a/LPC1768/api/TCPSocket.h Thu Jul 22 11:31:59 2010 +0000
+++ b/LPC1768/api/TCPSocket.h Fri Aug 06 10:42:05 2010 +0000
@@ -21,64 +21,106 @@
THE SOFTWARE.
*/
+/** \file
+TCP Socket header file
+*/
+
#ifndef TCPSOCKET_H
#define TCPSOCKET_H
-#include "if/net/net.h"
+#include "core/net.h"
+#include "core/host.h"
//Essentially it is a safe interface to NetTcpSocket
+///TCP Socket error codes
enum TCPSocketErr
{
__TCPSOCKET_MIN = -0xFFFF,
- TCPSOCKET_SETUP, //NetTcpSocket not properly configured
- TCPSOCKET_TIMEOUT,
- TCPSOCKET_IF, //If has problems, does not exist or is not initialized
- TCPSOCKET_MEM, //Not enough mem
- TCPSOCKET_INUSE, //If/Port is in use
- TCPSOCKET_EMPTY, //Connections queue is empty
- TCPSOCKET_RST, // Connection was reset by remote host
+ TCPSOCKET_SETUP, ///<TCPSocket not properly configured
+ TCPSOCKET_TIMEOUT, ///<Connection timed out
+ TCPSOCKET_IF, ///<Interface has problems, does not exist or is not initialized
+ TCPSOCKET_MEM, ///<Not enough mem
+ TCPSOCKET_INUSE, ///<Interface / Port is in use
+ TCPSOCKET_EMPTY, ///<Connections queue is empty
+ TCPSOCKET_RST, ///<Connection was reset by remote host
//...
- TCPSOCKET_OK = 0
+ TCPSOCKET_OK = 0 ///<Success
};
+///TCP Socket Events
enum TCPSocketEvent
{
- TCPSOCKET_CONNECTED, //Connected to host, must call accept() if we were listening
- TCPSOCKET_ACCEPT, //Connected to client
- TCPSOCKET_READABLE, //Data in buf
- TCPSOCKET_WRITEABLE, //Can write data to buf
- TCPSOCKET_CONTIMEOUT,
- TCPSOCKET_CONRST,
- TCPSOCKET_CONABRT,
- TCPSOCKET_ERROR,
- TCPSOCKET_DISCONNECTED
+ TCPSOCKET_CONNECTED, ///<Connected to host
+ TCPSOCKET_ACCEPT, ///<Client is connected, must call accept() to get a new Socket
+ TCPSOCKET_READABLE, ///<Data in buf
+ TCPSOCKET_WRITEABLE, ///<Can write data to buf
+ TCPSOCKET_CONTIMEOUT, ///<Connection timed out
+ TCPSOCKET_CONRST, ///<Connection was reset by remote host
+ TCPSOCKET_CONABRT, ///<Connection was aborted
+ TCPSOCKET_ERROR, ///<Unknown error
+ TCPSOCKET_DISCONNECTED ///<Disconnected
};
+class NetTcpSocket;
+enum NetTcpSocketEvent;
+///This is a simple TCP Socket class
+/**
+ This class exposes an API to deal with TCP Sockets
+*/
class TCPSocket
{
public:
+ ///Creates a new socket
TCPSocket();
protected:
TCPSocket(NetTcpSocket* pNetTcpSocket);
public:
+ ///Closes if needed and destroys the socket
~TCPSocket(); //close()
+ ///Binds the socket to (local) host
TCPSocketErr bind(const Host& me);
+
+ ///Starts listening
TCPSocketErr listen();
+
+ ///Connects socket to host
TCPSocketErr connect(const Host& host);
+
+ ///Accepts connection from client and gets connected socket
TCPSocketErr accept(Host* pClient, TCPSocket** ppNewTcpSocket);
+ ///Sends data
+ /*
+ @return a negative error code or the number of bytes transmitted
+ */
int /*if < 0 : TCPSocketErr*/ send(const char* buf, int len);
+
+ ///Receives data
+ /*
+ @return a negative error code or the number of bytes received
+ */
int /*if < 0 : TCPSocketErr*/ recv(char* buf, int len);
/* TODO NTH : printf / scanf helpers that call send/recv */
+ ///Closes socket
TCPSocketErr close();
+ //Callbacks
+ ///Setups callback
+ /**
+ @param pMethod : callback function
+ */
+ void setOnEvent( void (*pMethod)(TCPSocketEvent) );
+
class CDummy;
- //Callbacks
- void setOnEvent( void (*pMethod)(TCPSocketEvent) );
+ ///Setups callback
+ /**
+ @param pItem : instance of class on which to execute the callback method
+ @param pMethod : callback method
+ */
template<class T>
void setOnEvent( T* pItem, void (T::*pMethod)(TCPSocketEvent) )
{
@@ -86,7 +128,8 @@
m_pCbMeth = (void (CDummy::*)(TCPSocketEvent)) pMethod;
}
- void resetOnEvent(); //Disable callback
+ ///Disables callback
+ void resetOnEvent();
protected:
void onNetTcpSocketEvent(NetTcpSocketEvent e);