示例#1
0
        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;
            }
            }
        }
示例#2
0
        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;
            }
            }
        }