コード例 #1
0
        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)));
            });
        }
コード例 #2
0
        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]
                });
            });
        }
コード例 #3
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) });
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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);
        }
コード例 #6
0
 public IImageFileBuilder WithExtension(string extension)
 {
     ImageFile.Extension = ImageExtensionHelper.GetExtension(extension);
     return(this);
 }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }