public void RemoveFileFromRoom(string roomName, FileId fileId) { if (string.IsNullOrEmpty(roomName)) { throw new ArgumentException("roomName"); } using (var client = ClientModel.Get()) { var postedFileIndex = client.PostedFiles.FindIndex(f => f.File.Id == fileId); if (postedFileIndex < 0) { return; } var postedFile = client.PostedFiles[postedFileIndex]; client.PostedFiles.RemoveAt(postedFileIndex); postedFile.Dispose(); } var sendingContent = new ServerRemoveFileFromRoomCommand.MessageContent { RoomName = roomName, FileId = fileId }; ClientModel.Client.SendMessage(ServerRemoveFileFromRoomCommand.CommandId, sendingContent); }
/// <summary> /// Удаляет файл с раздачи. /// </summary> /// <param name="roomName">Название комнаты из которой удаляется файл.</param> /// <param name="file">Описание удаляемого файла.</param> public void RemoveFileFromRoom(string roomName, FileDescription file) { if (string.IsNullOrEmpty(roomName)) { throw new ArgumentException("roomName"); } if (file == null) { throw new ArgumentNullException("file"); } using (var client = ClientModel.Get()) { PostedFile postedFile = client.PostedFiles.FirstOrDefault(current => current.File.Equals(file)); if (postedFile == null) { return; } client.PostedFiles.Remove(postedFile); postedFile.Dispose(); } var sendingContent = new ServerRemoveFileFromRoomCommand.MessageContent { RoomName = roomName, File = file }; ClientModel.Client.SendMessage(ServerRemoveFileFromRoomCommand.Id, sendingContent); }
protected override void OnRun(MessageContent content, ClientCommandArgs args) { if (content.File == null) { throw new ArgumentNullException("File"); } if (content.Length <= 0) { throw new ArgumentException("Length <= 0"); } if (content.StartPartPosition < 0) { throw new ArgumentException("StartPartPosition < 0"); } if (string.IsNullOrEmpty(content.RoomName)) { throw new ArgumentException("roomName"); } using (var client = ClientModel.Get()) { if (!client.PostedFiles.Exists(c => c.File.Equals(content.File))) { var fileNotPostContent = new ServerRemoveFileFromRoomCommand.MessageContent { FileId = content.File.Id, RoomName = content.RoomName, }; ClientModel.Client.SendMessage(ServerRemoveFileFromRoomCommand.CommandId, fileNotPostContent); return; } } var sendingContent = new ClientWriteFilePartCommand.MessageContent { File = content.File, StartPartPosition = content.StartPartPosition, RoomName = content.RoomName, }; var partSize = content.File.Size < content.StartPartPosition + content.Length ? content.File.Size - content.StartPartPosition : content.Length; var part = new byte[partSize]; using (var client = ClientModel.Get()) { var sendingFileStream = client.PostedFiles.First(c => c.File.Equals(content.File)).ReadStream; sendingFileStream.Position = content.StartPartPosition; sendingFileStream.Read(part, 0, part.Length); } ClientModel.Peer.SendMessage(args.PeerConnectionId, ClientWriteFilePartCommand.CommandId, sendingContent, part); }
private static void SendFileNotPost(string roomName, FileId fileId) { var fileNotPostContent = new ServerRemoveFileFromRoomCommand.MessageContent { FileId = fileId, RoomName = roomName, }; ClientModel.Client.SendMessage(ServerRemoveFileFromRoomCommand.CommandId, fileNotPostContent); }
public void Perform() { using (var client = ClientModel.Get()) client.Chat.RemovePostedFile(_roomName, _fileId); var sendingContent = new ServerRemoveFileFromRoomCommand.MessageContent { RoomName = _roomName, FileId = _fileId }; ClientModel.Client.SendMessage(ServerRemoveFileFromRoomCommand.CommandId, sendingContent); }
public void RemoveFileFromRoom(string roomName, FileDescription file) { if (string.IsNullOrEmpty(roomName)) throw new ArgumentException("roomName"); if (file == null) throw new ArgumentNullException("file"); using (var client = ClientModel.Get()) { var postedFile = client.PostedFiles.FirstOrDefault(current => current.File.Equals(file)); if (postedFile == null) return; client.PostedFiles.Remove(postedFile); postedFile.Dispose(); } var sendingContent = new ServerRemoveFileFromRoomCommand.MessageContent { RoomName = roomName, File = file }; ClientModel.Client.SendMessage(ServerRemoveFileFromRoomCommand.CommandId, sendingContent); }
public void Run(ClientCommandArgs args) { if (args.PeerConnectionId == null) { return; } var receivedContent = Serializer.Deserialize <MessageContent>(args.Message); if (receivedContent.File == null) { throw new ArgumentNullException("File"); } if (receivedContent.Length <= 0) { throw new ArgumentException("Length <= 0"); } if (receivedContent.StartPartPosition < 0) { throw new ArgumentException("StartPartPosition < 0"); } if (string.IsNullOrEmpty(receivedContent.RoomName)) { throw new ArgumentException("roomName"); } using (var client = ClientModel.Get()) { if (!client.PostedFiles.Exists((current) => current.File.Equals(receivedContent.File))) { var fileNotPostContent = new ServerRemoveFileFromRoomCommand.MessageContent { File = receivedContent.File, RoomName = receivedContent.RoomName, }; ClientModel.Client.SendMessage(ServerRemoveFileFromRoomCommand.Id, fileNotPostContent); return; } } var sendingContent = new ClientWriteFilePartCommand.MessageContent { File = receivedContent.File, StartPartPosition = receivedContent.StartPartPosition, RoomName = receivedContent.RoomName, }; long partSize; if (receivedContent.File.Size < receivedContent.StartPartPosition + receivedContent.Length) { partSize = receivedContent.File.Size - receivedContent.StartPartPosition; } else { partSize = receivedContent.Length; } sendingContent.Part = new byte[partSize]; using (var client = ClientModel.Get()) { var sendingFileStream = client.PostedFiles.First(c => c.File.Equals(receivedContent.File)).ReadStream; sendingFileStream.Position = receivedContent.StartPartPosition; sendingFileStream.Read(sendingContent.Part, 0, sendingContent.Part.Length); } ClientModel.Peer.SendMessage(args.PeerConnectionId, ClientWriteFilePartCommand.Id, sendingContent); }