Esempio n. 1
0
        private static async void LaunchServer()
        {
            var host = new ProtocolHost();

            host.LoadFromReference <Program>();

            var dbOptions = new DbOptions();

            dbOptions.SetCreateIfMissing();
            var rocksDb = RocksDbSharp.RocksDb.Open(dbOptions, @"C:\rocks\primaryservicetest\");

            host.Resolver.Register(rocksDb, false);

            var primaryRepository = new RocksPrimaryRepository(rocksDb, nameof(TestEntity));

            primaryRepository.WriteOptions.SetSync(false);
            host.Resolver.Register(primaryRepository);

            var indexMaps = new IndexMapProvider <TestEntity>();

            host.Resolver.Register(indexMaps);

            indexMaps.AddScoreIndex(e => e.Score, IndexLevel.Entity, OrderType.Asc | OrderType.Desc);

            host.RegisterHandler <PrimaryRepositoryService <TestEntity> >(true);

            var serverTask = host.StartServerAsync("127.0.0.1", 8080, CancellationToken.None);

            Console.WriteLine("Service Started");
        }
Esempio n. 2
0
        public void SaveAndEntityOrderAscGet()
        {
            var dbOptions = new RocksDbSharp.DbOptions();

            dbOptions.SetCreateIfMissing();
            var rocksDb    = RocksDbSharp.RocksDb.Open(dbOptions, @"C:\rocks\primaryrepositorytst\");
            var repository = new RocksPrimaryRepository(rocksDb, "ent");

            try
            {
                var id1    = ByteArray.New(32);
                var value1 = ByteArray.New(256);
                var id2    = ByteArray.New(32);
                var value2 = ByteArray.New(256);
                var id3    = ByteArray.New(32);
                var value3 = ByteArray.New(256);

                using (var transaction = repository.CreateTransaction())
                {
                    var key1 = transaction.AppendValue(id1, value1.Bytes, value1.Length);
                    transaction.AppendScoreIndex(id1, key1, 12, IndexLevel.Entity, OrderType.Asc);

                    var key2 = transaction.AppendValue(id2, value2.Bytes, value2.Length);
                    transaction.AppendScoreIndex(id2, key2, 15, IndexLevel.Entity, OrderType.Asc);

                    var key3 = transaction.AppendValue(id3, value3.Bytes, value3.Length);
                    transaction.AppendScoreIndex(id3, key3, 14, IndexLevel.Entity, OrderType.Asc);

                    transaction.Commit();
                }

                var result = repository.GetValues(OrderType.Asc, false).ToArray();

                Assert.IsNotNull(result);
                Assert.AreEqual(3, result.Length);

                Assert.IsTrue(result[0].Value.ContainsSequence32(value1.Bytes));
                Assert.IsTrue(result[1].Value.ContainsSequence32(value3.Bytes));
                Assert.IsTrue(result[2].Value.ContainsSequence32(value2.Bytes));
            }
            finally
            {
                rocksDb.Dispose();
                Directory.Delete(@"C:\rocks\primaryrepositorytst\", true);
            }
        }
Esempio n. 3
0
        public static PrimaryRepositoryService <T> CreatePrimaryService <T>(this ISerializer serializer, string path, bool databaseSync = false) where T : class, IEntity
        {
            var entityName = typeof(T).Name;

            path = Path.Combine(path, "primary");
            path = Path.Combine(path, entityName);
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }

            var dbOptions = new DbOptions();

            dbOptions.SetCreateIfMissing();
            var rocksDb = RocksDbSharp.RocksDb.Open(dbOptions, path);

            var repository = new RocksPrimaryRepository(rocksDb, entityName);

            repository.WriteOptions.SetSync(databaseSync);

            var service = new PrimaryRepositoryService <T>(repository, serializer);

            return(service);
        }