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(); } }
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); } } }
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); } } }
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); }); }
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"); } } }
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); }); }
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"); } }
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; }
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; }
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); } }
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); } }
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); }); }
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); }); }
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); } } }
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); }); }
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); }); }
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); }
public FileTransferSession GetSessionById(FileTransferId id) { FileTransferSession ft; return(idToSession.TryGetValue(id, out ft) ? ft : null); }
public void SetId(FileTransferId newId) { id = newId; }