Example #1
0
        public void Run()
        {
            ChannelReceiver receiver = new ChannelReceiver(this.contextParameters, this.channelBinding);
            ChannelSender sender = new ChannelSender(this.contextParameters, this.channelBinding);

            sender.Run(SendToUri);
            receiver.Run(ListenUri);

            // Validate results.
            bool comparisonOutcome = Util.CompareResults(this.expectedResults, receiver.Results);
            Assert.AreEqual(true, comparisonOutcome, "The actual results were not as expected");
            Assert.AreEqual(0, Util.GetMessageCountFromQueue(ListenUri), "The actual message count wasn't as expected.");
        }
        private void ReceiveCallback(IAsyncResult ar)
        {
            // end the receive
            Socket sock = (Socket)ar.AsyncState;

            try {
                SocketFlags         sf = SocketFlags.None;
                IPPacketInformation packetInfo;
                int bytes = sock.EndReceiveMessageFrom(ar, ref sf, ref receiveEndpoint, out packetInfo);

                lock (lockobj) {
                    IPEndPoint ep = receiveEndpoint as IPEndPoint;
                    if (ep != null)
                    {
                        ChannelSender sender = null;
                        for (int i = 0; i < senders.Count; i++)
                        {
                            if (senders[i].Endpoint.Equals(ep))
                            {
                                sender = senders[i];
                                break;
                            }
                        }

                        if (sender == null)
                        {
                            sender = new ChannelSender(ep);
                            senders.Add(sender);
                        }

                        // parse out the version, serialization type, sequence number
                        int seqNumber = int.MinValue;
                        switch (channelType)
                        {
                        case ChannelType.UDPChannel:
                            ParseUDPChannelPacket(buf, bytes, ref seqNumber);
                            break;
                        }
                        sender.OnPacketReceived(seqNumber);

                        packetCount++;
                        byteCount += bytes;
                    }
                }

                receiveEndpoint = new IPEndPoint(IPAddress.Any, 0);
                sock.BeginReceiveMessageFrom(buf, 0, buf.Length, SocketFlags.None, ref receiveEndpoint, ReceiveCallback, sock);
            }
            catch (Exception) {
            }
        }
        private void ReceiveCallback(IAsyncResult ar)
        {
            // end the receive
            Socket sock = (Socket)ar.AsyncState;
            try {
                SocketFlags sf = SocketFlags.None;
                IPPacketInformation packetInfo;
                int bytes = sock.EndReceiveMessageFrom(ar, ref sf, ref receiveEndpoint, out packetInfo);

                lock (lockobj) {
                    IPEndPoint ep = receiveEndpoint as IPEndPoint;
                    if (ep != null) {
                        ChannelSender sender = null;
                        for (int i = 0; i < senders.Count; i++) {
                            if (senders[i].Endpoint.Equals(ep)) {
                                sender = senders[i];
                                break;
                            }
                        }

                        if (sender == null) {
                            sender = new ChannelSender(ep);
                            senders.Add(sender);
                        }

                        // parse out the version, serialization type, sequence number
                        int seqNumber = int.MinValue;
                        switch (channelType) {
                            case ChannelType.UDPChannel:
                                ParseUDPChannelPacket(buf, bytes, ref seqNumber);
                                break;
                        }
                        sender.OnPacketReceived(seqNumber);

                        packetCount++;
                        byteCount += bytes;
                    }
                }

                receiveEndpoint = new IPEndPoint(IPAddress.Any, 0);
                sock.BeginReceiveMessageFrom(buf, 0, buf.Length, SocketFlags.None, ref receiveEndpoint, ReceiveCallback, sock);
            }
            catch (Exception) {
            }
        }