public void EnumConvertion()
        {
            var db = DatabaseGenerator.Get();

            db.Setting.Serialization.SerializeEnumAsInteger = false;

            var stringValue = new DocumentSerializer(db).SerializeWithoutReader(ProductStatus.Available);

            Assert.Equal(stringValue, "\"Available\"");

            db.Setting.Serialization.SerializeEnumAsInteger = true;

            var integerValue = new DocumentSerializer(db).SerializeWithoutReader(ProductStatus.SoldOut);

            Assert.Equal(integerValue, "1");
        }
        public void CustomConverter()
        {
            var db = DatabaseGenerator.Get();

            db.Setting.Serialization.Converters.Add(new StringEnumConverter());

            var stringValue = new DocumentSerializer(db).SerializeWithoutReader(ProductStatus.Available);

            Assert.Equal(stringValue, "\"Available\"");

            db.Setting.Serialization.Converters.Clear();

            var integerValue = new DocumentSerializer(db).SerializeWithoutReader(ProductStatus.Available);

            Assert.Equal(integerValue, "0");
        }
示例#3
0
 protected override async Task SerializeToStreamAsync(Stream stream, TransportContext context)
 {
     var jObject = data as JObject;
     if (jObject != null)
     {
         var streamWriter = new StreamWriter(stream);
         await streamWriter.WriteAsync(jObject.ToString(Formatting.None)).ConfigureAwait(false);
         await streamWriter.FlushAsync().ConfigureAwait(false);
     }
     else
     {
         var docSerializer = new DocumentSerializer(db);
         var streamWriter = new StreamWriter(stream);
         var jsonWriter = new JsonTextWriter(streamWriter);
         var serializer = docSerializer.CreateJsonSerializer();
         serializer.Serialize(jsonWriter, data);
         await streamWriter.FlushAsync().ConfigureAwait(false);
     }
 }
示例#4
0
        protected override async Task SerializeToStreamAsync(Stream stream, TransportContext context)
        {
            var jObject = data as JObject;

            if (jObject != null)
            {
                var streamWriter = new StreamWriter(stream);
                var jsonWriter   = new JsonTextWriter(streamWriter);
                jObject.WriteTo(jsonWriter);
                await streamWriter.FlushAsync().ConfigureAwait(false);
            }
            else
            {
                var docSerializer = new DocumentSerializer(db);
                var streamWriter  = new StreamWriter(stream);
                var jsonWriter    = new JsonTextWriter(streamWriter);
                var serializer    = docSerializer.CreateJsonSerializer();
                serializer.Serialize(jsonWriter, data);
                await streamWriter.FlushAsync().ConfigureAwait(false);
            }
        }
示例#5
0
        public async Task <TypeRelationshipDocument> AnalyzeInheritanceAsync(string assemblyLocation, bool ignoreDotNetTypes, TypeDescriptor typeToAnalyse, CancellationToken cancellationToken)
        {
            var msg = new GetInheritanceGraphMessage
            {
                IgnoreDotNetTypes = ignoreDotNetTypes,
                AssemblyLocation  = assemblyLocation,
                TypeToAnalyze     = typeToAnalyse
            };

            var response = await this.ProcessAsync(typeof(InheritanceActor), msg, cancellationToken);

            if (response is InheritanceGraphMessage m)
            {
                var serializer = new DocumentSerializer();
                return(serializer.Deserialize <TypeRelationshipDocument>(m.Document));
            }
            else
            {
                return(null);
            }
        }
示例#6
0
 public ContactVariableProviderTests()
 {
     ContactExtension = Substitute.For <IContactExtension>();
     Logger           = Substitute.For <ILogger>();
     Configuration    = Substitute.For <IConfiguration>();
     Application      = Substitute.For <Application>();
     InputContext     = new Dictionary <string, object>();
     Context.InputContext.Returns(InputContext);
     Contact = new Contact()
     {
         Identity = "*****@*****.**",
         Name     = "John Doe",
         Address  = "184 Alpha Avenue"
     };
     ContactExtension.GetAsync(Contact.Identity, CancellationToken).Returns(Contact);
     Context.UserIdentity.Returns(Contact.Identity);
     Context.OwnerIdentity.Returns(new Identity("application", "domain.com"));
     Application.Identifier = "application";
     Application.Domain     = "domain.com";
     DocumentSerializer     = new DocumentSerializer(new DocumentTypeResolver());
 }
示例#7
0
        private async Task <DocIdGenerator> CreateDocIdGenerator()
        {
            if (_file.Length == 0)
            {
                return(new DocIdGenerator(0));
            }

            var initialPos = _file.Position;

            try
            {
                var lastBatch = await DocumentSerializer.DeserializeBatchFromRightToLeft(_file);

                var lastDoc = lastBatch[lastBatch.Count - 1];
                return(new DocIdGenerator(lastDoc.Id));
            }
            finally
            {
                _file.Position = initialPos;
            }
        }
示例#8
0
        public async Task ProcessAsync_ResourceSuccessCommand_CallsTransportAndReturnsOKHttpResponse()
        {
            // Arrange
            TransportSession
            .Setup(t => t.ProcessCommandAsync(It.Is <Command>(c => c.Id == RequestCommand.Id && c.Uri.Equals(RequestCommand.Uri)), CancellationToken))
            .ReturnsAsync(ResourceSuccessResponseCommand)
            .Verifiable();

            DocumentSerializer
            .Setup(s => s.Serialize(ResourceSuccessResponseCommand.Resource))
            .Returns(ResponseContent)
            .Verifiable();

            // Act
            var actual = await Target.ProcessAsync(SendCommandHttpRequest, It.IsAny <UriTemplateMatch>(), TransportSession.Object, CancellationToken);

            // Assert
            TransportSession.Verify();
            DocumentSerializer.Verify();
            actual.StatusCode.ShouldBe(HttpStatusCode.OK);
        }
示例#9
0
        private void btnOpen_Click(object sender, EventArgs e)
        {
            ofd.Filter   = "sirius data files (*.sirius)|*.sirius|dxf cad files (*.dxf)|*.dxf|All Files (*.*)|*.*";
            ofd.Title    = "Open File";
            ofd.FileName = string.Empty;
            DialogResult result = ofd.ShowDialog(this);

            if (result == DialogResult.OK)
            {
                string ext = Path.GetExtension(ofd.FileName);
                if (0 == string.Compare(ext, ".dxf", true))
                {
                    trvEntity.SuspendLayout();
                    var doc = DocumentSerializer.OpenDxf(ofd.FileName);
                    trvEntity.ResumeLayout();
                    if (null == doc)
                    {
                        MessageBox.Show($"Fail to open : {ofd.FileName}", "File Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    this.Document = doc;
                }
                else if (0 == string.Compare(ext, ".sirius", true))
                {
                    trvEntity.SuspendLayout();
                    var doc = DocumentSerializer.OpenSirius(ofd.FileName);
                    trvEntity.ResumeLayout();
                    if (null == doc)
                    {
                        MessageBox.Show($"Fail to open : {ofd.FileName}", "File Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    this.Document = doc;
                }
                else
                {
                    MessageBox.Show($"Unsupported file extension : {ofd.FileName}", "File Type Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
        public DocumentDatabase(IndexModel indexModel)
        {
            var path = $"{AppDomain.CurrentDomain.BaseDirectory}data/{indexModel.DatabaseName}";

            FileOperations.CheckOrCreateDirectory(path);
            path         += $"/{indexModel.IndexName}";
            _dbFileStream = new FileStream(path + ".col", FileMode.OpenOrCreate, FileAccess.ReadWrite,
                                           FileShare.None, 4096);
            _indexFileStream = new FileStream(path + ".pidx", FileMode.OpenOrCreate, FileAccess.ReadWrite,
                                              FileShare.None, 4096);
            _secondaryFileStream = new FileStream(path + ".sidx", FileMode.OpenOrCreate, FileAccess.ReadWrite,
                                                  FileShare.None, 4096);

            // Construct the RecordStorage that use to store main cow data
            _records = new RecordStorage(new BlockStorage(_dbFileStream, 4096));

            // Construct the primary and secondary indexes
            _index = new Tree <Guid, uint>(
                new TreeDiskNodeManager <Guid, uint>(
                    new GuidSerializer(),
                    new TreeUIntSerializer(),
                    new RecordStorage(new BlockStorage(_indexFileStream, 4096))
                    )
                );

            _secondaryIndex = new Tree <string, Dictionary <string, Guid> >(
                new TreeDiskNodeManager <string, Dictionary <string, Guid> >(
                    new StringSerializer(),
                    new DictSerializer(),
                    new RecordStorage(
                        new BlockStorage(_secondaryFileStream, 4096)
                        )
                    ),
                true);

            _documentSerializer = new DocumentSerializer();
            _indexingOperations = new IndexingOperations();
            IndexModel          = indexModel;
        }
示例#11
0
        // T can be any type that derived from BaseResult and results are not change tracked
        // method could be used if we dont want to change track T here
        public async Task <ICommandResult <T> > RequestMergedResult <T>(object data = null)
        {
            DistinctCommandResult <T> result = new DistinctCommandResult <T>();
            var response = await SendCommandAsync(data).ConfigureAwait(false);

            using (var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
            {
                var serializer = new DocumentSerializer(db);

                result.Result     = serializer.Deserialize <T>(stream);
                result.BaseResult = result.Result as BaseResult;

                if (!response.IsSuccessStatusCode)
                {
                    result.Result = default(T);
                }
            }

            new BaseResultAnalyzer(db).ThrowIfNeeded(result.BaseResult);

            return(result);
        }
示例#12
0
        private void AssertToStringEquals(string expected, MdDocument document, MdSerializationOptions?options = null)
        {
            using (var writer = new StringWriter())
            {
                var serializer = new DocumentSerializer(writer, options);
                serializer.Serialize(document);

                var actual = writer.ToString();

                m_OutputHelper.WriteLine("--------------");
                m_OutputHelper.WriteLine("Expected:");
                m_OutputHelper.WriteLine("--------------");
                m_OutputHelper.WriteLine(expected);
                m_OutputHelper.WriteLine("--------------");
                m_OutputHelper.WriteLine("Actual:");
                m_OutputHelper.WriteLine("--------------");
                m_OutputHelper.WriteLine(actual);
                m_OutputHelper.WriteLine("--------------");

                Assert.Equal(expected, actual);
            }
        }
示例#13
0
        public async Task <List <Document> > GetChunk(long offset)
        {
            var compression = new CompressionUtils();

            if (offset >= _file.Length)
            {
                // should NEVER happen
                throw new InvalidOperationException("Specified position doesn't exist in data file");
            }

            using (var file = new FileStream(_filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                var segment = await compression.ReadWithDecompression(file, offset);

                using (var ms = new MemoryStream(segment.Array, segment.Offset, segment.Count))
                {
                    var batch = await DocumentSerializer.DeserializeBatch(ms).ConfigureAwait(false);

                    return(batch);
                }
            }
        }
        public T Deserialize <T>(string json)
        {
            if (string.IsNullOrEmpty(json))
            {
                return(default(T));
            }

            var    type     = typeof(T);
            object document = null;

            using (var reader = new StringReader(json))
                document = DocumentSerializer.Deserialize(reader, type);

            using (var reader = new StringReader(json))
                if (!type.IsInstanceOfType(typeof(BaseDocument)))
                {
                    var key      = KeyAccessor.GetId(document, type);
                    var metadata = (DocumentMetadata)MetadataSerialzier.Deserialize(reader, typeof(DocumentMetadata));
                    MetadataProvider.SetMetadata(key, metadata);
                }
            return((T)document);
        }
示例#15
0
        private static bool DrawByMarker(IRtc rtc, ILaser laser, IMarker marker, IMotor motor)
        {
            #region load from sirius file
            var dlg = new OpenFileDialog();
            dlg.Filter = "sirius data files (*.sirius)|*.sirius|dxf cad files (*.dxf)|*.dxf|All Files (*.*)|*.*";
            dlg.Title  = "Open to data file";
            DialogResult result = dlg.ShowDialog();
            if (result != DialogResult.OK)
            {
                return(false);
            }
            string    ext = Path.GetExtension(dlg.FileName);
            IDocument doc = null;
            if (0 == string.Compare(ext, ".dxf", true))
            {
                doc = DocumentSerializer.OpenDxf(dlg.FileName);
            }
            else if (0 == string.Compare(ext, ".sirius", true))
            {
                doc = DocumentSerializer.OpenSirius(dlg.FileName);
            }
            #endregion

            Debug.Assert(null != doc);
            // 마커 가공 준비
            marker.Ready(new MarkerArgDefault()
            {
                Document = doc,
                Rtc      = rtc,
                Laser    = laser,
                MotorZ   = motor,
            });
            // 하나의 오프셋 정보 추가
            marker.MarkerArg.Offsets.Clear();
            marker.MarkerArg.Offsets.Add(Offset.Zero);
            // 가공 시작
            return(marker.Start());
        }
示例#16
0
        public async Task CommitTran(Tran tran)
        {
            await _commitLock.WaitAsync().ConfigureAwait(false);

            try
            {
                using (Measured.Operation("wal_commit"))
                {
                    foreach (var doc in tran.Documents)
                    {
                        doc.Id = _docIdGenerator.GetNextId();
                    }

                    await DocumentSerializer.SerializeBatch(tran.Documents, _file).ConfigureAwait(false);

                    await _file.FlushAsync().ConfigureAwait(false);
                }
            }
            finally
            {
                _commitLock.Release();
            }
        }
示例#17
0
        private async Task <DataFileCommitInfo> Commit()
        {
            var compression = new CompressionUtils();
            var commitInfo  = new DataFileCommitInfo();

            while (_nonPersistedQ.Count >= _batchSize)
            {
                var batchStartPos = _file.Position;
                var nextBatch     = ReadNextBatchFromQueue();

                using (var ms = new MemoryStream())
                {
                    await DocumentSerializer.SerializeBatch(nextBatch, ms).ConfigureAwait(false);

                    await compression.CopyWithCompression(ms, _file).ConfigureAwait(false);

                    await _file.FlushAsync().ConfigureAwait(false);
                }

                commitInfo.RecordCommittedBatch(batchStartPos, nextBatch);
            }

            return(commitInfo);
        }
示例#18
0
        public void Execute()
        {
            var deleteSet = new HashSet <ulong>(
                _pks.Select(x => x.ToHash()).ToList());

            foreach (var ix in _ixs)
            {
                var dataFile = Path.Combine(_directory, ix.Key + ".rdb");

                using (var stream = new FileStream(dataFile, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
                {
                    stream.Seek(ix.Value.DocHashOffset, SeekOrigin.Begin);

                    var buffer = new byte[DocumentSerializer.SizeOfDocHash()];

                    while (stream.Position < ix.Value.DocAddressesOffset)
                    {
                        stream.Read(buffer, 0, buffer.Length);

                        var hash = DocumentSerializer.DeserializeDocHash(buffer);

                        if (deleteSet.Contains(hash.Hash))
                        {
                            stream.Position = stream.Position - buffer.Length;
                            buffer[0]       = 1;
                            stream.Write(buffer, 0, buffer.Length);
                            deleteSet.Remove(hash.Hash);
                        }
                        if (deleteSet.Count == 0)
                        {
                            break;
                        }
                    }
                }
            }
        }
示例#19
0
        public async Task <List <ICommandResult <T> > > RequestMultipleMergedResult <T>(object data = null)
        {
            var results  = new List <ICommandResult <T> >();
            var response = await SendCommandAsync(data).ConfigureAwait(false);

            using (var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
            {
                var serializer = new DocumentSerializer(db);

                var _results = serializer.Deserialize <List <T> >(stream);
                foreach (var r in _results)
                {
                    var distinctResult = new DistinctCommandResult <T>
                    {
                        Result     = r,
                        BaseResult = r as BaseResult
                    };

                    results.Add(distinctResult);
                }
            }

            return(results);
        }
示例#20
0
        public async Task <AnalysisDocument> AnalyseAsync(AnalysisRequest request, CancellationToken cancellationToken)
        {
            var msg = new AnalysisMessage
            {
                Spec = SpecUtils.Zip(request.Spec),
                PackagesToAnalyze           = request.PackagesToAnalyze,
                OutputFile                  = Path.GetTempFileName(),
                UsedTypesOnly               = request.UsedTypesOnly,
                AllEdges                    = request.AllEdges,
                CreateClustersForNamespaces = request.CreateClustersForNamespaces
            };

            if (request.Spec.Length * 2 > 4000000)
            {
                throw new NotSupportedException("Spec is too big");
            }

            var response = await this.ProcessAsync(typeof(PackageAnalysisActor), msg, cancellationToken);

            try
            {
                if (response is AnalysisResponse m)
                {
                    var serializer = new DocumentSerializer();
                    return(serializer.Deserialize <AnalysisDocument>(m.File));
                }
                else
                {
                    return(null);
                }
            }
            finally
            {
                File.Delete(msg.OutputFile);
            }
        }
示例#21
0
        static void Main(string[] args)
        {
            SpiralLab.Core.Initialize();

            #region initialize RTC
            //var rtc = new RtcVirtual(0); //create Rtc for dummy
            var rtc = new Rtc5(0); //create Rtc5 controller
            //var rtc = new Rtc6(0); //create Rtc6 controller
            //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기)
            //var rtc = new Rtc6SyncAxis(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syncAxis", "syncAXISConfig.xml")); //실험적인 상태 (Scanlab XLSCAN 솔류션)

            float fov            = 60.0f;                            // scanner field of view : 60mm
            float kfactor        = (float)Math.Pow(2, 20) / fov;     // k factor (bits/mm) = 2^20 / fov
            var   correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5");
            rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); //default correction file
            rtc.CtlFrequency(50 * 1000, 2);                          //laser frequency : 50KHz, pulse width : 2usec
            rtc.CtlSpeed(100, 100);                                  // default jump and mark speed : 100mm/s
            rtc.CtlDelay(10, 100, 200, 200, 0);                      //scanner and laser delays
            #endregion

            #region initialize Laser (virtual)
            var laser = new LaserVirtual(0, "virtual", 20);  // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성)
            //var laser = new IPGYLP(0, "IPG YLP", 1, 20);
            //var laser = new JPTTypeE(0, "JPT Type E", 1, 20);
            //var laser = new SPIG4(0, "SPI G3/4", 1, 20);
            //var laser = new PhotonicsIndustryDX(0, "PI", 1, 20);
            //var laser = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20);
            //var laser = new CoherentAviaLX(0, "Avia LX", 1, 20);
            laser.Rtc = rtc;
            laser.Initialize();
            laser.CtlPower(2);
            #endregion

            #region create entities
            // 문서 생성
            var doc = new DocumentDefault("Unnamed");
            // 레이어 생성및 문서에 추가
            var layer = new Layer("default");
            // 펜 개체(Entity) 생성및 레이어에 추가
            var pen = new PenDefault()
            {
                Frequency           = 100 * 1000, //주파수 Hz
                PulseWidth          = 2,          //펄스폭 usec
                LaserOnDelay        = 0,          // 레이저 시작 지연 usec
                LaserOffDelay       = 0,          // 레이저 끝 지연 usec
                ScannerJumpDelay    = 100,        // 스캐너 점프 지연 usec
                ScannerMarkDelay    = 200,        // 스캐너 마크 지연 usec
                ScannerPolygonDelay = 0,          // 스캐너 폴리곤 지연 usec
                JumpSpeed           = 500,        // 스캐너 점프 속도 mm/s
                MarkSpeed           = 500,        // 스캐너 마크 속도 mm/s
            };
            layer.Add(pen);
            // 선 개체 레이어에 추가
            layer.Add(new Line(0, 0, 10, 20));
            // 원 개체 레이어에 추가
            layer.Add(new Circle(0, 0, 10));
            // 나선 개체 레이어에 추가
            layer.Add(new Spiral(-20.0f, 0.0f, 0.5f, 2.0f, 5, true));
            //레이어의 모든 개채들 내부 데이타 계산및 갱신
            layer.Regen();
            // 문서에 레이어 추가
            doc.Layers.Add(layer);

            // 문서를 지정된 파일에 저장
            DocumentSerializer.Save(doc, "test.sirius");
            #endregion

            ConsoleKeyInfo key;
            do
            {
                Console.WriteLine($"{Environment.NewLine}");
                Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (http://spirallab.co.kr)");
                Console.WriteLine($"{Environment.NewLine}");
                Console.WriteLine("'D' : draw entities by pen");
                Console.WriteLine("'Q' : quit");
                Console.WriteLine($"{Environment.NewLine}");
                Console.Write("select your target : ");
                key = Console.ReadKey(false);
                if (key.Key == ConsoleKey.Q)
                {
                    break;
                }
                Console.WriteLine($"{Environment.NewLine}");
                switch (key.Key)
                {
                case ConsoleKey.D:
                    Console.WriteLine("WARNING !!! LASER IS BUSY ...");
                    var timer = Stopwatch.StartNew();
                    DrawForFieldCorrection(laser, rtc, doc);
                    Console.WriteLine($"processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s");
                    break;
                }
            } while (true);

            rtc.Dispose();
        }
示例#22
0
 public SendRawMessageActionTests()
 {
     Sender             = Substitute.For <ISender>();
     DocumentSerializer = new DocumentSerializer();
 }
示例#23
0
        static void Main(string[] args)
        {
            SpiralLab.Core.Initialize();

            #region initialize RTC
            IRtc rtc = new RtcVirtual(0);                            ///가상 rtc 제어기 생성
            //IRtc rtc = new Rtc5(0); ///rtc 5 제어기 생성
            double fov     = 60.0;                                   /// scanner field of view : 60mm
            double kfactor = Math.Pow(2, 20) / fov;                  /// k factor (bits/mm) = 2^20 / fov
            rtc.Initialize(kfactor, LaserMode.Yag1, "cor_1to1.ct5"); ///default correction file
            rtc.CtlFrequency(50 * 1000, 2);                          ///laser frequency : 50KHz, pulse width : 2usec
            rtc.CtlSpeed(100, 100);                                  /// default jump and mark speed : 100mm/s
            rtc.CtlDelay(10, 100, 200, 200, 0);                      ///scanner and laser delays
            #endregion

            #region initialize Laser(Virtual)
            ILaser laser = new LaserVirtual(0, "virtual", 20);
            #endregion

            #region create entities for scanner field correction
            var doc   = new DocumentDefault("3x3 scanner field correction");
            var layer = new Layer("default");
            doc.Layers.Add(layer);
            /// 9 (3x3) 측정 위치에 마킹할 형상 생성 (나선 모양의 객체)
            layer.Add(new Spiral(-20.0f, 20.0f, 0.2f, 2.0f, 5, true));
            layer.Add(new Spiral(0.0f, 20.0f, 0.2f, 2.0f, 5, true));
            layer.Add(new Spiral(20.0f, 20.0f, 0.2f, 2.0f, 5, true));
            layer.Add(new Spiral(-20.0f, 0.0f, 0.2f, 2.0f, 5, true));
            layer.Add(new Spiral(0.0f, 0.0f, 0.2f, 2.0f, 5, true));
            layer.Add(new Spiral(20.0f, 0.0f, 0.2f, 2.0f, 5, true));
            layer.Add(new Spiral(-20.0f, -20.0f, 0.2f, 2.0f, 5, true));
            layer.Add(new Spiral(0.0f, -20.0f, 0.2f, 2.0f, 5, true));
            layer.Add(new Spiral(20.0f, -20.0f, 0.2f, 2.0f, 5, true));
            var ds = new DocumentSerializer();
            ds.Save(doc, "test.sirius");
            #endregion

            ConsoleKeyInfo key;
            do
            {
                Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (https://sepwind.blogspot.com)");
                Console.WriteLine("");
                Console.WriteLine("'F' : draw field correction entities");
                Console.WriteLine("'C' : create new field correction for 2D");
                Console.WriteLine("'Q' : quit");
                Console.WriteLine("");
                Console.Write("select your target : ");
                key = Console.ReadKey(false);
                if (key.Key == ConsoleKey.Q)
                {
                    break;
                }
                switch (key.Key)
                {
                case ConsoleKey.F:
                    Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ...");
                    var timer = new Stopwatch();
                    if (DrawForFieldCorrection(laser, rtc, doc))
                    {
                        rtc.ListExecute(true);
                    }
                    Console.WriteLine($"processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s");
                    break;

                case ConsoleKey.C:
                    string result = CreateFieldCorrection();
                    Console.WriteLine("");
                    Console.WriteLine(result);
                    break;
                }
            } while (true);

            rtc.Dispose();
        }
 public void Setup()
 {
     Serializer    = new DocumentSerializer();
     DocumentModel = Data.SetData(new IndexModel("bin", "stor")).First();
 }
示例#25
0
 public SendRawMessageActionTests()
 {
     Sender = Substitute.For <ISender>();
     DocumentTypeResolver = new DocumentTypeResolver().WithBlipDocuments();
     DocumentSerializer   = new DocumentSerializer(DocumentTypeResolver);
 }
示例#26
0
文件: Program.cs 项目: li1794/sirius
        static void Main(string[] args)
        {
            SpiralLab.Core.Initialize();

            #region initialize RTC
            IRtc rtc = new RtcVirtual(0);                            ///가상 rtc 제어기 생성
            //IRtc rtc = new Rtc5(0); ///rtc 5 제어기 생성
            double fov     = 60.0;                                   /// scanner field of view : 60mm
            double kfactor = Math.Pow(2, 20) / fov;                  /// k factor (bits/mm) = 2^20 / fov
            rtc.Initialize(kfactor, LaserMode.Yag1, "cor_1to1.ct5"); ///default correction file
            rtc.CtlFrequency(50 * 1000, 2);                          ///laser frequency : 50KHz, pulse width : 2usec
            rtc.CtlSpeed(100, 100);                                  /// default jump and mark speed : 100mm/s
            rtc.CtlDelay(10, 100, 200, 200, 0);                      ///scanner and laser delays
            #endregion

            #region initialize Laser (virtial)
            ILaser laser = new LaserVirtual(0, "virtual", 20);
            #endregion

            #region create entities
            var doc   = new DocumentDefault("Unnamed");
            var layer = new Layer("default");
            doc.Layers.Add(layer);

            ///첫번째 그룹 객체 생성
            var group1 = new Group();
            group1.Add(
                new Pen()
            {
                Frequency           = 100 * 1000,
                PulseWidth          = 2,
                LaserOnDelay        = 0,
                LaserOffDelay       = 0,
                ScannerJumpDelay    = 100,
                ScannerMarkDelay    = 200,
                ScannerPolygonDelay = 0,
                JumpSpeed           = 500,
                MarkSpeed           = 500,
            }
                );
            group1.Add(new Line(0, 0, 10, 20));
            group1.Add(new Circle(0, 0, 10));
            group1.Add(new Spiral(-20.0f, 0.0f, 0.5f, 2.0f, 5, true));
            group1.RepeatCount = 10;    /// 10회 가공

            /// 두번째 그룹 객체 생성
            var group2 = new Group();
            group2.Add(
                new Pen()
            {
                Frequency           = 50 * 1000,
                PulseWidth          = 2,
                LaserOnDelay        = 0,
                LaserOffDelay       = 0,
                ScannerJumpDelay    = 100,
                ScannerMarkDelay    = 200,
                ScannerPolygonDelay = 0,
                JumpSpeed           = 100,
                MarkSpeed           = 100,
            }
                );
            group1.Add(new Line(0, 0, 5, 10));
            group1.Add(new Circle(0, 0, 50));
            group1.Add(new Spiral(-10.0f, 0.0f, 0.5f, 2.0f, 10, true));
            group1.RepeatCount = 20;    /// 20 회 가공
            layer.Add(group2);

            var ds = new DocumentSerializer();
            ds.Save(doc, "test.sirius");
            #endregion

            ConsoleKeyInfo key;
            do
            {
                Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected](https://sepwind.blogspot.com)");
                Console.WriteLine("");
                Console.WriteLine("'D' : draw group entities with pen");
                Console.WriteLine("'Q' : quit");
                Console.WriteLine("");
                Console.Write("select your target : ");
                key = Console.ReadKey(false);
                if (key.Key == ConsoleKey.Q)
                {
                    break;
                }
                switch (key.Key)
                {
                case ConsoleKey.D:
                    Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ...");
                    var timer = new Stopwatch();
                    if (DrawForFieldCorrection(laser, rtc, doc))
                    {
                        rtc.ListExecute(true);
                        Console.WriteLine($"processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s");
                    }
                    break;
                }
            } while (true);

            rtc.Dispose();
        }
示例#27
0
        protected virtual IDictionary <string, string> GenerateJsonCompatibleKeyValues(SearchIndexRequest request)
        {
            var kvs = new Dictionary <string, string>();

            if (!string.IsNullOrWhiteSpace(request.Expression))
            {
                kvs.Add(KeyNames.Expression, request.Expression);
            }

            if (request.HasSortings())
            {
                kvs.Add(KeyNames.Sort, DocumentSerializer.ToJsonArray(request.Sort.ToArray()));
            }

            if (!string.IsNullOrWhiteSpace(request.Bookmark))
            {
                kvs.Add(KeyNames.Bookmark, request.Bookmark);
            }

            if (request.Stale.HasValue)
            {
                kvs.Add(KeyNames.Stale, request.Stale.Value.AsString());
            }

            if (request.Limit.HasValue)
            {
                kvs.Add(KeyNames.Limit, DocumentSerializer.ToJson(request.Limit.Value));
            }

            if (request.IncludeDocs.HasValue)
            {
                kvs.Add(KeyNames.IncludeDocs, DocumentSerializer.ToJson(request.IncludeDocs.Value));
            }

            if (request.Ranges != null)
            {
                kvs.Add(KeyNames.Ranges, Serializer.Serialize(request.Ranges));
            }

            if (request.HasCounts())
            {
                kvs.Add(KeyNames.Counts, DocumentSerializer.ToJsonArray(request.Counts.ToArray()));
            }

            if (!string.IsNullOrWhiteSpace(request.GroupField))
            {
                kvs.Add(KeyNames.GroupField, request.GroupField);
            }

            if (request.GroupLimit.HasValue)
            {
                kvs.Add(KeyNames.GroupLimit, DocumentSerializer.ToJson(request.GroupLimit.Value));
            }

            if (request.HasGroupSortings())
            {
                kvs.Add(KeyNames.GroupSort, DocumentSerializer.ToJsonArray(request.GroupSort.ToArray()));
            }

            if (request.DrillDown.HasValue)
            {
                kvs.Add(KeyNames.DrillDown, DocumentSerializer.ToJsonArray(new [] { request.DrillDown.Value.Key, request.DrillDown.Value.Value }));
            }

            return(kvs);
        }
 public VariableService(DocumentSerializer serializer, IEnumerable <IVariableProvider> variableProviders)
 {
     _serializer        = serializer;
     _variableProviders = variableProviders;
 }
 public DocumentSerializerTests()
 {
     SUT = new DocumentSerializer(new SerializationConfiguration(), new DocumentSerializationMetaProvider());
 }
示例#30
0
        public async Task <IEnumerable <KeyValuePair <string, Document> > > GetAllDocumentsAsync(DocumentCollection keysCollection, BucketNamespace bucketNamespace)
        {
            if (keysCollection.Total == 0)
            {
                return(null);
            }

            try
            {
                string @namespace;
                switch (bucketNamespace)
                {
                case BucketNamespace.Document:
                    @namespace = "buckets";
                    break;

                case BucketNamespace.Resource:
                    @namespace = "resources";
                    break;

                case BucketNamespace.Profile:
                    @namespace = "profile";
                    break;

                default:
                    @namespace = "buckets";
                    break;
                }

                var pairsCollection = new List <KeyValuePair <string, Document> >();

                foreach (var key in keysCollection.Items)
                {
                    var command = new Command
                    {
                        Id     = EnvelopeId.NewId(),
                        To     = Node.Parse("*****@*****.**"),
                        Uri    = new LimeUri($"/{@namespace}/{key}"),
                        Method = CommandMethod.Get
                    };

                    var documentSerializer = new DocumentSerializer();

                    var envelopeSerializer = new JsonNetSerializer();
                    var commandString      = envelopeSerializer.Serialize(command);

                    var httpContent = new StringContent(commandString, Encoding.UTF8, "application/json");

                    HttpResponseMessage response = await _client.PostAsync("/commands", httpContent);

                    response.EnsureSuccessStatusCode();
                    string responseBody = await response.Content.ReadAsStringAsync();

                    var envelopeResult = (Command)envelopeSerializer.Deserialize(responseBody);
                    var document       = envelopeResult.Resource;

                    pairsCollection.Add(new KeyValuePair <string, Document>(key.ToString(), document));
                }

                return(pairsCollection);
            }
            catch (HttpRequestException e)
            {
                Console.WriteLine("\nException Caught!");
                Console.WriteLine("Message :{0} ", e.Message);
                return(null);
            }
        }
示例#31
0
        static void Main(string[] args)
        {
            SpiralLab.Core.Initialize();

            #region create entities
            //신규 문서(Document) 생성
            var doc1 = new DocumentDefault("Unnamed");
            // 레이어 생성
            var layer = new Layer("default");
            //레이어에 선 형상 개체(Entity) 생성및 추가
            layer.Add(new Line(0, 10, 20, 20));
            //레이어에 원 형상 개체(Entity) 생성및 추가
            layer.Add(new Circle(0, 0, 10));
            //레이어에 나선 형상 개체(Entity) 생성및 추가
            layer.Add(new Spiral(-20.0f, 0.0f, 0.5f, 2.0f, 5, true));
            // 레이어를 문서에 추가
            doc1.Layers.Add(layer);
            #endregion

            Console.WriteLine("press any key to save ...");
            Console.ReadKey(false);
            string filename = "default.sirius";

            // 문서(Document) 저장하기
            DocumentSerializer.Save(doc1, filename);

            Console.WriteLine("press any key to open ...");
            Console.ReadKey(false);
            // 문서(Document) 불러오기
            var doc2 = DocumentSerializer.OpenSirius(filename);

            Console.WriteLine("press any key to rtc initialize ...");
            Console.ReadKey(false);

            #region initialize RTC
            //var rtc = new RtcVirtual(0); //create Rtc for dummy
            var rtc = new Rtc5(0, "output.txt"); //create Rtc5 controller with list commands output file
            //var rtc = new Rtc6(0); //create Rtc6 controller
            //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기)
            //var rtc = new Rtc6SyncAxis(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syncAxis", "syncAXISConfig.xml")); //실험적인 상태 (Scanlab XLSCAN 솔류션)

            float fov            = 60.0f;                            // scanner field of view : 60mm
            float kfactor        = (float)Math.Pow(2, 20) / fov;     // k factor (bits/mm) = 2^20 / fov
            var   correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5");
            rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); // 스캐너 보정 파일 지정 : correction file
            rtc.CtlFrequency(50 * 1000, 2);                          // laser frequency : 50KHz, pulse width : 2usec
            rtc.CtlSpeed(100, 100);                                  // default jump and mark speed : 100mm/s
            rtc.CtlDelay(10, 100, 200, 200, 0);                      // scanner and laser delays
            #endregion

            #region initialize Laser (virtual)
            var laser = new LaserVirtual(0, "virtual", 20);  // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성)
            //var laser = new IPGYLP(0, "IPG YLP", 1, 20);
            //var laser = new JPTTypeE(0, "JPT Type E", 1, 20);
            //var laser = new SPIG4(0, "SPI G3/4", 1, 20);
            //var laser = new PhotonicsIndustryDX(0, "PI", 1, 20);
            //var laser = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20);
            //var laser = new CoherentAviaLX(0, "Avia LX", 1, 20);
            laser.Rtc = rtc;
            laser.Initialize();
            laser.CtlPower(2);
            #endregion

            Console.WriteLine("press any key to laser processing ...WARNING !!!  LASER EMISSION");
            Console.ReadKey(false);
            DoBegin(laser, rtc, doc2);

            Console.WriteLine("press any key to terminate program");
            Console.ReadKey(false);
        }
示例#32
0
        static void Main(string[] args)
        {
            SpiralLab.Core.Initialize();

            #region initialize RTC
            //var rtc = new RtcVirtual(0); //create Rtc for dummy
            var rtc = new Rtc5(0); //create Rtc5 controller
            //var rtc = new Rtc6(0); //create Rtc6 controller
            //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기)
            //var rtc = new Rtc6SyncAxis(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syncAxis", "syncAXISConfig.xml")); //실험적인 상태 (Scanlab XLSCAN 솔류션)

            float fov            = 60.0f;                            // scanner field of view : 60mm
            float kfactor        = (float)Math.Pow(2, 20) / fov;     // k factor (bits/mm) = 2^20 / fov
            var   correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5");
            rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); //default correction file
            rtc.CtlFrequency(50 * 1000, 2);                          //laser frequency : 50KHz, pulse width : 2usec
            rtc.CtlSpeed(100, 100);                                  // default jump and mark speed : 100mm/s
            rtc.CtlDelay(10, 100, 200, 200, 0);                      //scanner and laser delays
            #endregion

            #region initialize Laser (virtual)
            var laser = new LaserVirtual(0, "virtual", 20);  // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성)
            //var laser = new IPGYLP(0, "IPG YLP", 1, 20);
            //var laser = new JPTTypeE(0, "JPT Type E", 1, 20);
            //var laser = new SPIG4(0, "SPI G3/4", 1, 20);
            //var laser = new PhotonicsIndustryDX(0, "PI", 1, 20);
            //var laser = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20);
            //var laser = new CoherentAviaLX(0, "Avia LX", 1, 20);
            laser.Rtc = rtc;
            laser.Initialize();
            laser.CtlPower(2);
            #endregion

            #region create entity at 0,0 location
            var doc = new DocumentDefault("3x3 scanner field correction");
            // 레이어 생성
            var layer = new Layer("default");
            // 나선 개체 추가
            layer.Add(new Spiral(0.0f, 0.0f, 0.5f, 2.0f, 5, true));
            // 레이어의 모든 개채들 내부 데이타 계산및 갱신
            layer.Regen();
            // 문서에 레이어 추가
            doc.Layers.Add(layer);
            // 문서 저장
            DocumentSerializer.Save(doc, "test.sirius");
            #endregion

            ConsoleKeyInfo key;
            do
            {
                Console.WriteLine($"{Environment.NewLine}");
                Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (http://spirallab.co.kr)");
                Console.WriteLine($"{Environment.NewLine}");
                Console.WriteLine("'M' : draw entities by marker");
                Console.WriteLine("'O' : draw entities by marker with offsets");
                Console.WriteLine("'Q' : quit");
                Console.WriteLine($"{Environment.NewLine}");
                Console.Write("select your target : ");
                key = Console.ReadKey(false);
                if (key.Key == ConsoleKey.Q)
                {
                    break;
                }
                Console.WriteLine($"{Environment.NewLine}");
                switch (key.Key)
                {
                case ConsoleKey.M:
                    Console.WriteLine("WARNING !!! LASER IS BUSY ...");
                    DrawByMarker(doc, rtc, laser);
                    break;

                case ConsoleKey.O:
                    Console.WriteLine("WARNING !!! LASER IS BUSY ...");
                    DrawByMarkerWithOffset(doc, rtc, laser);
                    break;
                }
            } while (true);

            rtc.Dispose();
        }
        /// <summary>
        /// Imports documents
        /// </summary>
        /// <param name="collection">The collection name</param>
        /// <param name="documents">Documents to import</param>
        /// <param name="createCollection">If true, then the collection is created if it does not yet exist</param>
        /// <param name="overwrite">If true, then all data in the collection will be removed prior to the import</param>
        /// <param name="waitForSync">Wait until document has been synced to disk</param>
        /// <param name="onDuplicate">Controls what action is carried out in case of a unique key constraint violation</param>
        /// <param name="complete">If true, then it will make the whole import fail if any error occurs</param>
        /// <param name="details">If true, then the result will include details about documents that could not be imported</param>
        /// <param name="baseResult"></param>
        /// <returns>BulkImportResult</returns>
        public async Task <BulkImportResult> BulkImportAsync(string collection, IEnumerable documents, bool?createCollection = null, bool?overwrite = null
                                                             , bool?waitForSync = null, ImportDuplicatePolicy?onDuplicate = null, bool?complete = null, bool?details = null
                                                             , Action <BaseResult> baseResult = null)
        {
            createCollection = createCollection ?? db.Setting.CreateCollectionOnTheFly;
            waitForSync      = waitForSync ?? db.Setting.WaitForSync;

            var command = new HttpCommand(db)
            {
                Api    = CommandApi.Import,
                Method = HttpMethod.Post,
                Query  = new Dictionary <string, string>()
            };

            command.Query.Add("type", "documents");
            command.Query.Add("collection", collection);
            command.Query.Add("createCollection", createCollection.ToString());
            command.Query.Add("waitForSync", waitForSync.ToString());

            if (overwrite.HasValue)
            {
                command.Query.Add("overwrite", overwrite.ToString());
            }
            if (onDuplicate.HasValue)
            {
                command.Query.Add("onDuplicate", Utility.Utils.ImportDuplicatePolicyToString(onDuplicate.Value));
            }
            if (complete.HasValue)
            {
                command.Query.Add("complete", complete.ToString());
            }
            if (details.HasValue)
            {
                command.Query.Add("details", details.ToString());
            }

            Func <StreamWriter, Task> onStreamReady = async(streamWriter) =>
            {
                var docSerializer = new DocumentSerializer(db);
                var serializer    = docSerializer.CreateJsonSerializer();
                var jsonWriter    = new JsonTextWriter(streamWriter);
                foreach (var d in documents)
                {
                    string json = d as string;
                    if (json != null)
                    {
                        streamWriter.Write($"{json}{Environment.NewLine}");
                        continue;
                    }

                    var jObject = d as JObject;
                    if (jObject != null)
                    {
                        jObject.WriteTo(jsonWriter);
                        streamWriter.Write(Environment.NewLine);
                        continue;
                    }

                    serializer.Serialize(jsonWriter, d);
                    streamWriter.Write(Environment.NewLine);
                }
                await streamWriter.FlushAsync().ConfigureAwait(false);
            };

            var result = await command.RequestDistinctResult <BulkImportResult>(onStreamReady : onStreamReady).ConfigureAwait(false);

            baseResult?.Invoke(result.BaseResult);

            return(result.Result);
        }