Пример #1
0
        protected void FireUserPacket(Packet pkt, System.Net.IPEndPoint ep)
        {
            if (this.GotUserPacket != null)
            {
                PacketEventArgs e = new PacketEventArgs(pkt, ep);
                this.GotUserPacket(this, e);
            }
            UserPacket upkt = (UserPacket)pkt;
            RadioID    to   = upkt.Destination;

            if (activeCalls.ContainsKey(to))
            {
                //Console.WriteLine("Appending to active call...");
                activeCalls[to].AppendPkt(upkt);
            }
            else
            {
                //Console.WriteLine("Creating new call...");
                if (upkt.PacketType == PacketType.GroupDataCall || upkt.PacketType == PacketType.PrivateDataCall)
                {
                    activeCalls[to] = new DataCall(upkt);
                }
                else
                {
                    activeCalls[to] = new AudioCall(upkt);
                }
            }
            if (activeCalls[to].IsEnded)
            {
                this.GotUserCall?.Invoke(this, new CallEventArgs(activeCalls[to]));
                activeCalls.Remove(to);
            }
        }
Пример #2
0
        private void RestClient_GotUserPacket(object sender, PacketEventArgs e)
        {
            if (e.packet.ID.Equals(this.myID))
            {
                //Ignore my own packets...
                return;
            }
            UserPacket upkt = (UserPacket)e.packet;
            RadioID    to   = upkt.Destination;

            if (activeCalls.ContainsKey(to))
            {
                //Console.WriteLine("Appending to active call...");
                activeCalls[to].AppendPkt(upkt);
            }
            else
            {
                //Console.WriteLine("Creating new call...");
                if (upkt.PacketType == PacketType.GroupDataCall || upkt.PacketType == PacketType.PrivateDataCall)
                {
                    activeCalls[to] = new DataCall(upkt);
                }
                else
                {
                    activeCalls[to] = new AudioCall(upkt);
                }
            }
            if (activeCalls[to].IsEnded)
            {
                this.GotRestCall?.Invoke(this, new CallEventArgs(activeCalls[to]));
                activeCalls.Remove(to);
            }
        }