//发送者请求上传离线文件 void FileController_FileRequestReceived(string projectID, string senderID, string fileName, ulong totalSize, ESPlus.FileTransceiver.ResumedProjectItem resumedFileItem, string comment) { string accepterID = Comment4OfflineFile.ParseUserID(comment); if (accepterID == null) { return; } string saveFileDir = AppDomain.CurrentDomain.BaseDirectory + "\\OfflineFiles\\";//根据某种策略得到存放文件的路径 if (!Directory.Exists(saveFileDir)) { Directory.CreateDirectory(saveFileDir); } saveFileDir = string.Format("{0}\\{1}\\", saveFileDir, accepterID); if (!Directory.Exists(saveFileDir)) { Directory.CreateDirectory(saveFileDir); } string saveFilePath = saveFileDir + fileName; //给客户端回复同意,并开始准备接收文件。 this.rapidServerEngine.FileController.BeginReceiveFile(projectID, saveFilePath); }
//发送者上传离线文件完成 void FileReceivingEvents_FileTransCompleted(ESPlus.FileTransceiver.TransferingProject project) { string accepterID = Comment4OfflineFile.ParseUserID(project.Comment); if (accepterID == null) { return; } OfflineFileItem item = new OfflineFileItem(); item.AccepterID = accepterID; item.FileLength = project.TotalSize; item.FileName = project.ProjectName; item.SenderID = project.SenderID; item.RelayFilePath = project.LocalSavePath; if (this.rapidServerEngine.UserManager.IsUserOnLine(accepterID)) //如果接收者在线,则直接转发离线文件 { string newProjectID = null; this.rapidServerEngine.FileController.BeginSendFile(item.AccepterID, item.RelayFilePath, Comment4OfflineFile.BuildComment(item.SenderID), out newProjectID); } else { this.globalCache.StoreOfflineFileItem(item); } }
//离线文件发送给接收者完成 void FileSendingEvents_FileTransCompleted(ESPlus.FileTransceiver.TransferingProject project) { var senderID = Comment4OfflineFile.ParseUserID(project.Comment); if (senderID == null) { return; } File.Delete(project.OriginPath); //通知发送方 var contract = new OfflineFileResultNotifyContract(project.AccepterID, project.ProjectName, true); this.rapidServerEngine.CustomizeController.Send(senderID, InformationTypes.OfflineFileResultNotify, CompactPropertySerializer.Default.Serialize<OfflineFileResultNotifyContract>(contract)); }
void do_fileOutter_FileRequestReceived(string projectID, string senderID, string projectName, ulong totalSize, ResumedProjectItem resumedFileItem, string comment) { string offlineFileSenderID = Comment4OfflineFile.ParseUserID(comment); bool offlineFile = (offlineFileSenderID != null); if (offlineFile) { senderID = offlineFileSenderID; } ChatForm form = this.GetChatForm(senderID); form.FileRequestReceived(projectID, offlineFile); form.FlashChatWindow(true); }
void FileController_FileResponseReceived(ESPlus.FileTransceiver.TransferingProject project, bool agree) { string senderID = Comment4OfflineFile.ParseUserID(project.Comment); if (senderID == null) { return; } if (!agree) //客户端拒绝接收离线文件 { File.Delete(project.OriginPath); //删除在服务端保存的离线文件 //通知发送方 OfflineFileResultNotifyContract contract = new OfflineFileResultNotifyContract(project.AccepterID, project.ProjectName, false); this.rapidServerEngine.CustomizeController.Send(senderID, InformationTypes.OfflineFileResultNotify, CompactPropertySerializer.Default.Serialize <OfflineFileResultNotifyContract>(contract)); } }