public static bool SetPeerRespondingState(this IPeerRepository repository, PeerId peerId, bool isResponding, DateTime timestampUtc)
        {
            var peer = repository.Get(peerId);
            if (peer == null || peer.TimestampUtc > timestampUtc)
                return false;

            peer.Peer.IsResponding = isResponding;
            peer.TimestampUtc = timestampUtc;
            repository.AddOrUpdatePeer(peer);

            return true;
        }
        public static PeerDescriptor UpdatePeerSubscriptions(this IPeerRepository repository, PeerId peerId, Subscription[] subscriptions, DateTime? timestampUtc)
        {
            var peerDescriptor = repository.Get(peerId);
            if (peerDescriptor == null)
                throw new InvalidOperationException(string.Format("The specified Peer ({0}) does not exist.", peerId));

            if (peerDescriptor.TimestampUtc > timestampUtc)
                return null;

            peerDescriptor.TimestampUtc = timestampUtc;
            peerDescriptor.Subscriptions = subscriptions;
            repository.AddOrUpdatePeer(peerDescriptor);

            return peerDescriptor;
        }