Exemple #1
0
 protected override void LoadBin(Stream s)
 {
     using (var r = new BinaryReader(s))
     {
         var tmp = r.ReadByte();
         try
         {
             Result = (FileTransferRequestResult)tmp;
         }
         catch (FormatException)
         {
             throw new MessageLoadException("Invalid result: " + tmp);
         }
         var sid = r.ReadString();
         try
         {
             SessionId = FileTransferId.Parse(sid);
         }
         catch (FormatException)
         {
             throw new MessageLoadException("Invalid sid: " + sid);
         }
         Token     = r.ReadUInt64();
         BlockSize = r.ReadInt32();
     }
 }
Exemple #2
0
 protected override void LoadJson(Stream s)
 {
     using (var r = new JsonStreamReader(s))
     {
         var obj = JObject.Load(r);
         var tmp = obj.GetInt32("result");
         try
         {
             Result = (FileTransferVerificationResult)tmp;
         }
         catch (FormatException)
         {
             throw new MessageLoadException("Invalid result: " + tmp);
         }
         var sid = obj.GetString("sid");
         try
         {
             SessionId = FileTransferId.Parse(sid);
         }
         catch (FormatException)
         {
             throw new MessageLoadException("Invalid sid: " + tmp);
         }
     }
 }
Exemple #3
0
        public void DeleteSession(FileTransferId id)
        {
            FileTransferSession ft;

            if (!idToSession.TryGetValue(id, out ft))
            {
                return;
            }
            HashSet <FileTransferId> senderIds, receiverIds;

            if (nameToId.TryGetValue(ft.Sender, out senderIds))
            {
                senderIds.Remove(id);
                if (senderIds.Count == 0)
                {
                    nameToId.Remove(ft.Sender);
                }
            }
            if (nameToId.TryGetValue(ft.Receiver, out receiverIds))
            {
                receiverIds.Remove(id);
                if (receiverIds.Count == 0)
                {
                    nameToId.Remove(ft.Receiver);
                }
            }
        }
Exemple #4
0
        public void SaveLoadSvFileTransferRequest()
        {
            // arrange
            const string refUsername = "******";
            const string refFileName = "crown.png";

            byte[]     refFileHash  = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
            const long refFileSize  = 420042;
            const int  refBlockSize = 8192;
            var        refSid       = new FileTransferId(81289);
            var        msg          = new SvFileTransferRequest
            {
                Username  = refUsername,
                FileName  = refFileName,
                FileHash  = refFileHash,
                FileSize  = refFileSize,
                BlockSize = refBlockSize,
                SessionId = refSid,
            };

            // act
            MultiprotocolSaveLoad(msg, () =>
            {
                // assert
                Assert.AreEqual(msg.Username, refUsername);
                Assert.AreEqual(msg.FileName, refFileName);
                Assert.AreEqual(msg.FileHash, refFileHash);
                Assert.AreEqual(msg.FileSize, refFileSize);
                Assert.AreEqual(msg.BlockSize, refBlockSize);
                Assert.AreEqual(msg.SessionId, refSid);
            });
        }
Exemple #5
0
 protected override void LoadJson(Stream s)
 {
     using (var r = new JsonStreamReader(s))
     {
         var obj = JObject.Load(r);
         var sid = obj.GetString("sid");
         try
         {
             SessionId = FileTransferId.Parse(sid);
         }
         catch (FormatException)
         {
             throw new MessageLoadException("Invalid sid: " + sid);
         }
         var data = obj.GetString("data");
         try
         {
             Data = Convert.FromBase64String(data);
         }
         catch (FormatException)
         {
             throw new MessageLoadException("Invalid data format");
         }
     }
 }
Exemple #6
0
        public void SaveLoadSvFileTransferResult()
        {
            // arrange
            const FileTransferRequestResult refResult = FileTransferRequestResult.Accepted;
            var         refSid       = new FileTransferId(81289);
            const ulong refToken     = 120982;
            const int   refBlockSize = 8192;
            var         msg          = new SvFileTransferResult
            {
                Result    = refResult,
                SessionId = refSid,
                Token     = refToken,
                BlockSize = refBlockSize,
            };

            // act
            MultiprotocolSaveLoad(msg, () =>
            {
                // assert
                Assert.AreEqual(msg.Result, refResult);
                Assert.AreEqual(msg.SessionId, refSid);
                Assert.AreEqual(msg.Token, refToken);
                Assert.AreEqual(msg.BlockSize, refBlockSize);
            });
        }
Exemple #7
0
 protected override void LoadJson(Stream s)
 {
     using (var r = new JsonStreamReader(s))
     {
         var obj = JObject.Load(r);
         var tmp = obj.GetInt32("result");
         try
         {
             Result = (FileTransferRequestResult)tmp;
         }
         catch (FormatException)
         {
             throw new MessageLoadException("Invalid result: " + tmp);
         }
         var sid = obj.GetString("sid");
         try
         {
             SessionId = FileTransferId.Parse(sid);
         }
         catch (FormatException)
         {
             throw new MessageLoadException("Invalid sid: " + tmp);
         }
         var token = obj.GetString("token");
         try
         {
             Token = UInt64.Parse(token);
         }
         catch (FormatException)
         {
             throw new MessageLoadException("Invalid token: " + token);
         }
         BlockSize = obj.GetInt32("block_size");
     }
 }
Exemple #8
0
        public byte[] ToBytes()
        {
            try
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    using (BinaryWriter bw = new BinaryWriter(ms))
                    {
                        byte[] nameData    = Encoding.ASCII.GetBytes(FileName);
                        byte[] transIdData = FileTransferId.ToByteArray();

                        bw.Write(nameData.Length + transIdData.Length + PartData.Length + 25);
                        bw.Write((byte)Type);
                        bw.Write(FileSize);
                        bw.Write(PartNumber);
                        bw.Write(PartCount);
                        bw.Write(nameData.Length);
                        bw.Write(nameData);
                        bw.Write(transIdData);
                        bw.Write(PartData.Length);
                        bw.Write(PartData);
                    }
                    return(ms.ToArray());
                }
            }catch (Exception ex)
            {
                throw new MessageSerializeError(ex.Message, ex);
            }
        }
 public IncomingFileTransfer(FileTransferManager owner, IncomingFileTransferInfo info) : base(owner)
 {
     id         = info.Id;
     State      = FileTransferState.Waiting;
     Sender     = info.Sender;
     Name       = info.Name;
     BytesTotal = info.Size;
     Hash       = info.Hash;
     BlockSize  = info.InitBlockSize;
 }
Exemple #10
0
 public FileTransferSession(FileTransferId id, ulong token, string sender, string receiver,
                            byte[] hash, long size)
 {
     Id       = id;
     Token    = token;
     Sender   = sender;
     Receiver = receiver;
     Hash     = hash;
     Size     = size;
 }
 public OutcomingFileTransfer(FileTransferManager owner, OutcomingFileTransferInfo info) : base(owner)
 {
     id         = FileTransferId.InvalidId;
     State      = FileTransferState.Waiting;
     Name       = info.Name;
     Hash       = info.Hash;
     BytesTotal = info.Size;
     BlockSize  = info.InitBlockSize;
     Receiver   = info.Receiver;
     Token      = info.Token;
 }
Exemple #12
0
 protected override void LoadJson(Stream s)
 {
     using (var r = new JsonStreamReader(s))
     {
         var obj = JObject.Load(r);
         Username = obj.GetString("usr");
         FileName = obj.GetString("file_name");
         FileSize = obj.GetInt32("file_size");
         var hash = obj.GetString("file_hash");
         FileHash  = Convert.FromBase64String(hash);
         BlockSize = obj.GetInt32("block_size");
         var sid = obj.GetString("sid");
         SessionId = FileTransferId.Parse(sid);
     }
 }
Exemple #13
0
 protected override void LoadBin(Stream s)
 {
     using (var r = new BinaryReader(s))
     {
         var sid = r.ReadString();
         try
         {
             SessionId = FileTransferId.Parse(sid);
         }
         catch (FormatException)
         {
             throw new MessageLoadException("Invalid sid: " + sid);
         }
         var len = r.ReadInt32();
         Data = r.ReadBytes(len);
     }
 }
Exemple #14
0
        public void SaveLoadCsFileTransferVerificationResult()
        {
            // arrange
            const FileTransferVerificationResult refResult = FileTransferVerificationResult.Success;
            var refSid = new FileTransferId(81289);
            var msg    = new CsFileTransferVerificationResult
            {
                Result    = refResult,
                SessionId = refSid,
            };

            // act
            MultiprotocolSaveLoad(msg, () =>
            {
                // assert
                Assert.AreEqual(msg.Result, refResult);
                Assert.AreEqual(msg.SessionId, refSid);
            });
        }
Exemple #15
0
        public void SaveLoadCsFileTransferData()
        {
            // arrange
            var refSid = new FileTransferId(81289);

            byte[] refData = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
            var    msg     = new CsFileTransferData
            {
                SessionId = refSid,
                Data      = refData,
            };

            // act
            MultiprotocolSaveLoad(msg, () =>
            {
                // assert
                Assert.AreEqual(msg.SessionId, refSid);
                Assert.AreEqual(msg.Data, refData);
            });
        }
Exemple #16
0
 protected override void LoadBin(Stream s)
 {
     using (var r = new BinaryReader(s))
     {
         Username = r.ReadString();
         FileName = r.ReadString();
         FileSize = r.ReadInt64();
         var len = r.ReadInt32();
         FileHash  = r.ReadBytes(len);
         BlockSize = r.ReadInt32();
         var sid = r.ReadString();
         try
         {
             SessionId = FileTransferId.Parse(sid);
         }
         catch (FormatException)
         {
             throw new MessageLoadException("Invalid sid: " + sid);
         }
     }
 }
Exemple #17
0
        public void SaveLoadCsFileTransferInterruption()
        {
            // arrange
            const FileTransferInterruption refInt = FileTransferInterruption.Cancel;
            var         refSid   = new FileTransferId(81289);
            const ulong refToken = 120982;
            var         msg      = new CsFileTransferInterruption
            {
                Int       = refInt,
                SessionId = refSid,
                Token     = refToken,
            };

            // act
            MultiprotocolSaveLoad(msg, () =>
            {
                // assert
                Assert.AreEqual(msg.Int, refInt);
                Assert.AreEqual(msg.SessionId, refSid);
                Assert.AreEqual(msg.Token, refToken);
            });
        }
Exemple #18
0
        public void SaveLoadClFileTransferRespond()
        {
            // arrange
            const FileTransferRequestResult refResult = FileTransferRequestResult.Accepted;
            var       refSid       = new FileTransferId(81289);
            const int refBlockSize = 8192;
            var       msg          = new ClFileTransferRespond
            {
                Result    = refResult,
                SessionId = refSid,
                BlockSize = refBlockSize,
            };

            // act
            MultiprotocolSaveLoad(msg, () =>
            {
                // assert
                Assert.AreEqual(msg.Result, refResult);
                Assert.AreEqual(msg.SessionId, refSid);
                Assert.AreEqual(msg.BlockSize, refBlockSize);
            });
        }
Exemple #19
0
        public FileTransferSession CreateSession(ulong token, string sender, string receiver,
                                                 byte[] hash, long size)
        {
            var id = new FileTransferId(++lastSid);
            var ft = new FileTransferSession(id, token, sender, receiver, hash, size);

            idToSession.Add(id, ft);
            HashSet <FileTransferId> senderIds, receiverIds;

            if (!nameToId.TryGetValue(sender, out senderIds))
            {
                senderIds = new HashSet <FileTransferId>();
                nameToId.Add(sender, senderIds);
            }
            senderIds.Add(id);
            if (!nameToId.TryGetValue(receiver, out receiverIds))
            {
                receiverIds = new HashSet <FileTransferId>();
                nameToId.Add(receiver, receiverIds);
            }
            receiverIds.Add(id);
            return(ft);
        }
Exemple #20
0
        public FileTransferSession GetSessionById(FileTransferId id)
        {
            FileTransferSession ft;

            return(idToSession.TryGetValue(id, out ft) ? ft : null);
        }
 public void SetId(FileTransferId newId)
 {
     id = newId;
 }