예제 #1
0
        private static void LoadPacketFileExecTask(IPacketContainer packets, PacketLogReader reader)
        {
            PacketObject packet;

            while ((packet = reader.ReadPacket()) != null)
            {
                packets.Add(packet);
            }

            reader.Close();

            DebugManager.MessageOut("LoadPacketFile - Complete");
        }
예제 #2
0
        private void PlayRecord(GateObject[] gates, PacketFilterController filter, PacketLogReader reader)
        {
            ProgressMax = (uint)reader.ProgressMax;
            ProgressNow = (uint)reader.ProgressNow;

            var packet_busy = LoadPlayPacket(reader, filter);
            var packet_next = (PacketObject)null;
            var delay_timer = new System.Diagnostics.Stopwatch();
            var delay_value = 0;

            while ((!cancel_req_) && (packet_busy != null))
            {
                /* 次のデータ送信までの遅延 */
                while ((delay_timer.IsRunning) && (delay_timer.ElapsedMilliseconds < delay_value))
                {
                    if (delay_timer.ElapsedMilliseconds > 10)
                    {
                        System.Threading.Thread.Sleep(1);
                    }
                }

                /* パケット送信 */
                delay_timer.Restart();
                foreach (var gate in gates)
                {
                    gate.SendRequest(packet_busy.Data);
                }

                /* 次のパケットを取得 */
                packet_next = LoadPlayPacket(reader, filter);
                if (packet_next != null)
                {
                    delay_value = (int)(packet_next.MakeTime - packet_busy.MakeTime).TotalMilliseconds + SEND_TIMMING_MARGIN;
                }
                packet_busy = packet_next;

                ProgressNow = (uint)reader.ProgressNow;
            }

            ProgressNow = (uint)reader.ProgressNow;

            reader.Close();
        }