]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/users.h
Add some overloads of IRCv3::Replies::Reply#Send.
[user/henk/code/inspircd.git] / include / users.h
index dc7da40fe2a7e2adb817fcba8894f4b185ffa3d7..6cc7f423b73734caea5213f101d5b1ac88146d87 100644 (file)
@@ -676,6 +676,12 @@ class CoreExport User : public Extensible
         */
        virtual ~User();
        CullResult cull() CXX11_OVERRIDE;
+
+       /** @copydoc Serializable::Deserialize. */
+       bool Deserialize(Data& data) CXX11_OVERRIDE;
+
+       /** @copydoc Serializable::Deserialize. */
+       bool Serialize(Serializable::Data& data) CXX11_OVERRIDE;
 };
 
 class CoreExport UserIOHandler : public StreamSocket
@@ -700,6 +706,11 @@ class CoreExport UserIOHandler : public StreamSocket
         * @param data The data to add to the write buffer
         */
        void AddWriteBuf(const std::string &data);
+
+       /** Swaps the internals of this UserIOHandler with another one.
+        * @param other A UserIOHandler to swap internals with.
+        */
+       void SwapInternals(UserIOHandler& other);
 };
 
 typedef unsigned int already_sent_t;
@@ -724,6 +735,8 @@ class CoreExport LocalUser : public User, public insp::intrusive_list_node<Local
 
  public:
        LocalUser(int fd, irc::sockets::sockaddrs* client, irc::sockets::sockaddrs* server);
+       LocalUser(int fd, const std::string& uuid, Serializable::Data& data);
+
        CullResult cull() CXX11_OVERRIDE;
 
        UserIOHandler eh;
@@ -867,6 +880,12 @@ class CoreExport LocalUser : public User, public insp::intrusive_list_node<Local
         * @param msg Message to send.
         */
        void Send(ClientProtocol::EventProvider& protoevprov, ClientProtocol::Message& msg);
+
+       /** @copydoc Serializable::Deserialize. */
+       bool Deserialize(Data& data) CXX11_OVERRIDE;
+
+       /** @copydoc Serializable::Deserialize. */
+       bool Serialize(Serializable::Data& data) CXX11_OVERRIDE;
 };
 
 class RemoteUser : public User
@@ -880,13 +899,14 @@ class RemoteUser : public User
 class CoreExport FakeUser : public User
 {
  public:
-       FakeUser(const std::string& uid, Server* srv) : User(uid, srv, USERTYPE_SERVER)
+       FakeUser(const std::string& uid, Server* srv)
+               : User(uid, srv, USERTYPE_SERVER)
        {
                nick = srv->GetName();
        }
 
        FakeUser(const std::string& uid, const std::string& sname, const std::string& sdesc)
-               : User(uid, new Server(sname, sdesc), USERTYPE_SERVER)
+               : User(uid, new Server(uid, sname, sdesc), USERTYPE_SERVER)
        {
                nick = sname;
        }
@@ -900,17 +920,17 @@ class CoreExport FakeUser : public User
 /** Is a local user */
 inline LocalUser* IS_LOCAL(User* u)
 {
-       return u->usertype == USERTYPE_LOCAL ? static_cast<LocalUser*>(u) : NULL;
+       return (u != NULL && u->usertype == USERTYPE_LOCAL) ? static_cast<LocalUser*>(u) : NULL;
 }
 /** Is a remote user */
 inline RemoteUser* IS_REMOTE(User* u)
 {
-       return u->usertype == USERTYPE_REMOTE ? static_cast<RemoteUser*>(u) : NULL;
+       return (u != NULL && u->usertype == USERTYPE_REMOTE) ? static_cast<RemoteUser*>(u) : NULL;
 }
 /** Is a server fakeuser */
 inline FakeUser* IS_SERVER(User* u)
 {
-       return u->usertype == USERTYPE_SERVER ? static_cast<FakeUser*>(u) : NULL;
+       return (u != NULL && u->usertype == USERTYPE_SERVER) ? static_cast<FakeUser*>(u) : NULL;
 }
 
 inline bool User::IsModeSet(const ModeHandler* mh) const