public CreateSourceRoute(PacketParser parser)
 {
     this.parser = parser;
     CommandId = XBeeAPICommandId.CREATE_SOURCE_ROUTE;
     RouteOptions = 0x00;
     FrameId = 0x00;
 }
Пример #2
0
        ///// <summary>
        ///// Reads the SNMP packets send over UDP, over IPv4, over Ethernet
        ///// from capture file, ignoring everything else.
        /////
        ///// All SNMP v2c packets are returned. In case SNMP v1 traps are ignored (NYI)
        ///// </summary>
        ///// <param name="file">The file in pcap-next-generation (.pacapng) format</param>
        ///// <returns></returns>
        //public static IEnumerable<SnmpTrapV2C> ReadPcapNg(string file)
        //{
        //    return PcapNg.ReadForward(file).ParseSnmp();
        //}

        /// <summary>
        /// Parses the ip.
        /// </summary>
        /// <param name="capture">The capture.</param>
        /// <returns>IEnumerable IpPacket</returns>
        public static IEnumerable <IIpPacket> ParseIP(this IEnumerable <Block> capture)
        {
            return(capture.Where(b => b.Type == BlockType.EnhancedPacketBlock)
                   .Cast <EnhancedPacketBlock>()
                   .Where(p => p.InterfaceDescription.LinkType == LinkType.ETHERNET)
                   .Where(p => p.PacketData.ReadNetOrderUShort(0xc) == 0x800)
                   .Select(p => PacketParser.Parse(
                               DateTimeOffset.UtcNow,
                               true,
                               p.PacketData,
                               14,
                               p.PacketData.Length - 14)));
        }
Пример #3
0
		static void HandleInitFactions(PacketParser parser)
		{
			var reps = parser.ParsedPacket.List;

			for (var i = 0; i < reps.Count; i++)
			{
				var rep = reps[i];
				var index = (FactionReputationIndex)i;
				var value = rep["Value"].IntValue;

				InfosById.Add(index, new ReputationInfo(index) { Value = value });
			}
		}
Пример #4
0
 public void Dump(string indent, IndentTextWriter writer)
 {
     writer.WriteLine(indent + PacketParser.TimeStampcreator(TimeStamp) + " Update Packet:");
     writer.IndentLevel++;
     foreach (var block in m_blocks)
     {
         block.Dump(indent, writer);
         block.Dispose();
         //writer.WriteLine(indent + "#########################################");
         //writer.WriteLine();
     }
     writer.IndentLevel--;
 }
Пример #5
0
		static void UpdateReputations(PacketParser parser)
		{
			var reps = parser.ParsedPacket["Factions"].List;

			foreach (var rep in reps)
			{
				var id = (FactionReputationIndex)rep["Faction"].UIntValue;
				var value = rep["Value"].IntValue;
				var info = GetInfo(id);

				info.Value += value;
			}
		}
Пример #6
0
        private void StartListening(string ipAdress, int port)
        {
            SendReceiveOptions optionsToUse = new SendReceiveOptions <NullSerializer>();
            IPEndPoint         iPEndPoint   = new IPEndPoint(IPAddress.Parse(ipAdress), port);

            listener = new TCPConnectionListener(optionsToUse, ApplicationLayerProtocolStatus.Disabled);
            listener.AppendIncomingUnmanagedPacketHandler((header, connection, array) =>
            {
                PacketParser.ParseUnmanagedPacket(array, connection);
            });
            Connection.StartListening(listener, iPEndPoint);
            Console.WriteLine("Started Listening from IP:" + iPEndPoint.Address + " on Port:" + iPEndPoint.Port);
        }
Пример #7
0
        public void WhenEmitWithMultipleArgs_ItShouldSendTheCorrectPacket()
        {
            var expected = new Packet
            {
                Type     = PacketType.Event,
                Name     = "eventName",
                Data     = "[\"a\",\"b\",\"c\",\"d\"]",
                EndPoint = ""
            };

            socket.Emit("eventName", "a", "b", "c", "d");

            A.CallTo(() => fakeWebSocket.Write(PacketParser.EncodePacket(expected))).MustHaveHappened();
        }
Пример #8
0
        public void WhenEmitOnASpecificNamespace_ItShouldSendTheCorrectPacket()
        {
            var expected = new Packet
            {
                Type     = PacketType.Event,
                Name     = "eventName",
                Data     = "[\"data\"]",
                EndPoint = "/ns"
            };

            io.Of("/ns").Emit("eventName", "data");

            A.CallTo(() => fakeWebSocket.Write(PacketParser.EncodePacket(expected))).MustHaveHappened();
        }
Пример #9
0
    public async ValueTask ListenFunctionAsync <TParam, TResult>(Func <TParam, CancellationToken, ValueTask <TResult> > callback, CancellationToken cancellationToken = default)
        where TParam : IRocketMessage <TParam>
        where TResult : IRocketMessage <TResult>
    {
        using var cancellationTokenSource = this.CreateCancellationTokenSource(cancellationToken);
        var connectionCloseWaitTask = this.ConnectionCloseWaitAsync(cancellationTokenSource.Token);

        var param = ParsedPacketMessage <TParam, TError> .CreateUnknown();

        await _connection.Receiver.ReceiveAsync(
            sequence =>
        {
            PacketParser.TryParse(ref sequence, out param, _bytesPool);
        }, cancellationTokenSource.Token);

        if (param.IsCompleted)
        {
            try
            {
                var result = await callback.Invoke(param.Message, cancellationTokenSource.Token);

                await _connection.Sender.SendAsync(
                    bufferWriter =>
                {
                    var builder = new PacketBuilder(bufferWriter, _bytesPool);
                    builder.WriteCompleted(result);
                }, cancellationTokenSource.Token);

                await connectionCloseWaitTask;

                return;
            }
            catch (Exception e)
            {
                var errorMessage = _errorMessageFactory.Create(e);

                await _connection.Sender.SendAsync(
                    bufferWriter =>
                {
                    var builder = new PacketBuilder(bufferWriter, _bytesPool);
                    builder.WriteError(errorMessage);
                }, cancellationToken);

                throw;
            }
        }

        throw ThrowHelper.CreateRocketRemotingProtocolException_UnexpectedProtocol();
    }
Пример #10
0
        private void Startup(Guid identifier, string displayName)
        {
            var parser = new PacketParser(_logger, Encoding.Unicode);

            _easySocket.StartJobs(EasySocket.SocketTasks.Receive);
            _easySocket.OnReceived += (sender, args) =>
            {
                parser.Continue(args);
                _easySocket.GiveBack(args.Buffer);
            };
            parser.OnReceivedJson += OnReceived;
            _logger.LogDebug("Socket set up");
            Send(Packet.PacketTypeC2S.Authorize, new Authorize(identifier, displayName));
            _logger.LogTrace("Authorization request sent");
        }
Пример #11
0
        public void WhenEmitOnTheDefaultNamespace_ItShouldSendTheCorrectPacket()
        {
            var expected = new Packet
            {
                Type     = PacketType.Event,
                Name     = "eventName",
                Data     = "[\"data\"]",
                EndPoint = string.Empty
            };

            io.Of("").Emit("eventName", "data");

            io.Of(null).Emit("eventName", "data");

            A.CallTo(() => fakeWebSocket.Write(PacketParser.EncodePacket(expected))).MustHaveHappened(Repeated.Exactly.Times(2));
        }
Пример #12
0
        public void WhenEmitOnTheClient_ItShouldBeEmittedWithTheDefaultNamespace()
        {
            var expected = new Packet
            {
                Type     = PacketType.Event,
                Name     = "eventName",
                Data     = "[\"data\"]",
                EndPoint = string.Empty
            };

            var expectedData = PacketParser.EncodePacket(expected);

            socket.Emit("eventName", "data");

            A.CallTo(() => fakeWebSocket.Write(expectedData)).MustHaveHappened();
        }
Пример #13
0
        public async Task <bool> SendAsync <T>(T packet) where T : struct
        {
            FieldInfo packetType = packet.GetType().GetField("header");

            if (packetType?.FieldType == typeof(Header))
            {
                byte[] buffer = PacketParser.Serialize(packet);

                return(await SendRawAsync(buffer));
            }
            else
            {
                Debugger.Error("Invalid packet");
                return(false);
            }
        }
Пример #14
0
        static void HandleInitFactions(PacketParser parser)
        {
            var reps = parser.ParsedPacket.List;

            for (var i = 0; i < reps.Count; i++)
            {
                var rep   = reps[i];
                var index = (FactionReputationIndex)i;
                var value = rep["Value"].IntValue;

                InfosById.Add(index, new ReputationInfo(index)
                {
                    Value = value
                });
            }
        }
Пример #15
0
        /// <summary>
        ///     Replaces the socket with the socket of the given user. This should be used to let a reconnecting user continue
        ///     where he left
        /// </summary>
        /// <param name="user"></param>
        /// <param name="socket"></param>
        public void Inherit(IServerUser user, Socket socket)
        {
            var userImpl = user as User;

            if (userImpl == null)
            {
                throw new NotImplementedException(); // assuming there are no other implementations of IServerUser than User
            }
            _socket.Dispose();                       // Dispose disconnected
            userImpl._socket.StopJobs();             // Discontinue wrapper because the events will call the methods of the new (duplicate) user
            SetupSocket(userImpl._socket.Socket);    // Recreate wrapper
            _packetParser = userImpl._packetParser;
            Username      = user.Username;
            FullGameState = user.FullGameState;
            Authorized    = user.Authorized;
        }
Пример #16
0
        internal static void ProcessReceivedData(ClientSocket cs, byte[] data)
        {
            cs.PacketBuffer.Append(data);

            while (cs.PacketBuffer.ReturnDataLength() > 3)
            {
                byte[] retrievedPacket = cs.PacketBuffer.ReturnFullPacket();
                if (retrievedPacket != null)
                {
                    PacketParser.ParsePackets(cs, retrievedPacket);
                }
                else
                {
                    break;
                }
            }
        }
Пример #17
0
        protected override void OnItemParserChanged(ViewerItem item, PacketParser oldParser, PacketParser newParser)
        {
            base.OnItemParserChanged(item, oldParser, newParser);

            if (oldParser == null && newParser != null)
            {
                lock (m_parserItems)
                {
                    if (m_parserItems.Count >= s_maxAllocations)
                    {
                        m_parserItems.Dequeue().Parser = null;
                    }

                    m_parserItems.Enqueue(item);
                }
            }
        }
Пример #18
0
        private void ProcessCallback(object state)
        {
            SerializedInfo request = PacketParser.Parse(_Current.Data);

            if (request != null)
            {
                var sender   = Application.Default.AgentController.GetSender(_Current.ClientId);
                var remoteIp = _Current.RemoteIp;
                request.ClientInfo.Initialize(_Current.ClientId, sender, remoteIp);
                if (request.ClientInfo.Session == Session.InvalidSession)
                {
                    request.ClientInfo.UpdateSession(_Current.ClientId);
                }
                ProcessRequest(request);
            }
            ProcessData();
        }
Пример #19
0
        /// <summary>
        /// Deserializes packet data
        /// </summary>
        public void UpdateFromBytes(byte[] bytes)
        {
            PacketParser parser = new PacketParser(bytes);

            lock (this)
            {
                _scores.Clear();
                int count = parser.GetUInt16();
                for (int i = 0; i < count; i++)
                {
                    string initials = parser.GetString();
                    int    score    = parser.GetInt32();
                    _scores.Add(new HighScore(initials, score));
                }
                _scores = _scores.OrderByDescending(s => s.Score).Take(_maxCount).ToList();
                SaveLocalFile(_localFile, _scores);
            }
        }
Пример #20
0
 private void Inititalize()
 {
     if (isInitialized)
     {
         return;
     }
     sqlClient    = new SqlClient(MainServer.Config.WamsrvInterfaceConfig.DatabaseServerIp, MainServer.Config.WamsrvInterfaceConfig.DatabaseServerPort);
     packetParser = new PacketParser(sqlClient)
     {
         Interactive          = true,
         PacketActionCallback = null,
         ReleaseResources     = true,
         UseBackgroundParsing = true,
         PacketTimeoutMillis  = 10000
     };
     packetParser.BeginParse();
     isInitialized = true;
 }
Пример #21
0
        public AddStatusEffect(byte[] message, int offset)
        {
            int headerLength = 30;

            PacketParser.ParsePacket(message, offset, out Header);

            Items = new AddStatusEffectItem[Header.Count];
            if (headerLength + 16 * Header.Count > message.Length)
            {
                Dump = true;
                return;
            }

            for (int i = 0; i < Header.Count; ++i)
            {
                PacketParser.ParsePacket(message, headerLength + 16 * i, out Items[i]);
            }
        }
Пример #22
0
        public void TestEmptyStructure()
        {
            var def = new PacketDefinition(RealmServerOpCode.CMSG_SET_CHANNEL_WATCH, PacketSender.Client, new List <PacketSegmentStructure>());

            def.Init();

            using (var packet = new RealmPacketOut(RealmServerOpCode.CMSG_PLAYER_AI_CHEAT))
            {
                packet.WriteUInt((uint)SpellAttributes.CannotRemove);
                packet.WriteByte(0);

                using (var packetIn = DisposableRealmPacketIn.CreateFromOutPacket(packet))
                {
                    var parsedPacket = PacketParser.Parse(packetIn, PacketSender.Client, def);
                    Assert.AreEqual(0, parsedPacket.SubSegments.Count);
                }
            }
        }
Пример #23
0
        protected override async Task OnApplicationMessageReceived(string ClientId, string Topic, string ContentType, uint QosLevel, byte[] payload)
        {
            try
            {
                if (Topic.StartsWith("site"))
                {
                    DUT_MQTT_COMMON_HEADER header = PacketParser.ByteToStruct <DUT_MQTT_COMMON_HEADER>(payload);
                    switch (header.Category)
                    {
                    case PmsCategoryTypes.ESS:
                        DUT_MQTT_ESS ess = PacketParser.ByteToStruct <DUT_MQTT_ESS>(payload);
                        ModelConverter.DataProcessing(ess, _queues);
                        ModelConverter.EventProcessing(this, ess);
                        break;

                    case PmsCategoryTypes.TEMPERATUREANDHUMIDITY:
                        DUT_MQTT_TEMPHUMIDITY temp = PacketParser.ByteToStruct <DUT_MQTT_TEMPHUMIDITY>(payload);
                        ModelConverter.DataProcessing(temp, _queues);
                        break;
                    }
                }
                else if (Topic.EndsWith("control"))
                {
                    string                 msg      = Encoding.UTF8.GetString(payload);
                    ModbusControlModel     model    = JsonConvert.DeserializeObject <ModbusControlModel>(msg);
                    MqttApplicationMessage mqtt_msg = ConvertControlMessage(model);
                    await MqttClient.PublishAsync(mqtt_msg);

                    var logger = NLog.LogManager.GetLogger("control_logger");
                    logger.Info($"[{model.userid}] [DeviceIndex:{model.deviceindex}] {model.commandcode} REF:{model.commandvalue}");
                }

                //if(ModelConverter.TryConvertPcs(ess, DateTime.Now, out MqttApplicationMessage[] pcs_messages,
                //    out MqttApplicationMessage[] bat_messages))
                //{

                //}
            }
            catch (Exception ex)
            {
                logger.LogError(ex, ex.Message);
            }
            //throw new NotImplementedException();
        }
Пример #24
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DataListener"/> class.
        /// </summary>
        public DataListener()
        {
            m_id                    = DefaultID;
            m_server                = DefaultServer;
            m_port                  = DefaultPort;
            m_protocol              = DefaultProtocol;
            m_connectToServer       = DefaultConnectToServer;
            m_cacheData             = DefaultCacheData;
            m_initializeData        = DefaultInitializeData;
            m_initializeDataTimeout = DefaultInitializeDataTimeout;
            m_persistSettings       = DefaultPersistSettings;
            m_settingsCategory      = DefaultSettingsCategory;
            m_data                  = new List <IDataPoint>();
            m_clientIDs             = new ConcurrentDictionary <IClient, Guid>();
            m_initializeWaitHandle  = new AutoResetEvent(false);

            m_parser             = new PacketParser();
            m_parser.DataParsed += PacketParser_DataParsed;

            m_tcpClient = new TcpClient();
            m_tcpClient.ConnectionAttempt     += ClientSocket_ConnectionAttempt;
            m_tcpClient.ConnectionEstablished += ClientSocket_ConnectionEstablished;
            m_tcpClient.ConnectionTerminated  += ClientSocket_ConnectionTerminated;
            m_tcpClient.ReceiveDataComplete   += ClientSocket_ReceiveDataComplete;
            m_clientIDs.TryAdd(m_tcpClient, Guid.NewGuid());

            m_udpClient = new UdpClient();
            m_udpClient.ConnectionAttempt     += ClientSocket_ConnectionAttempt;
            m_udpClient.ConnectionEstablished += ClientSocket_ConnectionEstablished;
            m_udpClient.ConnectionTerminated  += ClientSocket_ConnectionTerminated;
            m_udpClient.ReceiveDataComplete   += ClientSocket_ReceiveDataComplete;
            m_clientIDs.TryAdd(m_udpClient, Guid.NewGuid());

            m_tcpServer = new TcpServer();
            m_tcpServer.ServerStarted             += ServerSocket_ServerStarted;
            m_tcpServer.ServerStopped             += ServerSocket_ServerStopped;
            m_tcpServer.ReceiveClientDataComplete += ServerSocket_ReceiveClientDataComplete;

            m_dataInitClient = new TcpClient();
            m_dataInitClient.ConnectionString      = "Server={0}:1003; interface=0.0.0.0";
            m_dataInitClient.PayloadAware          = true;
            m_dataInitClient.MaxConnectionAttempts = 10;
            m_dataInitClient.ReceiveDataComplete  += DataInitClient_ReceiveDataComplete;
        }
        private void OnMessageReceived(object sender, MessageReceivedEventArgs e)
        {
            var packet = PacketParser.DecodePacket(e.Message);

            if (packet.Type == PacketType.Error && packet.Advice != null)
            {
                if (packet.Advice == "reconnect" && (Connected || Connecting))
                {
                    Disconnect();
                    Reconnect();
                }

                EmitLocally("error", packet.Reason);
            }
            else
            {
                Of(packet.EndPoint).HandlePacket(packet);
            }
        }
Пример #26
0
        public static void CheckAllHotkeys(List <OpenSpan> ExpHotkeys)
        {
            Console.WriteLine("Call Check all Hotkeys");

            var packets    = PacketParser.GetPackets(NunitSettings.DttPath, NunitSettings.TempFolder);
            var outPutFile = PacketParser.DecryptPacketToXmlFile(NunitSettings.DttPath, packets[0].Name, NunitSettings.BackupFolder, String.Concat(TestHelper.getTestName(), ".xml"));
            var allHotkeys = PacketParser.GetAllHotKey(Path.Combine(NunitSettings.BackupFolder, String.Concat(TestHelper.getTestName(), ".xml")));

            Console.WriteLine("Full List of actual hotkeys");

            foreach (OpenSpan hotkey in allHotkeys)
            {
                Console.WriteLine("Actual hotkey: " + hotkey.Name1 + " = " + hotkey.Value1 + "  " + hotkey.Name2 + " = " + hotkey.Value2 + "  " + hotkey.Name3 + " = " + hotkey.Value3);
            }
            Console.WriteLine("========================================");

            var index = 0;

            if (ExpHotkeys.Count == allHotkeys.Count)
            {
                foreach (OpenSpan hotkey in ExpHotkeys)
                {
                    Console.WriteLine("Expected hotkey: " + hotkey.Name1 + " = " + hotkey.Value1 + " " + hotkey.Name2 + " = " + hotkey.Value2);
                    Console.WriteLine("Actual hotkey: " + allHotkeys[index].Name1 + " = " + allHotkeys[index].Value1 + " " + allHotkeys[index].Name2 + " = " + allHotkeys[index].Value2);
                    Console.WriteLine("========================================");

                    Assert.AreEqual(hotkey.Name1, allHotkeys[index].Name1);
                    Assert.AreEqual(hotkey.Value1, allHotkeys[index].Value1);
                    Assert.AreEqual(hotkey.Name2, allHotkeys[index].Name2);
                    Assert.AreEqual(hotkey.Value2, allHotkeys[index].Value2);
                    Assert.AreEqual(hotkey.Name3, allHotkeys[index].Name3);
                    Assert.AreEqual(hotkey.Value3, allHotkeys[index].Value3);

                    index++;
                }
            }
            else
            {
                Console.WriteLine("Expected hotkeys: " + ExpHotkeys.Count + "    Actual hotkeys: " + allHotkeys.Count);
                Assert.AreEqual(ExpHotkeys.Count, allHotkeys.Count);
            }
        }
Пример #27
0
        private void ReceiveMessage(IAsyncResult iar)
        {
            AsyncObject client = (AsyncObject)iar.AsyncState;

            int recv = client.WorkingSocket.EndReceive(iar);

            if (recv > 0)
            {
                //메세지를 받았을 경우
                PacketParser.PacketParsing(client.Buffer);
            }
            else
            {
                //메세지를 못받았을 경우
                client.WorkingSocket.Close();
                return;
            }
            client.ClearBuffer();
            client.WorkingSocket.BeginReceive(client.Buffer, 0, 1024, SocketFlags.None, ReceiveMessage, client);
        }
Пример #28
0
        public static void CheckAllMacros(List <OpenSpan> ExpMacros)
        {
            Console.WriteLine("Call Check all Macros");
            var packets    = PacketParser.GetPackets(NunitSettings.DttPath, NunitSettings.TempFolder);
            var outPutFile = PacketParser.DecryptPacketToXmlFile(NunitSettings.DttPath, packets[0].Name, NunitSettings.BackupFolder, String.Concat(TestHelper.getTestName(), ".xml"));
            var allMacros  = PacketParser.GetAllMacros(Path.Combine(NunitSettings.BackupFolder, String.Concat(TestHelper.getTestName(), ".xml")));

            var index = 0;

            foreach (OpenSpan macro in ExpMacros)
            {
                Console.WriteLine("Expected macro: " + macro.Name1 + " = " + macro.Value1);
                Console.WriteLine("Actual macro: " + allMacros[index].Name1 + " = " + allMacros[index].Value1);
                Console.WriteLine("------------------------------------");

                Assert.AreEqual(allMacros[index].Name1, macro.Name1);
                Assert.AreEqual(allMacros[index].Value1, macro.Value1);
                index++;
            }
        }
Пример #29
0
        private void ReceiveMessage(IAsyncResult iar)
        {
            Socket client = (Socket)iar.AsyncState;

            int recv = client.EndReceive(iar);

            if (recv != 0)
            {
                //메세지를 받았을 경우
                byte[] recvData = ReceiveBuffer;
                PacketParser.PacketParsing(recvData);

                printText("클라이언트" + ClientSocket.RemoteEndPoint.ToString() + "매칭 요청하였습니다.");
            }
            else
            {
                //메세지를 못받았을 경우
            }
            ClientSocket.BeginReceive(ReceiveBuffer, 0, ReceiveBuffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), ClientSocket);
        }
Пример #30
0
        public static void CheckWorkUnitClose(List <OpenSpanClose> ExpectedCloseEventList)
        {
            Console.WriteLine("Execute CheckWorkUnitClose");
            var packets    = PacketParser.GetPackets(NunitSettings.DttPath, NunitSettings.TempFolder);
            var outPutFile = PacketParser.DecryptPacketToXmlFile(NunitSettings.DttPath, packets[0].Name, NunitSettings.BackupFolder, String.Concat(TestHelper.getTestName(), ".xml"));
            var content    = PacketParser.GetAllCloseEvents(Path.Combine(NunitSettings.BackupFolder, String.Concat(TestHelper.getTestName(), ".xml")));

            var index = 0;

            foreach (OpenSpanClose ActualCloseEvent in content)
            {
                Verify.AreEqual(ActualCloseEvent.trigger, ExpectedCloseEventList[index].trigger);
                Verify.AreEqual(ActualCloseEvent.application_id, ExpectedCloseEventList[index].application_id);
                Verify.AreEqual(ActualCloseEvent.document_id, ExpectedCloseEventList[index].document_id);
                Verify.AreEqual(ActualCloseEvent.oploc, ExpectedCloseEventList[index].oploc);
                Verify.AreEqual(ActualCloseEvent.pend_reason_code, ExpectedCloseEventList[index].pend_reason_code);
                Verify.AreEqual(ActualCloseEvent.work_unit_status_code, ExpectedCloseEventList[index].work_unit_status_code);
                index++;
            }
        }
Пример #31
0
        private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            Console.WriteLine("SerialPort data received");
            // シリアルポートに到達したバイト列を取得
            int _i_BytesToRead = this.SerialPort.BytesToRead; // シリアルポートに到達したバイト数

            if (_i_BytesToRead == 0)
            {
                return;
            }

            byte[] _ba_BytesToRead = new byte[_i_BytesToRead]; // バイト配列を作成
            this.SerialPort.Read(_ba_BytesToRead, 0, _i_BytesToRead);

            // 必要であればバッファを結合する。
            int _i_trueBytesToRead = _i_BytesToRead + _i_PacketBufferSize;

            byte[] _ba_trueBytesToRead = new byte[_i_trueBytesToRead];
            if (_i_PacketBufferSize > 0)
            {
                packetBufferList[0].CopyTo(_ba_trueBytesToRead, 0);
                _ba_BytesToRead.CopyTo(_ba_trueBytesToRead, _i_PacketBufferSize);
                packetBufferList.Clear();
                _i_PacketBufferSize = 0;
            }
            else
            {
                _ba_BytesToRead.CopyTo(_ba_trueBytesToRead, 0);
            }

            PacketParser tmpParsedPacket = ParseReceivedSerialData(_ba_trueBytesToRead);

            if (tmpParsedPacket.packetList.Count > 0)
            {
                BeginInvoke(new UpdateFormDelegate(UpdateFormChanged), tmpParsedPacket);
            }
            else
            {
                return;
            }
        }
Пример #32
0
        public void TestParseTextPacketComplete(
            int expectedCommandLength,
            int expectedDataLength,
            string expectedCommand,
            string expectedData,
            int expectedBytesConsumed,
            bool parseAsSpan,
            string data
            )
        {
            byte[] buff = Encoding.UTF8.GetBytes(data);

            Packet?packet;
            string?error;
            int    bytesConsumed;

            if (parseAsSpan)
            {
                Assert.AreEqual(
                    ParseResult.Complete,
                    PacketParser.ParseTextPacket(buff, out packet, out error, out bytesConsumed)
                    );
            }
            else
            {
                Assert.AreEqual(
                    ParseResult.Complete,
                    PacketParser.ParseTextPacket(buff, 0, data.Length, out packet, out error, out bytesConsumed)
                    );
            }

            Assert.IsTrue(packet.HasValue);
            Assert.IsNull(error);

            Assert.AreEqual(expectedCommandLength, packet !.Value.CommandLength);
            Assert.AreEqual(expectedDataLength, packet.Value.DataLength);
            Assert.AreEqual(expectedCommand, packet.Value.Command);
            Assert.AreEqual(expectedData, packet.Value.Data);

            Assert.AreEqual(expectedBytesConsumed, bytesConsumed);
        }
Пример #33
0
		static void HandleTrainerList(PacketParser parser)
		{
			var spells = parser.ParsedPacket["Spells"].List;
			foreach (var spellSegment in spells)
			{
				var id = (SpellId)spellSegment["Spell"].UIntValue;
				var moneyCost = spellSegment["MoneyCost"].IntValue;
				var talentCost = spellSegment["TalentCost"].IntValue;
				var profCost = spellSegment["ProfessionPointCost"].IntValue;
				int reqLevel = spellSegment["RequiredLevel"].ByteValue;
				var reqSkill = (SkillId)spellSegment["RequiredSkill"].UIntValue;
				var reqSkillValue = spellSegment["RequiredSkillLevel"].IntValue;
				var reqSpells = new SpellId[3];

				reqSpells[0] = (SpellId)spellSegment["RequiredSpellId1"].UIntValue;
				reqSpells[1] = (SpellId)spellSegment["RequiredSpellId2"].UIntValue;
				reqSpells[2] = (SpellId)spellSegment["RequiredSpellId3"].UIntValue;

				// TODO: Calc exact money cost, depending on the faction
			}
		}
Пример #34
0
    public async ValueTask CallActionAsync(CancellationToken cancellationToken = default)
    {
        var result = ParsedPacketMessage <TError> .CreateUnknown();

        await _connection.Receiver.ReceiveAsync(
            sequence =>
        {
            PacketParser.TryParse(ref sequence, out result, _bytesPool);
        }, cancellationToken);

        if (result.IsCompleted)
        {
            return;
        }
        else if (result.IsError)
        {
            throw ThrowHelper.CreateRocketRemotingApplicationException(result.ErrorMessage);
        }

        throw ThrowHelper.CreateRocketRemotingProtocolException_UnexpectedProtocol();
    }
 public RouteRecordIndicator(PacketParser parser)
 {
     this.parser = parser;
     CommandId = XBeeAPICommandId.ROUTE_RECORD_INDICATOR;
 }
Пример #36
0
        protected virtual void DoParse(ParsablePacketInfo info, LogHandler handler)
        {
            var rawPacket = info.Packet;
            if (rawPacket.PacketId.IsUpdatePacket)
            {
                var len = rawPacket.Length - rawPacket.HeaderSize;
                var bytes = rawPacket.ReadBytes(len);
                if (bytes.Length != len)
                {
                    log.Warn("BinaryReader.ReadBytes failed: {0} / {1}", bytes.Length, len);
                    return;
                }
                var updatePacket = ParsedUpdatePacket.Create(info.Timestamp,
                    bytes,
                    false,
                    rawPacket.PacketId == RealmServerOpCode.SMSG_COMPRESSED_UPDATE_OBJECT);

                if (handler.UpdatePacketHandler != null)
                {
                    handler.UpdatePacketHandler(updatePacket);
                }
            }
            else
            {
                var parser = new PacketParser(info);
                parser.Parse();

                if (handler.NormalPacketHandler != null)
                {
                    handler.NormalPacketHandler(parser);
                }
            }
        }
 public SensorReadIndicator(PacketParser parser)
 {
     this.parser = parser;
     CommandId = XBeeAPICommandId.SENSOR_READ_INDICATOR;
     ADValues = new ushort[] { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF };
 }
 public ZigBeeTransmitStatus(PacketParser parser)
 {
     this.parser = parser;
     CommandId = XBeeAPICommandId.TRANSMIT_STATUS_RESPONSE;
 }
 public RemoteCommandResponse(PacketParser parser)
 {
     this.parser = parser;
     CommandId = XBeeAPICommandId.REMOTE_AT_COMMAND_RESPONSE;
 }
Пример #40
0
        /// <summary>
        /// Releases the unmanaged resources used by the <see cref="InputAdapter"/> object and optionally releases the managed resources.
        /// </summary>
        /// <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        protected override void Dispose(bool disposing)
        {
            if (!m_disposed)
            {
                try
                {
                    if (disposing)
                    {
                        if (m_client != null)
                        {
                            m_client.ConnectionEstablished -= m_client_ConnectionEstablished;
                            m_client.ConnectionTerminated -= m_client_ConnectionTerminated;
                            m_client.ConnectionException -= m_client_ConnectionException;
                            m_client.Dispose();
                        }
                        m_client = null;

                        if (m_parser != null)
                        {
                            m_parser.DataParsed -= m_parser_DataParsed;
                            m_parser.Dispose();
                        }
                        m_parser = null;
                    }
                }
                finally
                {
                    base.Dispose(disposing);    // Call base class Dispose().
                    m_disposed = true;          // Prevent duplicate dispose.
                }
            }
        }
Пример #41
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DataListener"/> class.
        /// </summary>
        public DataListener()
        {
            m_id = DefaultID;
            m_server = DefaultServer;
            m_port = DefaultPort;
            m_protocol = DefaultProtocol;
            m_connectToServer = DefaultConnectToServer;
            m_cacheData = DefaultCacheData;
            m_initializeData = DefaultInitializeData;
            m_initializeDataTimeout = DefaultInitializeDataTimeout;
            m_persistSettings = DefaultPersistSettings;
            m_settingsCategory = DefaultSettingsCategory;
            m_data = new List<IDataPoint>();
            m_clientIDs = new ConcurrentDictionary<IClient, Guid>();
            m_initializeWaitHandle = new AutoResetEvent(false);

            m_parser = new PacketParser();
            m_parser.DataParsed += PacketParser_DataParsed;

            m_tcpClient = new TcpClient();
            m_tcpClient.ConnectionAttempt += ClientSocket_ConnectionAttempt;
            m_tcpClient.ConnectionEstablished += ClientSocket_ConnectionEstablished;
            m_tcpClient.ConnectionTerminated += ClientSocket_ConnectionTerminated;
            m_tcpClient.ReceiveDataComplete += ClientSocket_ReceiveDataComplete;
            m_clientIDs.TryAdd(m_tcpClient, Guid.NewGuid());

            m_udpClient = new UdpClient();
            m_udpClient.ConnectionAttempt += ClientSocket_ConnectionAttempt;
            m_udpClient.ConnectionEstablished += ClientSocket_ConnectionEstablished;
            m_udpClient.ConnectionTerminated += ClientSocket_ConnectionTerminated;
            m_udpClient.ReceiveDataComplete += ClientSocket_ReceiveDataComplete;
            m_clientIDs.TryAdd(m_udpClient, Guid.NewGuid());

            m_tcpServer = new TcpServer();
            m_tcpServer.ServerStarted += ServerSocket_ServerStarted;
            m_tcpServer.ServerStopped += ServerSocket_ServerStopped;
            m_tcpServer.ReceiveClientDataComplete += ServerSocket_ReceiveClientDataComplete;

            m_dataInitClient = new TcpClient();
            m_dataInitClient.ConnectionString = "Server={0}:1003; interface=0.0.0.0";
            m_dataInitClient.PayloadAware = true;
            m_dataInitClient.MaxConnectionAttempts = 10;
            m_dataInitClient.ReceiveDataComplete += DataInitClient_ReceiveDataComplete;
        }
 public ZigBeeExplicitRXIndicator(PacketParser parser)
 {
     this.parser = parser;
     CommandId = XBeeAPICommandId.EXPLICIT_RX_INDICATOR_RESPONSE;
 }
Пример #43
0
		protected static void HandlePacket(PacketParser parser)
		{
			var pac = parser.ParsedPacket;
			s_Writer.WriteLine(@"INSERT INTO `gameobject_roots` KEYS (entry, Type, displayid, Name) " +
				"VALUES ({0}, {1}, {2}, {3})", pac["Entry"].UIntValue, pac["Type"].UIntValue, pac["DisplayId"].UIntValue, pac["Name"].StringValue);
		}
 public ZigBeeReceivePacket(PacketParser parser)
 {
     this.parser = parser;
     CommandId = XBeeAPICommandId.RECEIVE_PACKET_RESPONSE;
 }
 public ExplicitAddressingTransmit(PacketParser parser)
 {
     this.parser = parser;
     CommandId = XBeeAPICommandId.EXPLICIT_ADDR_REQUEST;
 }
Пример #46
0
 /// <summary>
 /// Write human-readable version of log to ParsedQuestOutput.txt
 /// </summary>
 /// <param name="parser">Any kind of Quest-packet</param>
 public static void HandleQuestPackets(PacketParser parser)
 {
     parser.Dump(questWriter);
     questWriter.WriteLine();		// empty line in between entries
 }
Пример #47
0
 public ModemStatus(PacketParser parser)
 {
     this.parser = parser;
     CommandId = XBeeAPICommandId.MODEM_STATUS_RESPONSE;
 }
 public OverAirUpdateStatus(PacketParser parser)
 {
     this.parser = parser;
     CommandId = XBeeAPICommandId.FIRMWARE_UPDATE_STATUS;
 }
Пример #49
0
        /// <summary>
        /// Intializes <see cref="InputAdapter"/>.
        /// </summary>
        public override void Initialize()
        {
            Dictionary<string, string> settings = Settings;
            string value;

            // Example connection string:
            // Port=1003; ServerID=P3
            if (settings.TryGetValue("port", out value))
                m_archiverPort = int.Parse(value);

            if (settings.TryGetValue("historianid", out value))
                m_historianID = value.Trim().ToUpper();

            // Create new data parser
            m_parser = new PacketParser();
            m_parser.DataParsed += m_parser_DataParsed;

            // Create UDP client to listen for messages
            m_client = new UdpClient("localport=" + m_archiverPort);
            m_client.ConnectionEstablished += m_client_ConnectionEstablished;
            m_client.ConnectionTerminated += m_client_ConnectionTerminated;
            m_client.ConnectionException += m_client_ConnectionException;
            m_client.Handshake = false;

            // Send data received over UDP port directly to packet parser
            m_client.ReceiveDataHandler = (buffer, offset, count) => m_parser.Parse(Guid.Empty, buffer, offset, count);
        }
Пример #50
0
 public ATCommand(PacketParser parser)
 {
     this.parser = parser;
     CommandId = XBeeAPICommandId.AT_COMMAND_REQUEST;
 }
 public ManyToOneRouteRequest(PacketParser parser)
 {
     this.parser = parser;
     CommandId = XBeeAPICommandId.MANYTOONE_ROUTE_REQUEST_INDICATOR;
 }
Пример #52
0
 public void InitPacket(object parser)
 {
     pParser = (PacketParser<PacketSt11>)parser;
                 IsInitialized = true;
                 IsInUse = false;
 }
Пример #53
0
 public RemoteATCommand(PacketParser parser)
 {
     this.parser = parser;
     CommandId = XBeeAPICommandId.REMOTE_AT_COMMAND_REQUEST;
 }