private void SendNextDesktopRecordFrame(TcpSocketSaeaSession session) { ThreadPool.QueueUserWorkItem((o) => { if (_screen_record_width == 0 || _screen_record_height == 0) { return; } Thread.Sleep(_screen_record_spantime); SendTo(session, MessageHead.C_MAIN_DESKTOPRECORD_FRAME, ImageExtensionHelper.CaptureNoCursorToBytes(new Size(_screen_record_width, _screen_record_height))); }); }
private void SendNextFrameDesktopView(TcpSocketSaeaSession session) { ThreadPool.QueueUserWorkItem(c => { var getframe = GetMessageEntity <DesktopViewGetFramePack>(session); if (getframe.Width == 0 || getframe.Height == 0 || getframe.TimeSpan == 0 || getframe.TimeSpan < 50) { return; } Thread.Sleep(getframe.TimeSpan); SendTo(session, MessageHead.C_MAIN_DESKTOPVIEW_FRAME, new DesktopViewFramePack() { InVisbleArea = getframe.InVisbleArea, ViewData = getframe.InVisbleArea ? ImageExtensionHelper.CaptureNoCursorToBytes(new Size(getframe.Width, getframe.Height)) : new byte[0] }); }); }
private void SendNextFrameDesktopView(TcpSocketSaeaSession session) { ThreadHelper.ThreadPoolStart(c => { var args = c.ConvertTo <object[]>(); var accessId = args[0].ConvertTo <long>(); var getframe = args[1].ConvertTo <DesktopViewGetFramePack>(); if (getframe.Width == 0 || getframe.Height == 0 || getframe.TimeSpan == 0 || getframe.TimeSpan < 50) { return; } Thread.SetData(Thread.GetNamedDataSlot("AccessId"), accessId); Thread.Sleep(getframe.TimeSpan); SendTo(session, MessageHead.C_MAIN_DESKTOPVIEW_FRAME, new DesktopViewFramePack() { InVisbleArea = getframe.InVisbleArea, ViewData = getframe.InVisbleArea ? ImageExtensionHelper.CaptureNoCursorToBytes(new Size(getframe.Width, getframe.Height)) : new byte[0] }); }, new object[] { GetAccessId(session), GetMessageEntity <DesktopViewGetFramePack>(session) }); }
private async Task WriteLibraryToFileStreamAsync(FileStream fileStream, Library entity) { if (fileStream == null) { throw new Exception("File creation error"); } // write all owners in one string string owners = ""; for (int i = 0; i < entity.Owners.Count - 1; i++) { owners += entity.Owners[i].ToString() + ','; } owners += entity.Owners[entity.Owners.Count - 1].ToString(); // create library element var libraryElement = new XElement("library", new XAttribute("name", entity.Name), new XAttribute("description", entity.Description), new XAttribute("owners", owners)); // create tags elements var tagsElement = new XElement("tags"); foreach (var t in entity.Tags) { var tagElement = new XElement("tag", new XAttribute("name", t.Name), new XAttribute("description", t.Description), new XAttribute("color", t.Color)); tagsElement.Add(tagElement); } libraryElement.Add(tagsElement); // create images elements var imagesElement = new XElement("images"); foreach (var i in entity.Images) { // write all tags to one string string tags = ""; for (int it = 0; it < i.Tags.Count - 1; it++) { tags += i.Tags[it].Name + ','; } tags += i.Tags[i.Tags.Count - 1].Name; var imageFileElement = new XElement("imageFile", new XAttribute("name", i.Name), new XAttribute("extension", ImageExtensionHelper.ExtensionToString(i.Extension)), new XAttribute("source", i.FullName), new XAttribute("tags", tags)); imagesElement.Add(imageFileElement); } libraryElement.Add(imagesElement); // save elements to the file try { using (var streamWriter = new StreamWriter(fileStream)) { var xmlWriter = new XmlTextWriter(streamWriter); xmlWriter.Formatting = Formatting.Indented; xmlWriter.Indentation = 4; await Task.Run(() => libraryElement.Save(xmlWriter)); } } catch (Exception e) { Logger.LogError(e, e.Message); } }
private async Task <Library> ReadLibraryFromFileStreamAsync(FileStream fileStream) { var tags = new List <Tag>(); var images = new List <ImageFile>(); var library = new Library(); if (fileStream.Length == 0) { throw new ArgumentException("Given stream is empty"); } XmlReaderSettings settings = new XmlReaderSettings(); settings.DtdProcessing = DtdProcessing.Parse; using (var reader = XmlReader.Create(fileStream, settings)) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "library": { var libraryElement = await Task.Run(() => XNode.ReadFrom(reader)) as XElement; library.Name = libraryElement.Attribute("name").Value; library.FullName = fileStream.Name; library.Description = libraryElement.Attribute("description").Value; library.Owners = new List <Guid>(); foreach (var t in libraryElement.Attribute("owners").Value.Split(',')) { library.Owners.Add(Guid.Parse(t)); } } break; case "tag": { var tagElement = await Task.Run(() => XNode.ReadFrom(reader)) as XElement; var tag = new Tag(); tag.Name = tagElement.Attribute("name").Value; tag.Description = tagElement.Attribute("description").Value; tag.Color = tagElement.Attribute("color").Value; tags.Add(tag); } break; case "imageFile": { var imageElement = await Task.Run(() => XNode.ReadFrom(reader)) as XElement; var imageTags = new List <Tag>(); foreach (var t in imageElement.Attribute("tags").Value.Split(',')) { imageTags.Add(tags.Find(x => x.Name == t)); } var fullName = imageElement.Attribute("source").Value; var imageFileInfo = FileService.GetFileInfo(fullName); var imageFile = ImageFileBuilder .StartBuilding() .WithName(imageElement.Attribute("name").Value) .WithExtension(ImageExtensionHelper.GetExtension(imageElement.Attribute("extension").Value)) .WithFullName(fullName) .WithLibraryFullName(library.FullName) .WithCreationTime(imageFileInfo.CreationTimeUtc) .WithLastAccessTime(imageFileInfo.LastAccessTimeUtc) .WithLastWriteTime(imageFileInfo.LastWriteTimeUtc) .WithSize(imageFileInfo.Length) .WithTags(imageTags) .Build(); images.Add(imageFile); } break; } } } } library.Tags = tags; library.Images = images; return(library); }
public IImageFileBuilder WithExtension(string extension) { ImageFile.Extension = ImageExtensionHelper.GetExtension(extension); return(this); }
public async Task <Library> ReadLibraryFromStreamAsync(Stream fileStream, Origin origin) { var tags = new List <Tag>(); var images = new List <ImageFile>(); var library = new Library(); if (fileStream.Length == 0) { throw new ArgumentException("Given stream is empty"); } XmlReaderSettings settings = new XmlReaderSettings(); settings.DtdProcessing = DtdProcessing.Parse; using (var reader = XmlReader.Create(fileStream, settings)) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "library": { var libraryElement = await Task.Run(() => XNode.ReadFrom(reader)) as XElement; library.Name = libraryElement.Attribute("name").Value; library.Description = libraryElement.Attribute("description").Value; library.Origin = origin; if (fileStream is FileStream) { library.FullName = (fileStream as FileStream).Name; } } break; case "tag": { var tagElement = await Task.Run(() => XNode.ReadFrom(reader)) as XElement; var tag = new Tag(); tag.Name = tagElement.Attribute("name").Value; tag.Description = tagElement.Attribute("description").Value; tag.Origin = origin; tag.FullName = "Local\\" + library.Name + "\\" + tag.Name + "\\"; tag.Color = tagElement.Attribute("color").Value; tags.Add(tag); } break; case "imageFile": { var imageElement = await Task.Run(() => XNode.ReadFrom(reader)) as XElement; var imageFile = ImageFileBuilder .StartBuilding() .WithName(imageElement.Attribute("name").Value) .WithExtension(ImageExtensionHelper.GetExtension(imageElement.Attribute("extension").Value)) .WithFullName(imageElement.Attribute("source").Value) .WithCreationTime(DateTime.Parse(imageElement.Attribute("creationTime").Value)) .WithLastAccessTime(DateTime.Parse(imageElement.Attribute("lastAccessTime").Value)) .WithLastWriteTime(DateTime.Parse(imageElement.Attribute("lastWriteTime").Value)) .WithSize(long.Parse(imageElement.Attribute("size").Value)) .From(origin) .Build(); foreach (var t in imageElement.Attribute("tags").Value.Split(',')) { imageFile.Tags.Add(tags.Find(x => x.Name == t)); } images.Add(imageFile); } break; } } } } library.Tags = tags; library.Images = images; return(library); }
public async Task <ImageFile> AddAsync(Image image) { var libraryDirectory = FileService.GetFileInfo(image.ImageFile.LibraryFullName).Directory.FullName; if (!libraryDirectory.EndsWith("\\")) { libraryDirectory += "\\"; } var filePath = FileSystemInfo.FileSystemInfo.RootDirectory + libraryDirectory + FileSystemInfo.FileSystemInfo.ImagesDirectory + Guid.NewGuid().ToString() + ImageExtensionHelper.ExtensionToString(image.ImageFile.Extension); var path = await Task.Run(() => FileService.AddFile(filePath, image.ImageContent)); var fileInfo = FileService.GetFileInfo(path); var imageFile = ImageFileBuilder .StartBuilding() .WithName(image.ImageFile.Name) .WithExtension(image.ImageFile.Extension) .WithFullName(path) .WithLibraryFullName(image.ImageFile.LibraryFullName) .WithCreationTime(fileInfo.CreationTimeUtc) .WithLastAccessTime(fileInfo.LastAccessTimeUtc) .WithLastWriteTime(fileInfo.LastWriteTimeUtc) .WithSize(fileInfo.Length) .WithTags(new List <Tag>()) .Build(); Logger.LogInformation("New added image: " + imageFile.FullName); return(imageFile); }
public async Task <ImageFile> UpdateAsync(ImageFile entity) { if (!FileService.FileExists(entity.FullName)) { throw new ContentNotFoundException("Couldn't find specified file."); } await Task.Run(() => FileService.RenameFile(entity.FullName, entity.Name + ImageExtensionHelper.ExtensionToString(entity.Extension))); var oldFileInfo = await Task.Run(() => FileService.GetFileInfo(entity.FullName)); var newFileInfo = await Task.Run(() => FileService.GetFileInfo(oldFileInfo.Directory.FullName + "\\" + entity.Name + ImageExtensionHelper.ExtensionToString(entity.Extension))); var imageFile = ImageFileBuilder .StartBuilding() .WithName(newFileInfo.Name) .WithExtension(newFileInfo.Extension) .WithFullName(newFileInfo.FullName) .WithLibraryFullName(entity.LibraryFullName) .WithCreationTime(newFileInfo.CreationTimeUtc) .WithLastAccessTime(newFileInfo.LastAccessTimeUtc) .WithLastWriteTime(newFileInfo.LastWriteTimeUtc) .WithSize(newFileInfo.Length) .WithTags(entity.Tags) .Build(); Logger.LogInformation("Updated imagefile info: " + imageFile.FullName); return(imageFile); }