Example #1
0
 internal void HandleRequestNoResponse(IResonanceTransporter transporter, ResonanceMessage <CalculateRequest> message)
 {
     transporter.SendResponse(new CalculateResponse()
     {
         Sum = message.Object.A + message.Object.B
     }, message.Token);
 }
Example #2
0
 protected async override void OnMessageReceived(ResonanceMessage message)
 {
     if (InSession)
     {
         await RemoteClient?.SendAsync(message);
     }
 }
Example #3
0
 protected async override void OnResponseReceived(ResonanceMessage response)
 {
     if (InSession)
     {
         await RemoteClient?.SendResponseAsync(response);
     }
 }
Example #4
0
 protected async override void OnRequestReceived(ResonanceMessage request)
 {
     if (InSession)
     {
         await RemoteClient?.SendRequestAsync(request);
     }
 }
Example #5
0
 private async void OnJoinSessionRequest(IResonanceTransporter transporter, ResonanceMessage <JoinSessionRequest> request)
 {
     if (await ShowQuestionMessage($"Client {request.Object.ClientID} wants to create a session. Confirm?"))
     {
         InSession      = true;
         SelectedClient = request.Object.ClientID;
         await transporter.SendResponseAsync(new JoinSessionResponse(), request.Token);
     }
     else
     {
         await transporter.SendErrorResponseAsync("No thanks.", request.Token);
     }
 }
Example #6
0
        private void OnNotifyAvailableClientsRequest(IResonanceTransporter transporter, ResonanceMessage <NotifyAvailableClientsRequest> request)
        {
            InvokeUI(() =>
            {
                ConnectedClients.Clear();

                foreach (var client in request.Object.Clients)
                {
                    ConnectedClients.Add(client);
                }
            });
        }
Example #7
0
 private void OnLeaveSessionRequest(IResonanceTransporter transporter, ResonanceMessage <LeaveSessionRequest> request)
 {
     Logger.LogWarning($"Session lost: {request.Object.Reason}");
     InSession = false;
 }
Example #8
0
 private void CalculateRequest_Standard_Handler(IResonanceTransporter transporter, ResonanceMessage <CalculateRequest> request)
 {
     transporter.SendResponseAsync(new CalculateResponse()
     {
         Sum = request.Object.A + request.Object.B
     }, request.Token);
 }
Example #9
0
            internal async Task HandleRequestAsyncNoResponse(IResonanceTransporter transporter, ResonanceMessage <CalculateRequest> message)
            {
                await Task.Delay(100);

                transporter.SendResponse(new CalculateResponse()
                {
                    Sum = message.Object.A + message.Object.B
                }, message.Token);
            }
Example #10
0
 internal Task HandleMessageAsyncWithTransporter(IResonanceTransporter transporter, ResonanceMessage <CalculateRequest> message)
 {
     _receivedRequest     = message.Object;
     _receivedTransporter = transporter;
     return(Task.FromResult(true));
 }
Example #11
0
 internal Task HandleMessageAsyncNoTransporter(ResonanceMessage <CalculateRequest> message)
 {
     _receivedRequest = message.Object;
     return(Task.FromResult(true));
 }
Example #12
0
 internal void HandleMessageWithTransporter(IResonanceTransporter transporter, ResonanceMessage <CalculateRequest> message)
 {
     _receivedRequest     = message.Object;
     _receivedTransporter = transporter;
 }
Example #13
0
 internal void HandleMessageNoTransporter(ResonanceMessage <CalculateRequest> message)
 {
     _receivedRequest = message.Object;
 }
Example #14
0
        /// <summary>
        /// Handles clients "leave session" request.
        /// </summary>
        /// <param name="transporter">The transporter.</param>
        /// <param name="request">The request.</param>
        private async void OnClientLeaveSessionRequest(IResonanceTransporter transporter, ResonanceMessage <LeaveSessionRequest> request)
        {
            ResonanceTcpClient client = transporter as ResonanceTcpClient;

            if (client.InSession)
            {
                Logger.LogWarning($"Client {client.ClientID} has closed the session.");
                client.InSession = false;
                client.RemoteClient.InSession = false;

                await client.RemoteClient.SendAsync(new LeaveSessionRequest()
                {
                    Reason = $"{client.RemoteClient.ClientID} has left the session"
                });

                client.RemoteClient.RemoteClient = null;
                client.RemoteClient = null;

                UpdateClientsList();
            }
        }
Example #15
0
 /// <summary>
 /// Initializes the adapter from an existing offer request.
 /// The adapter role with be <see cref="WebRTCAdapterRole.Accept"/> and response will be sent upon connection.
 /// </summary>
 /// <param name="request">The offer request.</param>
 /// <returns></returns>
 public WebRTCIceServersBuilder WithOfferRequest(ResonanceMessage <WebRTCOfferRequest> request)
 {
     return(WithOfferRequest(request.Object, request.Token));
 }