#define STATE_NOAUTH_OUTBOUND 4
#define STATE_SERVICES 5
+std::string CreateSum();
+
/** Each connection has one or more of these
* each represents ONE outbound connection to another ircd
* so each inbound has multiple outbounds. A listening socket
/** State. STATE_NOAUTH_INBOUND, STATE_NOAUTH_OUTBOUND
* STATE_SYNC, STATE_DISCONNECTED, STATE_CONNECTED
*/
- int state;
+ char state;
/** PRIVATE function to set the host address and port to connect to
*/
bool SetHostAddress(char* host, int port);
+ /** This string holds the ircd's version response
+ */
+ std::string version;
public:
- /** IRCD Buffer for input characters, holds one line
+ /** IRCD Buffer for input characters, holds as many lines as are
+ * pending - Note that the final line may not be complete and should
+ * only be read when there is a \n seperator.
*/
std::string ircdbuffer;
*/
void CloseConnection();
+ /** This method adds text to the ircd connection's buffer
+ * There is no limitation on how much text of what line width may
+ * be added to this buffer. It is the sending server's responsibility
+ * to ensure sent data is kept within reasonable quanities.
+ */
void AddBuffer(std::string a);
+
+ /** This method returns true if the buffer contains at least one
+ * carriage return character, e.g. one line can be read from the
+ * buffer successfully.
+ */
bool BufferIsComplete();
+
+ /** This method clears the server's buffer by setting it to an empty string.
+ */
void ClearBuffer();
+
+ /** This method retrieves the first string from the tail end of the
+ * buffer and advances the tail end of the buffer past the returned
+ * string, in a similar manner to strtok().
+ */
std::string GetBuffer();
+
+ /** This method sets the version string of the remote server
+ */
+ void SetVersionString(std::string newversion);
+
+ /** This method returns the version string of the remote server.
+ * If the server has no version string an empty string is returned.
+ */
+ std::string GetVersionString();
};
/** Hostname of connection. Not used if this is a serverrec
*/
- char host[256];
-
- /** IP of connection. Reserved for future use.
- */
- char ip[32];
+ char host[160];
- /** Inbuf of connection. Only used for userrec
+ /** IP of connection.
*/
- char inbuf[MAXBUF];
+ char ip[16];
/** Stats counter for bytes inbound
*/
/** Used by userrec to indicate the registration status of the connection
*/
- int registered;
-
- /** Reserved for future use
- */
- short int state;
+ char registered;
/** Time the connection was last pinged
*/
*/
time_t nping;
- /** Unused, will be removed in a future alpha/beta
- */
- char internal_addr[MAXBUF];
-
- /** Unused, will be removed in a future alpha/beta
- */
- int internal_port;
-
/** With a serverrec, this is a list of all established server connections.
* With a userrec this is unused.
*/
* If no data is available this function returns false.
* This function will automatically close broken links and reroute pathways, generating split messages on the network.
*/
- bool RecvPacket(std::deque<std::string> &messages, char* host);
+ bool RecvPacket(std::deque<std::string> &messages, char* host, std::deque<std::string> &sums);
/** Find the ircd_connector oject related to a certain servername given in 'host'
*/
*/
bool AddIncoming(int fd,char* targethost, int sourceport);
- /** This function is deprecated and may be removed in a later alpha/beta
- */
- long GenKey();
};
#endif
-