コード例 #1
0
ファイル: TypedHyperSocket.cs プロジェクト: riax/Clr
        internal IAnswerable <TReply> Answer <TValue, TReply>(TValue value, AbstractAnswerable answerable, LetterOptions options)
        {
            ILetter letter      = CreateLetter(value, options, answerable.ConversationId);
            var     outstanding = new BlockingOutstanding <TReply>(this);

            _outstandings.Add(answerable.ConversationId, outstanding);

            _socket.SendTo(letter, answerable.RemoteNodeId);

            try {
                outstanding.Wait();
            } finally {
                _outstandings.Remove(answerable.ConversationId);
            }

            return(outstanding.Result);
        }
コード例 #2
0
ファイル: TypedHyperSocket.cs プロジェクト: riax/Clr
        public IAnswerable <TReply> Send <TRequest, TReply>(TRequest value, LetterOptions options = LetterOptions.None)
        {
            Guid    conversationId = Guid.NewGuid();
            ILetter letter         = CreateLetter(value, options, conversationId);
            var     outstanding    = new BlockingOutstanding <TReply>(this);

            _outstandings.Add(conversationId, outstanding);
            _socket.Send(letter);

            try {
                outstanding.Wait();
            } finally {
                _outstandings.Remove(conversationId);
            }

            return(outstanding.Result);
        }