+ _buildDate = buildDate;
+}
+
+QString Peer::clientVersion() const
+{
+ return _clientVersion;
+}
+
+void Peer::setClientVersion(const QString& clientVersion)
+{
+ _clientVersion = clientVersion;
+}
+
+bool Peer::hasFeature(Quassel::Feature feature) const
+{
+ return _features.isEnabled(feature);
+}
+
+Quassel::Features Peer::features() const
+{
+ return _features;
+}
+
+void Peer::setFeatures(Quassel::Features features)
+{
+ _features = std::move(features);
+}
+
+int Peer::id() const
+{
+ return _id;
+}
+
+void Peer::setId(int id)
+{
+ _id = id;
+}
+
+// PeerPtr is used in RPC signatures for enabling receivers to send replies
+// to a particular peer rather than broadcast to all connected ones.
+// To enable this, the SignalProxy transparently replaces the bogus value
+// received over the network with the actual address of the local Peer
+// instance. Because the actual value isn't needed on the wire, it is
+// serialized as null.
+QDataStream& operator<<(QDataStream& out, PeerPtr ptr)
+{
+ Q_UNUSED(ptr);
+ out << static_cast<quint64>(0); // 64 bit for historic reasons
+ return out;
+}
+
+QDataStream& operator>>(QDataStream& in, PeerPtr& ptr)
+{
+ ptr = nullptr;
+ quint64 value;
+ in >> value;
+ return in;