#ifndef __PROTOCOL_H__
#define __PROTOCOL_H__
+#include "hashcomp.h"
+
class InspIRCd;
+class User;
typedef std::deque<std::string> parameterlist;
+class ProtoServer
+{
+ public:
+ std::string servername;
+ std::string parentname;
+ std::string gecos;
+ unsigned int usercount;
+ unsigned int opercount;
+ unsigned int latencyms;
+};
+
+typedef std::list<ProtoServer> ProtoServerList;
+
class ProtocolInterface : public Extensible
{
protected:
virtual ~ProtocolInterface() { }
virtual void SendEncapsulatedData(parameterlist &encap) { }
+
virtual void SendMetaData(void* target, int type, const std::string &key, const std::string &data) { }
+
virtual void SendTopic(Channel* channel, std::string &topic) { }
+
virtual void SendMode(const std::string &target, parameterlist &modedata) { }
- virtual void SendOperNotice(const std::string &text) { }
+
+ virtual void SendModeStr(const std::string &target, const std::string &modeline)
+ {
+ /* Convenience function */
+ irc::spacesepstream x(modeline);
+ parameterlist n;
+ std::string v;
+ while (x.GetToken(v))
+ n.push_back(v);
+ SendMode(target, n);
+ }
+
virtual void SendModeNotice(const std::string &modes, const std::string &text) { }
+
virtual void SendSNONotice(const std::string &snomask, const std::string &text) { }
+
virtual void PushToClient(User* target, const std::string &rawline) { }
+
+ virtual void SendChannelPrivmsg(Channel* target, char status, const std::string &text) { }
+
+ virtual void SendChannelNotice(Channel* target, char status, const std::string &text) { }
+
+ virtual void SendUserPrivmsg(User* target, const std::string &text) { }
+
+ virtual void SendUserNotice(User* target, const std::string &text) { }
+
+ virtual void GetServerList(ProtoServerList &sl) { }
+
+ virtual void Introduce(User* u) { }
};
#endif