Ejemplo n.º 1
0
        public void ReliableTransferMsg_Basic()
        {
            EnhancedStream      es = new EnhancedMemoryStream();
            ReliableTransferMsg msgIn, msgOut;
            Guid id = Helper.NewGuid();

            Msg.ClearTypes();
            Msg.LoadTypes(Assembly.GetExecutingAssembly());

            msgOut            = new ReliableTransferMsg(ReliableTransferMsg.ErrorCmd);
            msgOut.Direction  = TransferDirection.Download;
            msgOut.TransferID = id;
            msgOut.Args       = "Hello";
            msgOut.BlockData  = new byte[] { 0, 1, 2, 3, 4 };
            msgOut.BlockIndex = 10;
            msgOut.BlockSize  = 1024;
            msgOut.Exception  = "Error";

            Msg.Save(es, msgOut);
            es.Position = 0;
            msgIn       = (ReliableTransferMsg)Msg.Load(es);

            Assert.IsNotNull(msgIn);
            Assert.AreEqual(TransferDirection.Download, msgIn.Direction);
            Assert.AreEqual(id, msgIn.TransferID);
            Assert.AreEqual("Hello", msgIn.Args);
            CollectionAssert.AreEqual(new byte[] { 0, 1, 2, 3, 4 }, msgIn.BlockData);
            Assert.AreEqual(10, msgIn.BlockIndex);
            Assert.AreEqual(1024, msgIn.BlockSize);
            Assert.AreEqual("Error", msgIn.Exception);
        }
Ejemplo n.º 2
0
        public void OnMsg(ReliableTransferMsg msg)
        {
            if (netFail)
            {
                return;
            }

            StreamTransferSession session;
            ArgCollection         args;
            AppRef         appRef;
            AppPackageInfo packageInfo;
            string         path;

            args   = ArgCollection.Parse(msg.Args);
            appRef = AppRef.Parse(args["appref"]);

            if (msg.Direction == TransferDirection.Upload)
            {
                path    = packageFolder.BeginTransit(appRef);
                session = StreamTransferSession.ServerUpload(router, msg, path);
                session.BeginTransfer(onTransfer, new TransferInfo(session, path, msg.Direction));
            }
            else
            {
                packageInfo = packageFolder.GetPackageInfo(appRef);
                if (packageInfo == null)
                {
                    throw SessionException.Create(null, "Package [{0}] cannot be found.", appRef);
                }

                path    = packageInfo.FullPath;
                session = StreamTransferSession.ServerDownload(router, msg, path);
                session.BeginTransfer(onTransfer, new TransferInfo(session, path, msg.Direction));
            }
        }
Ejemplo n.º 3
0
        public void OnMsgDownload(ReliableTransferMsg msg)
        {
            StreamTransferSession session;

            session = StreamTransferSession.ServerDownload(msg._Session.Router, msg, msServer);
            session.SimulateCancel = simServerCancel;
            session.SimulateError  = simServerError;
            session.BeginTransfer(new AsyncCallback(OnServerDone), session);
            serverArgs = msg.Args;
        }