public void TestTransportFile()
        {
            var path = TWDir.Test + "\\TestAsset.txt";
            var strm = new StreamWriter(File.OpenWrite(path));

            strm.Write("This is a test asset!");
            strm.Close();

            var spm = new SimpleServerPacketManager();
            var cpm = spm.CreateClient();

            var server = new ServerFileTransporter <DataPacket>("TestTrans", spm);

            server.Start();
            var client = new ClientFileTransporter <DataPacket>("TestTrans", cpm, TWDir.Test.CreateSubdirectory("TestTransportFileCache").FullName);

            var ct = server.GetClientTransporter(spm.Clients[0]);



            ct.SendFile(new DataPacket(), path);

            var info = client.ReceiveFile();



            // Test TestAsset file

            var lines = File.ReadAllLines(info.CachedFilePath);

            Assert.AreEqual(1, lines.Length);
            Assert.AreEqual("This is a test asset!", lines[0]);
        }
        public ClientVersioningSyncer(VersioningSystem sys, IClientPacketManager pm)
        {
            this.sys = sys;
            var gen = new NetworkPacketFactoryCodeGenerater(TWDir.GenerateRandomCacheFile("CVS", "dll"));

            revisionTransporter = pm.CreatePacketTransporter("Versioning_Revision",
                                                             gen.GetFactory <RevisionPacket>(), PacketFlags.TCP);
            requestRevisionTransporter = pm.CreatePacketTransporter("Versioning_RequestRevision",
                                                                    gen.GetFactory <RevisionRequestPacket>(), PacketFlags.TCP);
            commandTransporter = pm.CreatePacketTransporter("Versioning_CMD",
                                                            new BytePacket.Factory(), PacketFlags.TCP);

            fileTransporter = new ClientFileTransporter <RevisionFilePacket>("Versioning_File", pm, TWDir.Cache.CreateSubdirectory("Versioning").FullName);
            fileTransporter.StartReceiving();

            gen.BuildFactoriesAssembly();
        }