public void SendFile(string path) { using (var fileStream = File.Open(path, FileMode.Open, FileAccess.Read)) { var fileName = Path.GetFileName(path); var fileSize = fileStream.Length; while (fileStream.Position != fileStream.Length) { var firstRead = fileStream.Position == 0; var chunk = ArrayPool <byte> .Shared.Rent(MsgFile.MAX_CHUNK_SIZE); var readBytes = fileStream.Read(chunk, 0, chunk.Length); var msgFile = MsgFile.Create(fileName, fileSize, readBytes, chunk, firstRead); Send(msgFile); ArrayPool <byte> .Shared.Return(chunk); } } }
public async ValueTask SendFile(string path, int tokenId) { var token = Tokens[tokenId]; using (var fileStream = File.Open(path, FileMode.Open, FileAccess.Read)) { var fileSize = fileStream.Length; var chunk = new byte[MsgFile.MAX_CHUNK_SIZE]; while (fileStream.Position != fileStream.Length) { var firstRead = fileStream.Position == 0; var readBytes = await fileStream.ReadAsync(chunk, 0, MsgFile.MAX_CHUNK_SIZE); var msgFile = MsgFile.Create(token, fileSize, readBytes, chunk, firstRead); Send(msgFile); } } Tokens.TryRemove(tokenId, out _); }