예제 #1
0
        protected override void Receive(SignallingMessage message)
        {
            _callingPartyCallController.ReceiveMessage(message);

            if (message.Operation == OperationType.CallRequestResponse &&
                message.DestinationControlPlaneElement == ControlPlaneElementType.CPCC)
            {
                var snps = message.Payload as SubnetworkPoint;
                if (snps != null)
                {
                    AddClient(new ClientTableRow(message.SourceClientName, 1, snps.Vpi, snps.Vci));
                    OnUpdateState(snps.ToString());
                }
                else
                {
                    OnUpdateState("Connection request rejected");
                    ClientTableRowAdded(null);
                }
            }
            else if (message.Operation == OperationType.CallAccept)
            {
                var result = MessageBox.Show("Connection incoming from " + ((string[])message.Payload)[0], "Connection", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
                if (result == DialogResult.No)
                {
                    callConfirmation = false;
                }
                else if (result == DialogResult.Yes)
                {
                    callConfirmation = true;
                }

                _callingPartyCallController.SendCallAccept(message, callConfirmation);
            }
        }
예제 #2
0
        private void NetworkNodeAgentOnConfigurationReceived(object sender, Link link)
        {
            var configurationMessage = new SignallingMessage {
                Payload                        = link,
                Operation                      = OperationType.Configuration,
                DestinationAddress             = NetworkAddress,
                DestinationControlPlaneElement = ControlPlaneElementType.LRM
            };

            Receive(configurationMessage);
        }
예제 #3
0
        private async void Peer_LocalSdpReadytoSendAsync(string type, string sdp)
        {
            var msg = new SignallingMessage
            {
                MessageType      = SignallingMessage.WireMessageTypeFromString(type),
                Data             = sdp,
                IceDataSeparator = "|"
            };

            await SendMessageAsync(msg);
        }
예제 #4
0
        private async void Peer_IceCandidateReadytoSend(
            string candidate, int sdpMlineindex, string sdpMid)
        {
            var msg = new SignallingMessage
            {
                MessageType      = SignallingMessage.WireMessageType.Ice,
                Data             = $"{candidate}|{sdpMlineindex}|{sdpMid}",
                IceDataSeparator = "|"
            };

            await SendMessageAsync(msg);
        }
 private void PassMessage(object sender, SignallingMessage message)
 {
     try {
         var destination =
             _controlPlaneElements[new Row(message.DestinationAddress, message.DestinationControlPlaneElement)];
         //Thread.Sleep(10);
         destination.ReceiveMessage(message);
     }
     catch (KeyNotFoundException) {
         Console.WriteLine($"[ADDRESS_NOT_FOUND] {message.DestinationAddress}.{message.DestinationControlPlaneElement}");
     }
 }
예제 #6
0
        protected override void Receive(SignallingMessage signallingMessage)
        {
            switch (signallingMessage.DestinationControlPlaneElement)
            {
            case ControlPlaneElementType.CC:
                _connectionController.ReceiveMessage(signallingMessage);
                break;

            case ControlPlaneElementType.LRM:
                _linkResourceManager.ReceiveMessage(signallingMessage);
                break;
            }
        }
        public void StreamSerializeSignallingMessageTest()
        {
            var tcpListener = new TcpListener(IPAddress.Loopback, 10000);

            tcpListener.Start();
            var acceptTask = AcceptTask(tcpListener);

            var client1 = new TcpClient();

            client1.Connect(IPAddress.Loopback, 10000);
            var client2 = acceptTask.Result;


            var expected = new SignallingMessage();


            BinarySerializer.SerializeToStream(expected, client1.GetStream());
            var actual = (SignallingMessage)BinarySerializer.DeserializeFromStream(client2.GetStream());

            ;

            Assert.AreEqual(expected.SessionId, actual.SessionId);
        }
예제 #8
0
 private async Task SendMessageAsync(SignallingMessage message)
 {
     await _hubConnection.InvokeAsync("SendMessage", SignallerConstants.RoomName, JsonConvert.SerializeObject(message));
 }
예제 #9
0
 protected void Send(SignallingMessage signallingMessage)
 {
     _controlPlaneConnectionComponent.Send(signallingMessage);
 }
예제 #10
0
 protected abstract void Receive(SignallingMessage signallingMessage);