protected override async Task ProcessParsedCommand(Message message) { await base.ProcessParsedCommand(message); switch (message.Type) { case PeerCommandType.DOWNLOAD_FILE: { var downloadFileMessage = (DownloadFileMessage)message; OnDownloadFile(downloadFileMessage); break; } case PeerCommandType.GET_KIND: { var kindOfConnectionMessage = new KindOfConnectionMessage(ConnectionType.CLIENT); Send(kindOfConnectionMessage); break; } case PeerCommandType.LIST_FILES: { var listFilesMessage = (ListFilesMessage)message; OnReceiveFileList(listFilesMessage.Files); break; } } }
protected override async Task ProcessParsedCommand(Message message) { await base.ProcessParsedCommand(message); switch (message.Type) { case PeerCommandType.CONNECTIONS: { var conectionsMessage = (ConnectionMessage)message; OnReceiveNumberOfConnections(conectionsMessage.ConnectionsAmount); break; } case PeerCommandType.DOWNLOAD_FILE_SLICE: { var downloadFileSliceMessage = (DownloadFileSliceMessage)message; OnDownloadFileSlice(downloadFileSliceMessage.File); break; } case PeerCommandType.GET_CONNECTIONS: { var numberOfConnections = await serverInstance.GetNumberOfConnectionsWithoutProcesor(ConnectedPeerInfo.Id); var connectionPeerMessage = new ConnectionMessage(numberOfConnections); Send(connectionPeerMessage); break; } case PeerCommandType.GET_FILE: { var fileMessage = (GetFileMessage)message; var file = await serverInstance.GetAllSlicesOfFile(fileMessage.FileName); var downloadFileMessage = new DownloadFileMessage(file); Send(downloadFileMessage); break; } case PeerCommandType.GET_FILE_SLICE: { var fileMessage = (GetFileSliceMessage)message; var file = await serverInstance.GetSlicesOfFile(fileMessage.FileName, ConnectedPeerInfo.Id); var downloadFileMessage = new DownloadFileSliceMessage(file); Send(downloadFileMessage); break; } case PeerCommandType.GET_KIND: { var kindOfConnectionMessage = new KindOfConnectionMessage(ConnectionType.PEER); Send(kindOfConnectionMessage); break; } case PeerCommandType.GET_LIST: { var files = serverInstance.GetFiles(); var listFilesMessage = new ListFilesMessage(files); Send(listFilesMessage); break; } case PeerCommandType.GET_INFO: { Send(new PeerInfoMessage(serverInstance.Info)); break; } case PeerCommandType.PEER_INFO: { var infoMessage = (PeerInfoMessage)message; OnReceivePeerInfo(infoMessage.Info); break; } case PeerCommandType.UPLOAD_FILE: { var uploadFileMessage = (UploadFileMessage)message; Console.WriteLine($"Receive file to upload => {uploadFileMessage.FileName}, {uploadFileMessage.FileBytes.Length}"); await serverInstance.UploadFile(uploadFileMessage.FileName, uploadFileMessage.FileBytes); break; } case PeerCommandType.UPLOAD_FILE_SLICE: { var fileMessage = (UploadFileSliceMessage)message; var file = fileMessage.File; await serverInstance.SaveAndShare(file, ConnectedPeerInfo.Id); break; } } }