Packets are exported as a List with Helpers.PacketListToXml() now to make deserialization easier

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@675 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
John Hurliman
2006-12-03 01:50:00 +00:00
parent 6542e2139c
commit 50fc0db56f
2 changed files with 460 additions and 439 deletions

View File

@@ -8,7 +8,7 @@ namespace libsecondlife.TestClient
{
public class PacketLogCommand : Command
{
XmlWriter Writer;
List<Packet> Packets = new List<Packet>();
bool Done = false;
int Count = 0;
int Total = 0;
@@ -24,21 +24,23 @@ namespace libsecondlife.TestClient
if (args.Length != 2)
return "Usage: packetlog 10 tenpackets.xml";
XmlWriter writer;
NetworkManager.PacketCallback callback = new NetworkManager.PacketCallback(OnPacket);
Packets.Clear();
Done = false;
Count = 0;
NetworkManager.PacketCallback callback = new NetworkManager.PacketCallback(OnPacket);
try
{
Total = Int32.Parse(args[0]);
Writer = XmlWriter.Create(args[1]);
Writer.WriteStartElement("packets");
writer = XmlWriter.Create(args[1]);
Client.Network.RegisterCallback(PacketType.Default, callback);
}
catch (Exception e)
{
return "Usage: packetlog 10 tenpackets.xml" + Environment.NewLine + e;
return "Usage: packetlog 10 tenpackets.xml (" + e + ")";
}
while (!Done)
@@ -48,30 +50,32 @@ namespace libsecondlife.TestClient
Client.Network.UnregisterCallback(PacketType.Default, callback);
lock (Writer)
try
{
Writer.WriteEndElement();
Writer.Close();
Helpers.PacketListToXml(Packets, writer);
}
catch (Exception e)
{
return "Serialization failed: " + e.ToString();
}
writer.Close();
Packets.Clear();
return "Exported " + Count + " packets to " + args[1];
}
private void OnPacket(Packet packet, Simulator simulator)
{
lock (Writer)
lock (Packets)
{
if (Writer.WriteState == WriteState.Error)
{
Done = true;
}
else if (Count >= Total)
if (Count >= Total)
{
Done = true;
}
else
{
packet.ToXml(Writer);
Packets.Add(packet);
Count++;
}
}