private void EncodeVoltron(IoSession session, object message, IProtocolEncoderOutput output)
        {
            IVoltronPacket    voltronPacket     = (IVoltronPacket)message;
            VoltronPacketType voltronPacketType = voltronPacket.GetPacketType();

            EncodeVoltronStylePackets(session, output, AriesPacketType.Voltron, voltronPacketType.GetPacketCode(), voltronPacket);
        }
Exemple #2
0
        private void ParsePacket()
        {
            /** Can we parse it? **/
            try
            {
                var packet = Packet.Packet;
                if (packet.Type == PacketType.VOLTRON)
                {
                    var voltronClazz = VoltronPackets.GetByPacketCode((ushort)packet.SubType);
                    if (voltronClazz != null)
                    {
                        IVoltronPacket parsed = (IVoltronPacket)Activator.CreateInstance(voltronClazz);
                        //TODO: VoltronContext
                        parsed.Deserialize(IoBuffer.Wrap(GetBytes()), Context);

                        this.ParsedPacket = parsed;
                        this.parsedInspetor.SelectedObject = ParsedPacket;
                    }
                }
                else if (packet.Type == PacketType.ARIES)
                {
                    var ariesClazz = AriesPackets.GetByPacketCode(packet.SubType);
                    if (ariesClazz != null)
                    {
                        IAriesPacket parsed = (IAriesPacket)Activator.CreateInstance(ariesClazz);
                        parsed.Deserialize(IoBuffer.Wrap(GetBytes()), Context);
                        this.ParsedPacket = parsed;
                        this.parsedInspetor.SelectedObject = ParsedPacket;
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
Exemple #3
0
 static VoltronPackets()
 {
     VOLTRON_PACKET_BY_TYPEID = new Dictionary <ushort, Type>();
     foreach (Type packetType in VOLTRON_PACKETS)
     {
         IVoltronPacket packet = (IVoltronPacket)Activator.CreateInstance(packetType);
         VOLTRON_PACKET_BY_TYPEID.Add(packet.GetPacketType().GetPacketCode(), packetType);
     }
 }
Exemple #4
0
        public override void MessageSent(INextFilter nextFilter, IoSession session, IWriteRequest writeRequest)
        {
            IVoltronPacket voltronPacket = writeRequest.OriginalRequest.Message as IVoltronPacket;

            if (voltronPacket != null)
            {
                var voltronBuffer = IoBuffer.Allocate(512);
                voltronBuffer.Order      = ByteOrder.BigEndian;
                voltronBuffer.AutoExpand = true;
                voltronPacket.Serialize(voltronBuffer, Context);
                voltronBuffer.Flip();

                var byteArray = new byte[voltronBuffer.Remaining];
                voltronBuffer.Get(byteArray, 0, voltronBuffer.Remaining);

                PacketLogger.OnPacket(new Packet
                {
                    Data      = byteArray,
                    Type      = PacketType.VOLTRON,
                    SubType   = voltronPacket.GetPacketType().GetPacketCode(),
                    Direction = PacketDirection.OUTPUT
                });
                nextFilter.MessageSent(session, writeRequest);
                return;
            }

            IAriesPacket ariesPacket = writeRequest.OriginalRequest.Message as IAriesPacket;

            if (ariesPacket != null)
            {
                IoBuffer ariesBuffer = IoBuffer.Allocate(128);
                ariesBuffer.AutoExpand = true;
                ariesBuffer.Order      = ByteOrder.LittleEndian;
                ariesPacket.Serialize(ariesBuffer, Context);
                ariesBuffer.Flip();

                var byteArray = new byte[ariesBuffer.Remaining];
                ariesBuffer.Get(byteArray, 0, ariesBuffer.Remaining);

                PacketLogger.OnPacket(new Packet
                {
                    Data      = byteArray,
                    Type      = PacketType.ARIES,
                    SubType   = ariesPacket.GetPacketType().GetPacketCode(),
                    Direction = PacketDirection.OUTPUT
                });
                nextFilter.MessageSent(session, writeRequest);
                return;
            }

            IoBuffer buffer = writeRequest.Message as IoBuffer;

            if (buffer == null)
            {
                nextFilter.MessageSent(session, writeRequest);
                return;
            }

            TryParseAriesFrame(buffer, PacketDirection.OUTPUT);
            nextFilter.MessageSent(session, writeRequest);
        }