EthernetNetIf Compatibility.
Dependents: XBeeWiFi_SPI_example
Fork of NetServicesSource by
Diff: api/TCPSocket.h
- Revision:
- 5:dd63a1e02b1b
- Parent:
- 0:632c9925f013
- Child:
- 8:93fa3cfc0219
--- a/api/TCPSocket.h Fri Jul 09 14:46:47 2010 +0000 +++ b/api/TCPSocket.h Tue Jul 27 15:59:42 2010 +0000 @@ -27,58 +27,92 @@ #include "if/net/net.h" //Essentially it is a safe interface to NetTcpSocket +///TCP Socket Errors enum TCPSocketErr { __TCPSOCKET_MIN = -0xFFFF, - TCPSOCKET_SETUP, //NetTcpSocket not properly configured + TCPSOCKET_SETUP, ///TCPSocket 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_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 }; +///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 }; - +///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 +120,8 @@ m_pCbMeth = (void (CDummy::*)(TCPSocketEvent)) pMethod; } - void resetOnEvent(); //Disable callback + ///Disables callback + void resetOnEvent(); protected: void onNetTcpSocketEvent(NetTcpSocketEvent e);