public async Task Pull(string FilePath) { WriteMessage Connect_WriteMessage = await Connect(); OkayMessage Open_OkayMessage = await Open(); OkayMessage SendStat_OkayMessage = await SendStat(FilePath); StatSyncMessage RecieveStat_StatSyncMessage = await RecieveStat(); OkayMessage SendRecv_OkayMessage = await SendRecv(FilePath); FileStream FileStream = File.OpenWrite(FilePath.Split('/').Last()); DataSyncMessage DataSyncMessage = await RecieveData(); //Files Smaller Than 64K Fits inside the first DataSyncMessage Packet. if (DataSyncMessage.EndOfFile == false) { WriteMessage WriteMessage; string EOF; while (true) { WriteMessage = await Flows.RecieveStreamingPayloadFlow <WriteMessage>(LocalID, RemoteID); await FileStream.WriteAsync(WriteMessage.Payload, 0, WriteMessage.Payload.Length); EOF = Encoding.UTF8.GetString(WriteMessage.Payload.Skip(WriteMessage.Payload.Length - 8).Take(4).ToArray()); if (EOF == "DONE") { break; } } } else { await FileStream.WriteAsync(DataSyncMessage.Payload, 0, DataSyncMessage.Payload.Length); } await FileStream.FlushAsync(); FileStream.Close(); OkayMessage QuiteOkay = await Flows.WriteFlow <OkayMessage>(LocalID, RemoteID, "QUIT\0\0\0\0"); CloseMessage Close = await Flows.RecieveCloseFlow <CloseMessage>(LocalID, RemoteID); }
private async Task <OkayMessage> SendStat(string FilePath) { StatSyncMessage Stat_Request = new StatSyncMessage(LocalID, RemoteID, FilePath); return(await Flows.WriteFlow <OkayMessage>(Stat_Request.Message)); }