Ejemplo n.º 1
0
        private Task <Message> PutAsync(PeerAddress remotePeer, PutBuilder putBuilder, Message.MessageType type,
                                        Rpc.Commands command, ChannelCreator channelCreator)
        {
            Utils.NullCheck(remotePeer);

            DataMap dataMap;

            if (putBuilder.DataMap != null)
            {
                dataMap = new DataMap(putBuilder.DataMap);
            }
            else
            {
                dataMap = new DataMap(putBuilder.LocationKey, putBuilder.DomainKey, putBuilder.VersionKey,
                                      putBuilder.DataMapConvert);
            }

            var message = CreateRequestMessage(remotePeer, command.GetNr(), type);

            if (putBuilder.IsSign)
            {
                message.SetPublicKeyAndSign(putBuilder.KeyPair);
            }

            message.SetDataMap(dataMap);

            var tcsResponse    = new TaskCompletionSource <Message>(message);
            var requestHandler = new RequestHandler(tcsResponse, PeerBean, ConnectionBean, putBuilder);

            if (!putBuilder.IsForceUdp)
            {
                return(requestHandler.SendTcpAsync(channelCreator));
            }
            return(requestHandler.SendUdpAsync(channelCreator));
        }
Ejemplo n.º 2
0
        public Task <Message> GetLatestAsync(PeerAddress remotePeer, GetBuilder getBuilder, ChannelCreator channelCreator,
                                             Rpc.Commands command)
        {
            var message = CreateRequestMessage(remotePeer, command.GetNr(), Message.MessageType.Request1);

            if (getBuilder.IsSign)
            {
                message.SetPublicKeyAndSign(getBuilder.KeyPair);
            }
            message.SetKey(getBuilder.LocationKey);
            message.SetKey(getBuilder.DomainKey);
            message.SetKey(getBuilder.ContentKey);

            var tcsResponse    = new TaskCompletionSource <Message>(message);
            var requestHandler = new RequestHandler(tcsResponse, PeerBean, ConnectionBean, getBuilder);

            if (!getBuilder.IsForceUdp)
            {
                return(requestHandler.SendTcpAsync(channelCreator));
            }
            return(requestHandler.SendUdpAsync(channelCreator));
        }