public async Task <string> ReceiveFileAsync() { // Receive file length var fileSize = await _networkCommunication.ReceiveLongAsync(); // Receive file chunks var path = Path.GetTempFileName(); await using var fileStream = File.OpenWrite(path); var read = 0; byte[] buffer = null; while (fileSize - read > ProtocolSpecification.FileChunkSize) { buffer = await _networkCommunication.ReceiveBytesAsync(ProtocolSpecification.FileChunkSize); await fileStream.WriteAsync(buffer, 0, ProtocolSpecification.FileChunkSize); read += ProtocolSpecification.FileChunkSize; } buffer = await _networkCommunication.ReceiveBytesAsync((int)(fileSize - read)); await fileStream.WriteAsync(buffer, 0, (int)(fileSize - read)); return(path); }
public async Task <Message> ReceiveMessageAsync() { var messageType = (MessageType)(await _networkCommunication.ReceiveBytesAsync(1))[0]; var messageId = (MessageId)await _networkCommunication.ReceiveShortAsync(); switch (messageId, messageType) {