コード例 #1
0
        public void ProducerConsumerSampleTest()
        {
            var messageResolverBuilder = new MessageHandlerResolverBuilder();
            var eventHandle            = new CountdownEvent(5);

            messageResolverBuilder.AddHandler(typeof(SessionRequestMessage), new SessionRequestMessageHandler(
                                                  (message, token) =>
            {
                eventHandle.Signal();
                return(Task.CompletedTask);
            }));
            var cancellationTokenSource = new CancellationTokenSource();

            using (var producerConsumerQueue =
                       new ProducerConsumerQueue(messageResolverBuilder.Build(), cancellationTokenSource.Token))
            {
                var sessionRequestMessage = new SessionRequestMessage(
                    "123",
                    new HandShakeRequest("1", "1"),
                    new VaspInformation("1", "1", "1", null, null, null, null, ""));

                producerConsumerQueue.Enqueue(sessionRequestMessage);
                producerConsumerQueue.Enqueue(sessionRequestMessage);
                producerConsumerQueue.Enqueue(sessionRequestMessage);
                producerConsumerQueue.Enqueue(sessionRequestMessage);
                producerConsumerQueue.Enqueue(sessionRequestMessage);

                eventHandle.Wait(1_000);
            }
        }
コード例 #2
0
 public VaspSession(
     VaspContractInfo vaspContractInfo,
     VaspInformation vaspInfo,
     string counterPartyPubSigningKey,
     string sharedEncryptionKey,
     string privateSigningKey,
     IWhisperRpc whisperRpc,
     ITransportClient transportClient,
     ISignService signService)
 {
     this._vaspInfo                      = vaspInfo;
     this._vaspContractInfo              = vaspContractInfo;
     this._sessionTopic                  = TopicGenerator.GenerateSessionTopic();
     this._cancellationTokenSource       = new CancellationTokenSource();
     this._whisperRpc                    = whisperRpc;
     this._sharedKey                     = sharedEncryptionKey;
     this._privateSigningKey             = privateSigningKey;
     this._counterPartyPubSigningKey     = counterPartyPubSigningKey;
     this._messageHandlerResolverBuilder = new MessageHandlerResolverBuilder();
     this._transportClient               = transportClient;
     this._signService                   = signService;
 }