*/
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
* @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;
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;
* @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
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;
}
/** 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