示例#1
0
        private async Task <FileReceiveReq> CreateFileReceiveReq(FileReqMeta fileRequest, Metadata mMetadata)
        {
            //open stream for all files being received
            List <FileTransReq> fileTrans = new List <FileTransReq>();

            foreach (FileMeta file in fileRequest.Files)
            {
                FileTransReq fileTran = await SetupTransmitionForNewFile(file, fileRequest.BufferSize);

                fileTrans.Add(fileTran);
            }

            FileReceiveReq fileReceivedReq = new FileReceiveReq(fileTrans, mMetadata.SourceIp);

            return(fileReceivedReq);
        }
示例#2
0
        //called when a file part is received
        private async Task ProcessFilePart(FilePartObj filePart, Metadata metadata)
        {
            //check if file part is valid
            if (filePart == null)
            {
                throw new Exception("filePart has not been set.");
            }

            //find file recieve request
            FileReceiveReq fileReceived = GetReceivedFileReqFromMeta(metadata);
            FileTransReq   fileTrans    = fileReceived.GetFileTransReqFromFileMeta(filePart.FileMetadata);

            //dump file data to disk
            await fileReceived.WriteFilePartToFile(filePart);

            //log incoming file
            FileProgUpdate?.Invoke(this, new FileTransferEventArgs(fileTrans, TransDirrection.receiving));
        }
示例#3
0
        private async Task ProcessIncomingFilesRequest(FileReqMeta fileRequest, Metadata mMetadata)
        {
            //determine whether or not to accept the incoming file request
            bool validFileRequest = IsValidFileRequest(fileRequest, mMetadata);

            FileReceiveReq fileReceiveReq = null;

            if (validFileRequest)
            {
                //add to a file recieved request
                fileReceiveReq = await CreateFileReceiveReq(fileRequest, mMetadata);

                receivedFileRequests.Add(fileReceiveReq);
            }

            //send message back to sender
            ReqAck fileRequestResp = new ReqAck(validFileRequest);
            await ObjectManager.SendAsyncTCP(mMetadata.SourceIp, fileRequestResp);
        }