/**
* States which a socket may be in
*/
-enum InspSocketState { I_DISCONNECTED, I_RESOLVING, I_CONNECTING, I_CONNECTED, I_LISTENING, I_ERROR };
+enum InspSocketState { I_DISCONNECTED, I_CONNECTING, I_CONNECTED, I_LISTENING, I_ERROR };
/**
* Error types which a socket may exhibit
*/
enum InspSocketError { I_ERR_TIMEOUT, I_ERR_SOCKET, I_ERR_CONNECT, I_ERR_BIND, I_ERR_RESOLVE, I_ERR_WRITE };
+class InspSocket;
+
/**
* InspSocket is an extendable socket class which modules
* can use for TCP socket support. It is fully integrated
*/
class InspSocket : public Extensible
{
-protected:
+ public:
std::deque<std::string> outbuffer;
*/
int fd;
- /**
- * The resolver for this socket
- */
- DNS dns;
-
/**
* The hostname connected to
*/
bool BindAddr();
-public:
-
/**
* The default constructor does nothing
* and should not be used.
/**
* This constructor is used to create a new
* socket, either listening for connections, or an outbound connection to another host.
- * Note that if you specify a hostname in the 'host' parameter, then there will be an extra
- * step involved (a nonblocking DNS lookup) which will cause your connection to be established
- * slower than if it was an IP. Therefore, use an IP address where it is available instead.
- * @param host The hostname to connect to, or bind to
+ * Note that if you specify a hostname in the 'ipaddr' parameter, this class will not
+ * connect. You must resolve your hostnames before passing them to InspSocket. To do so,
+ * you should use the nonblocking class 'Resolver'.
+ * @param ipaddr The IP to connect to, or bind to
* @param port The port number to connect to, or bind to
* @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(const std::string &host, int port, bool listening, unsigned long maxtime);
+ InspSocket(const std::string &ipaddr, int port, bool listening, unsigned long maxtime);
/**
* This method is called when an outbound
*/
virtual ~InspSocket();
- /**
- * This method attempts to resolve the hostname,
- * if a hostname is given and not an IP,
- * before a connection can occur. This method is
- * asyncronous.
- */
- virtual bool DoResolve();
-
/**
* This method attempts to connect to a hostname.
* This only occurs on a non-listening socket. This