private static void LoadPacketFileExecTask(IPacketContainer packets, PacketLogReader reader) { PacketObject packet; while ((packet = reader.ReadPacket()) != null) { packets.Add(packet); } reader.Close(); DebugManager.MessageOut("LoadPacketFile - Complete"); }
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(); }