#ifndef ns_TCPSocketApp_h
#define ns_TCPSocketApp_h
#include "protoDebug.h"
#include "app.h"
#include "TCPData.h"
#include "SimpleList.h"
#include "TCPEvent.h"
#include <tcp-full.h>
class TCPSocketApp : public Application {
public:
TCPSocketApp(Agent *tcp);
~TCPSocketApp();
void send(AppData *data);
void setBytesSent(int bytes) { bytesSent_+=bytes; }
void recv(int nbytes);
void setTCPAgent(Agent *tcp);
void setTCPSocketAgentListener(TCPSocketAgentListener *listener) { tcpSocketListenerAgent = listener; }
FullTcpAgent *getTCPAgent() { return (FullTcpAgent *)agent_; }
void connect(TCPSocketApp *socketApp) { connectedSocketApp = socketApp; socketApp->connectedSocketApp=this; }
void upcallToApp(char *data, unsigned int size);
AppData* get_data(int&, AppData*);
virtual void resume();
protected:
virtual int command(int argc, const char*const* argv);
TcpData* receiveDataFromClient();
virtual void start() { abort(); }
virtual void stop() { abort(); }
private:
void getDataFromOtherSocket();
TCPSocketApp *connectedSocketApp;
SimpleList tcpDataList_;
TcpData *curdata_;
int readOffset;
int bytesSent_;
int curbytes_;
TCPSocketAgentListener *tcpSocketListenerAgent;
};
#endif