#include <sstream>
#include <string>
#include "dns.h"
+#include <deque>
/**
* States which a socket may be in
/**
* Error types which a socket may exhibit
*/
-enum InspSocketError { I_ERR_TIMEOUT, I_ERR_SOCKET, I_ERR_CONNECT, I_ERR_BIND, I_ERR_RESOLVE };
+enum InspSocketError { I_ERR_TIMEOUT, I_ERR_SOCKET, I_ERR_CONNECT, I_ERR_BIND, I_ERR_RESOLVE, I_ERR_WRITE };
/**
* InspSocket is an extendable socket class which modules
/**
* The output buffer for this socket
*/
- std::string Buffer;
+ std::deque<std::string> outbuffer;
/**
* The IP address being connected
/** Flushes the write buffer
*/
- void FlushWriteBuffer();
+ bool FlushWriteBuffer();
+
+ void SetQueues(int nfd);
public:
* @param listening true to listen on the given host:port pair, or false to connect to them
* @param maxtime Number of seconds to wait, if connecting, before the connection times out and an OnTimeout() event is generated
*/
- InspSocket(std::string host, int port, bool listening, unsigned long maxtime);
+ InspSocket(const std::string &host, int port, bool listening, unsigned long maxtime);
/**
* This method is called when an outbound
* returns or linefeeds are appended to the string.
* @param data The data to send
*/
- virtual int Write(std::string data);
+ virtual int Write(const std::string &data);
/**
* If your socket is a listening socket, when a new