internal async Task SendPacketAsync(AbstractPacket packet)
        {
            DataWriter writer;

            using (writer = new DataWriter(socket.OutputStream))
            {
                writer.ByteOrder = ByteOrder.BigEndian;

                HeapByteBuf dataBuf = new HeapByteBuf(16, 4096);
                packet.WriteTo(dataBuf);

                writer.WriteUInt16(packet.Id);
                writer.WriteUInt16((ushort)dataBuf.WriterIndex);
                writer.WriteBytes(dataBuf.GetBackingArray());

                try
                {
                    await writer.StoreAsync();
                }
                catch (Exception exception)
                {}

                await writer.FlushAsync();

                writer.DetachStream();
            }
        }
        internal void ParsePacket(HeapByteBuf body, ushort packetId)
        {
            AbstractPacket packet = PacketRegistry.CreateInstance(packetId);

            packet.ReadFrom(body);
            this.HandlePacket(packet);
        }
Beispiel #3
0
 public static Boolean TryGetIpAndUdpPackets(Frame frame, out AbstractPacket ipPacket, out UdpPacket udpPacket)
 {
     ipPacket  = null;
     udpPacket = null;
     foreach (var p in frame.PacketList)
     {
         if (p.GetType() == typeof(RawPacket))
         {
             return(false);
         }
         if (p.GetType() == typeof(TcpPacket))
         {
             return(false);
         }
         if (p.GetType() == typeof(IPv4Packet))
         {
             ipPacket = p;
         }
         else if (p.GetType() == typeof(IPv6Packet))
         {
             ipPacket = p;
         }
         else if (p.GetType() == typeof(UdpPacket))
         {
             udpPacket = (UdpPacket)p;
             //there is no point in enumarating further than the UDP packet
             if (ipPacket != null)
             {
                 return(true);
             }
             return(false);
         }
     }
     return(false);
 }
Beispiel #4
0
        /// <summary>
        /// This listener is called when GSM error occures and activation status is read.
        /// for reactive numbers after error, the start index must be set as equal as last working index +1 (to skipp error number)
        /// </summary>
        /// <param name="packet"></param>
        public void onReadActivate(ActivationPacket packet)
        {
            try
            {
                resetTimer();


                if (packet.WorkingIndex + 1 <= packet.Finish)
                {
                    Logger.Show(string.Format("Re-Active numbers => Last index: {0} , Current Index: {1}", packet.WorkingIndex, packet.WorkingIndex + 1), ConsoleColor.Green);


                    byte[]         byteToSend   = null;
                    AbstractPacket packetToSend = null;

                    packetToSend = new ActivationPacket(sim_number, packet.WorkingIndex + 1, finish);
                    byteToSend   = packetToSend.toRaw();
                    networkManager.Send(byteToSend);
                }
                else
                {
                    finishWorks();
                }
            }
            catch (Exception e)
            {
                Logger.ShowError(e.Message);
            }
        }
 internal void HandlePacket(AbstractPacket packet)
 {
     if (packet is PacketPlayerLogin)
     {
         PacketPlayerLogin p = (PacketPlayerLogin)packet;
         //p.Username
     }
 }
        internal void ParsePacket(HeapByteBuf body)
        {
            ushort         type   = this.ParsingPacketId;
            AbstractPacket packet = PacketRegistry.CreateInstance(type);

            packet.ReadFrom(body);
            this.HandlePacket(packet);
        }
Beispiel #7
0
 private void button1_Click(object sender, EventArgs e)
 {
     try
     {
         using (var p = new PacketReader(AbstractPacket.StringToByteArray(richTextBox1.Text)))
             richTextBox2.Text = ReadPacket(p);
     }
     catch (Exception ex)
     {
         richTextBox2.Text = ex.Message;
     }
 }
Beispiel #8
0
        /// <summary>
        /// Itterate on gridview numbers based on registeration answer of modem and register new number
        /// After all numbers are registered, activation of numbers will be done
        /// </summary>
        /// <param name="registeredPacket">Registerd packet (answer of modem)</param>
        public void onWriteNumberRegister(RegisterationPacket registeredPacket)
        {
            try
            {
                resetTimer();

                int            cIndex       = registeredPacket.Index + 1;
                byte[]         byteToSend   = null;
                AbstractPacket packetToSend = null;
                if (cIndex < queueItems.Count)
                {
                    using (SMSPortalDBEntities db = new SMSPortalDBEntities())
                    {
                        Guid qp_id = queueItems[cIndex].queue_phone.TFId;

                        string number = (from x in db.Queue_Phone
                                         where x.TFId == qp_id
                                         select x.Phone.TFNumber).FirstOrDefault();
                        packetToSend = new RegisterationPacket(sim_number, number, cIndex);
                        Logger.Show(packetToSend.ToString(), ConsoleColor.White);
                        byteToSend = packetToSend.toRaw();
                        networkManager.Send(byteToSend);
                    }
                }
                else
                {
                    Logger.Show("All numbers are registered", ConsoleColor.White);

                    packetToSend = new ActivationPacket(sim_number, start, finish);
                    byteToSend   = packetToSend.toRaw();
                    networkManager.Send(byteToSend);
                }
            }

            catch (Exception e)
            {
                Logger.ShowError(e.Message);
            }
        }
Beispiel #9
0
 /// <summary>
 /// </summary>
 /// <param name="frame"></param>
 /// <param name="ipPacket">IPv4 or IPv6 packet in frame</param>
 /// <param name="tcpPacket">TCP packet in frame</param>
 /// <returns></returns>
 public static Boolean TryGetIpAndTcpPackets(Frame frame, out AbstractPacket ipPacket, out TcpPacket tcpPacket)
 {
     ipPacket = null;
     //sourceIp=System.Net.IPAddress.None;
     //destinationIp=System.Net.IPAddress.None;
     tcpPacket = null;
     foreach (var p in frame.PacketList)
     {
         if (p.GetType() == typeof(RawPacket))
         {
             return(false);
         }
         if (p.GetType() == typeof(UdpPacket))
         {
             return(false);
         }
         if (p.GetType() == typeof(IPv4Packet))
         {
             ipPacket = p;
         }
         else if (p.GetType() == typeof(IPv6Packet))
         {
             ipPacket = p;
         }
         else if (p.GetType() == typeof(TcpPacket))
         {
             tcpPacket = (TcpPacket)p;
             //there is no point in enumarating further than the TCP packet
             if (ipPacket != null)
             {
                 return(true);
             }
             return(false);
         }
     }
     return(false);
 }
Beispiel #10
0
 public static void Send(this AbstractPacket pPacket, Session pSession)
 {
     pSession.SendPacket(pPacket.ToArray());
 }
Beispiel #11
0
 public SentEventArgs(AbstractPacket packet)
 {
     Packet = packet;
 }
Beispiel #12
0
 private void OnReceived(AbstractPacket packet)
 {
     OnReceived(new ReceivedEventArgs(packet));
 }
Beispiel #13
0
 public void Send(AbstractPacket packet)
 {
     Send(new PacketList(packet));
 }
Beispiel #14
0
 private void OnSent(AbstractPacket packet)
 {
     OnSent(new SentEventArgs(packet));
 }
 public AbstractPacketReceivedEventArgs(AbstractPacket packet)
     : base(packet)
 {
 }
Beispiel #16
0
 public ReceivedEventArgs(AbstractPacket packet)
 {
     Packet = packet;
 }