Ejemplo n.º 1
0
        public static StorageEngineServer CreateServer(IStorageEngine engine, int port = 7182)
        {
            TcpServer server = new TcpServer(port);
            StorageEngineServer engineServer = new StorageEngineServer(engine, server);

            return engineServer;
        }
Ejemplo n.º 2
0
 public NonNativeObjectWriter(IObjectWriter objectWriter, IStorageEngine storageEngine)
 {
     _objectWriter = objectWriter;
     _session = storageEngine.GetSession();
     _objectReader = storageEngine.GetObjectReader();
     _storageEngine = storageEngine;
 }
Ejemplo n.º 3
0
 protected override void Clear()
 {
     base.Clear();
     if (_transaction != null)
         _transaction.Clear();
     _storageEngine = null;
 }
Ejemplo n.º 4
0
        internal IndexManager(IStorageEngine storageEngine, ClassInfo classInfo)
        {
            _storageEngine = storageEngine;
            _classInfo = classInfo;

            _reflectionService = DependencyContainer.Resolve<IReflectionService>();
        }
		public InstanceBuilder(IStorageEngine engine)
		{
			this.triggerManager = OdbConfiguration.GetCoreProvider().GetLocalTriggerManager(engine);
			this.classIntrospector = OdbConfiguration.GetCoreProvider().GetClassIntrospector();
			this.classPool = OdbConfiguration.GetCoreProvider().GetClassPool();
			this.engine = engine;
		}
Ejemplo n.º 6
0
 public static void SetUp(IStorageEngine engine)
 {
     if (engine == null)
     {
         throw new ArgumentNullException("engine");
     }
     storageImpl = engine;
 }
Ejemplo n.º 7
0
 public LazyOdbBtreePersister(IStorageEngine engine)
 {
     _oids = new OdbHashMap<OID, object>();
     _modifiedObjectOids = new OdbHashMap<object, int>();
     _modifiedObjectOidList = new OdbList<OID>(500);
     _engine = engine;
     _engine.AddCommitListener(this);
 }
        /// <summary>
        /// Constructs a new JsonNetObjectSerializationProvider.
        /// </summary>
        /// <param name="engine">The engine to de/serialize dependent sub-objects.</param>
        public JsonNetObjectSerializationProvider(IStorageEngine engine = null)
        {
            _guidResolver = new ThreadLocal<SerializedItemsToGuidResolver>(() =>
                new SerializedItemsToGuidResolver(engine));

            _serializer = new ThreadLocal<JsonSerializer>(() =>
                JsonSerializer.Create(new JsonSerializerSettings() {ContractResolver = _guidResolver.Value }));
        }
Ejemplo n.º 9
0
        public DocumentStore(string rootPath)
        {
            statistics = new Statistics();
            storageEngine = new StorageEngine(rootPath, statistics);

            encoders = new EncoderSelector();
            encoders.Add(new JsonDocumentEncoder(statistics));
            encoders.Add(new BlobEncoder());
        }
Ejemplo n.º 10
0
 /// <summary>
 /// InitializeWithEngine initializes ReactiveUI.Serialization with a
 /// storage engine to load and save objects.
 /// </summary>
 /// <param name="engine">The engine to use.</param>
 public static void InitializeWithEngine(IStorageEngine engine)
 {
     var extEngine = engine as IExtendedStorageEngine;
     if (extEngine != null) {
         Engine = extEngine;
     } else {
         Engine = new NaiveExtendedEngine(engine);
     }
 }
Ejemplo n.º 11
0
        //Used when data exists
        private ObjectStore(
            Roots roots,
            StateMaps stateMaps, Serializers serializers,
            IStorageEngine storageEngine)
        {
            Roots         = roots;
            StorageEngine = storageEngine;

            _persister = new Persister(StorageEngine, roots, serializers, stateMaps);
        }
Ejemplo n.º 12
0
        /// <summary>
        ///   Returns a multi class query executor (polymorphic = true)
        /// </summary>
        public IQueryExecutor GetQueryExecutor(IQuery query, IStorageEngine engine)
        {
            if (query is ValuesCriteriaQuery)
                return new MultiClassGenericQueryExecutor(new ValuesCriteriaQueryExecutor(query, engine));

            if (query is SodaQuery)
                return new MultiClassGenericQueryExecutor(new CriteriaQueryExecutor(query, engine));

            throw new OdbRuntimeException(NDatabaseError.QueryTypeNotImplemented.AddParameter(query.GetType().FullName));
        }
Ejemplo n.º 13
0
 public QueryResultAction(IQuery query, bool inMemory, IStorageEngine storageEngine, bool returnObjects,
                          IInstanceBuilder instanceBuilder)
 {
     _query           = (IInternalQuery)query;
     _inMemory        = inMemory;
     _storageEngine   = storageEngine;
     _returnObjects   = returnObjects;
     _queryHasOrderBy = _query.HasOrderBy();
     _instanceBuilder = instanceBuilder;
 }
Ejemplo n.º 14
0
        public StorageTree(
            IStorageEngine storageEngine,
            string name,
            IStorageTreeConfiguration treeConfiguration)
        {
            this.storageEngine = storageEngine;

            Name = name;
            FilePath = Path.Combine(storageEngine.RootFilePath, Name);
        }
Ejemplo n.º 15
0
        public static ITable <TKey, TRecord> OpenXTable <TKey, TRecord>(this IStorageEngine engine)
        {
            //默认TRecord为byte[]类型,需要强制转换为强类型
            if (engine[typeof(TRecord).Name] != null)
            {
                engine[typeof(TRecord).Name].RecordType = typeof(TRecord);
            }

            return(engine.OpenXTable <TKey, TRecord>(typeof(TRecord).Name));
        }
Ejemplo n.º 16
0
        public StorageEngineServer(IStorageEngine storageEngine, TcpServer tcpServer)
        {
            if (storageEngine == null)
                throw new ArgumentNullException("storageEngine");
            if (tcpServer == null)
                throw new ArgumentNullException("tcpServer");

            StorageEngine = storageEngine;
            TcpServer = tcpServer;

            CommandsIIndexExecute = new Func<XTablePortable, ICommand, ICommand>[CommandCode.MAX];
            CommandsIIndexExecute[CommandCode.REPLACE] = Replace;
            CommandsIIndexExecute[CommandCode.DELETE] = Delete;
            CommandsIIndexExecute[CommandCode.DELETE_RANGE] = DeleteRange;
            CommandsIIndexExecute[CommandCode.INSERT_OR_IGNORE] = InsertOrIgnore;
            CommandsIIndexExecute[CommandCode.CLEAR] = Clear;
            CommandsIIndexExecute[CommandCode.TRY_GET] = TryGet;
            CommandsIIndexExecute[CommandCode.FORWARD] = Forward;
            CommandsIIndexExecute[CommandCode.BACKWARD] = Backward;
            CommandsIIndexExecute[CommandCode.FIND_NEXT] = FindNext;
            CommandsIIndexExecute[CommandCode.FIND_AFTER] = FindAfter;
            CommandsIIndexExecute[CommandCode.FIND_PREV] = FindPrev;
            CommandsIIndexExecute[CommandCode.FIND_BEFORE] = FindBefore;
            CommandsIIndexExecute[CommandCode.FIRST_ROW] = FirstRow;
            CommandsIIndexExecute[CommandCode.LAST_ROW] = LastRow;
            CommandsIIndexExecute[CommandCode.COUNT] = Count;
            CommandsIIndexExecute[CommandCode.XTABLE_DESCRIPTOR_GET] = GetXIndexDescriptor;
            CommandsIIndexExecute[CommandCode.XTABLE_DESCRIPTOR_SET] = SetXIndexDescriptor;

            CommandsStorageEngineExecute = new Func<ICommand, ICommand>[CommandCode.MAX];
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_COMMIT] = StorageEngineCommit;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_GET_ENUMERATOR] = StorageEngineGetEnumerator;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_RENAME] = StorageEngineRename;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_EXISTS] = StorageEngineExist;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_FIND_BY_ID] = StorageEngineFindByID;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_FIND_BY_NAME] = StorageEngineFindByNameCommand;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_OPEN_XTABLE] = StorageEngineOpenXIndex;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_OPEN_XFILE] = StorageEngineOpenXFile;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_DELETE] = StorageEngineDelete;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_COUNT] = StorageEngineCount;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_GET_CACHE_SIZE] = StorageEngineGetCacheSize;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_SET_CACHE_SIZE] = StorageEngineSetCacheSize;
            CommandsStorageEngineExecute[CommandCode.HEAP_OBTAIN_NEW_HANDLE] = HeapObtainNewHandle;
            CommandsStorageEngineExecute[CommandCode.HEAP_RELEASE_HANDLE] = HeapReleaseHandle;
            CommandsStorageEngineExecute[CommandCode.HEAP_EXISTS_HANDLE] = HeapExistsHandle;
            CommandsStorageEngineExecute[CommandCode.HEAP_WRITE] = HeapWrite;
            CommandsStorageEngineExecute[CommandCode.HEAP_READ] = HeapRead;
            CommandsStorageEngineExecute[CommandCode.HEAP_COMMIT] = HeapCommit;
            CommandsStorageEngineExecute[CommandCode.HEAP_CLOSE] = HeapClose;
            CommandsStorageEngineExecute[CommandCode.HEAP_GET_TAG] = HeapGetTag;
            CommandsStorageEngineExecute[CommandCode.HEAP_SET_TAG] = HeapSetTag;
            CommandsStorageEngineExecute[CommandCode.HEAP_DATA_SIZE] = HeapDataSize;
            CommandsStorageEngineExecute[CommandCode.HEAP_SIZE] = HeapSize;
        }
Ejemplo n.º 17
0
        /// review url 这个参数名称不太合适吧,
        /// <summary>
        /// todo the database should be injected here
        /// </summary>
        /// <param name="databaseName">The name of entity's database</param>
        /// <param name="storageEngine">Payload's storageEngine</param>
        /// <param name="databaseUrl">Url of entity's database</param>
        public void Init(string mongoHost, string mongoDatabase, string mongoCollection, IStorageEngine storageEngine = null)
        {//"mongodb://127.0.0.1:27017"
            myStorageEngine = storageEngine;
            client          = new MongoClient(mongoHost);
            database        = client.GetDatabase(mongoDatabase);
            collection      = database.GetCollection <JDBCEntity>(mongoCollection);

            //注册基本类
            RegisterClassMap <Experiment>();
            RegisterClassMap <Signal>();
        }
Ejemplo n.º 18
0
        private void WriteDatabaseId(IStorageEngine storageEngine, long creationDate)
        {
            var databaseId = GetDatabaseId(creationDate);

            FileSystemInterface.WriteLong(databaseId.GetIds()[0], false); //database id 1/4
            FileSystemInterface.WriteLong(databaseId.GetIds()[1], false); //database id 2/4
            FileSystemInterface.WriteLong(databaseId.GetIds()[2], false); //database id 3/4
            FileSystemInterface.WriteLong(databaseId.GetIds()[3], false); //database id 4/4

            storageEngine.SetDatabaseId(databaseId);
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Constructs a new JsonNetObjectSerializationProvider.
        /// </summary>
        /// <param name="engine">The engine to de/serialize dependent sub-objects.</param>
        public JsonNetObjectSerializationProvider(IStorageEngine engine = null)
        {
            _guidResolver = new ThreadLocal <SerializedItemsToGuidResolver>(() =>
                                                                            new SerializedItemsToGuidResolver(engine));

            _serializer = new ThreadLocal <JsonSerializer>(() =>
                                                           JsonSerializer.Create(new JsonSerializerSettings()
            {
                ContractResolver = _guidResolver.Value
            }));
        }
Ejemplo n.º 20
0
        //Used when data does not already exists
        private ObjectStore(IStorageEngine storageEngine)
        {
            StorageEngine = storageEngine;
            var roots       = new Roots();
            var serializers = new Serializers(new SerializerFactory());
            var stateMaps   = new StateMaps(serializers);

            Roots = roots;

            _persister = new Persister(StorageEngine, roots, serializers, stateMaps);
        }
Ejemplo n.º 21
0
        private void WriteDatabaseId(IStorageEngine storageEngine, long creationDate)
        {
            var databaseId = GetDatabaseId(creationDate);

            FileSystemInterface.WriteLong(databaseId.GetIds()[0], false); //database id 1/4
            FileSystemInterface.WriteLong(databaseId.GetIds()[1], false); //database id 2/4
            FileSystemInterface.WriteLong(databaseId.GetIds()[2], false); //database id 3/4
            FileSystemInterface.WriteLong(databaseId.GetIds()[3], false); //database id 4/4

            storageEngine.SetDatabaseId(databaseId);
        }
Ejemplo n.º 22
0
        public Storage(string fileName)
        {
            if (string.IsNullOrEmpty(fileName))
            {
                throw new ArgumentException("fileName");
            }

            this.FileName = fileName;

            this.storageEngine = STSdb.FromFile(this.FileName);
        }
Ejemplo n.º 23
0
        public IEnumerable <KeyValuePair <string, string> > GetAll(string databaseFile, string tableName)
        {
            using (IStorageEngine engine = STSdb.FromFile(databaseFile))
            {
                var table = engine.OpenXTable <string, string>(tableName);

                foreach (var row in table)
                {
                    yield return(row);
                }
            }
        }
Ejemplo n.º 24
0
        public ObjectWriter(IStorageEngine engine)
        {
            _storageEngine = engine;

            _nativeHeaderBlockSizeByte = ByteArrayConverter.IntToByteArray(NativeHeaderBlockSize);
            _session = engine.GetSession();

            _nonNativeObjectWriter = new NonNativeObjectWriter(this, _storageEngine);

            FileSystemProcessor = new FileSystemWriter();
            FileSystemProcessor.BuildFileSystemInterface(engine, _session);
        }
Ejemplo n.º 25
0
 public Persister(
     IStorageEngine storageEngine,
     Roots roots,
     Serializers.Serializers serializers,
     StateMaps stateMaps)
 {
     _storageEngine = storageEngine;
     _roots         = roots;
     _serializers   = serializers;
     _stateMaps     = stateMaps;
     _maxObjectId   = serializers.NextObjectId - 1;
 }
Ejemplo n.º 26
0
        /// <summary>
        /// 根据条件分页加载数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="PageIndex"></param>
        /// <param name="PageSize"></param>
        /// <param name="func"></param>
        /// <param name="MarkId"></param>
        /// <returns></returns>
        public static PageData <T> LoadByPage <T>(int PageIndex, int PageSize, Func <T, bool> func = null, string MarkId = "") where T : EntityBase
        {
            PageData <T> pagedata = new PageData <T>();

            pagedata.PageIndex = PageIndex;
            pagedata.PageSize  = PageSize;

            IStorageEngine engine = GetStorageEngine <T>(MarkId);
            //var table = engine.OpenXTable<int, string>(typeof(T).Name + MarkId);
            var table = engine.GetTable <T>(MarkId); //engine.OpenXTable<int, string>(typeof(T).Name + MarkId);

            if (func != null)
            {
                pagedata.TotalCount = (int)table.Where(o => func(o.Value.JsParse <T>())).Count();
            }
            else
            {
                pagedata.TotalCount = (int)table.Count();
            }
            if (pagedata.TotalCount > 0)
            {
                if (pagedata.PageSize <= 0)
                {
                    pagedata.PageSize = 1;
                }
                pagedata.TotalPageCount = (int)Math.Ceiling((double)(pagedata.TotalCount / pagedata.PageSize));
                if (pagedata.PageIndex > pagedata.TotalPageCount)
                {
                    pagedata.PageIndex = pagedata.TotalPageCount;
                }
                else if (pagedata.PageIndex < 0)
                {
                    pagedata.PageIndex = 1;
                }
                if (func != null)
                {
                    pagedata.QueryData = table.Where(o => func(o.Value.JsParse <T>())).Skip((pagedata.PageIndex - 1) * pagedata.PageSize).Take(pagedata.PageSize).Select(o => o.Value.JsParse <T>()).ToList();
                }
                else
                {
                    pagedata.QueryData = table.Skip((pagedata.PageIndex - 1) * pagedata.PageSize).Take(pagedata.PageSize).Select(o => o.Value.JsParse <T>()).ToList();
                }
            }
            else
            {
                pagedata.TotalCount     = 0;
                pagedata.TotalPageCount = 0;
                pagedata.PageIndex      = 0;
                pagedata.QueryData      = null;
            }
            return(pagedata);
        }
Ejemplo n.º 27
0
        public void Put(string databaseFile, string tableName, string key, string value)
        {
            using (IStorageEngine engine = STSdb.FromFile(databaseFile))
            {
                var table = engine.OpenXTable <string, string>(tableName);

                table[key] = value;

                engine.Commit();
            }

            Log(databaseFile, tableName);
        }
Ejemplo n.º 28
0
        /// <summary>
        /// 根据ID加载数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="Id"></param>
        /// <param name="MarkId"></param>
        /// <returns></returns>
        public static T LoadById <T>(string Id, string MarkId = "") where T : EntityBase
        {
            IStorageEngine engine = GetStorageEngine <T>(MarkId);
            //var table = engine.OpenXTable<int, string>(typeof(T).Name + MarkId);
            var table    = engine.GetTable <T>(MarkId); //engine.OpenXTable<int, string>(typeof(T).Name + MarkId);
            var objexist = table.FirstOrDefault(o => o.Value.JsParse <T>().ID == Id);

            if (!String.IsNullOrWhiteSpace(objexist.Value))
            {
                return(objexist.Value.JsParse <T>());
            }
            return(null);
        }
Ejemplo n.º 29
0
        /// <summary>
        /// 删除数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="value"></param>
        /// <param name="MarkId"></param>
        public static void Delete <T>(this T value, string MarkId = "") where T : EntityBase
        {
            IStorageEngine engine = GetStorageEngine <T>(MarkId);
            //var table = engine.OpenXTable<int, string>(typeof(T).Name + MarkId);
            var table = engine.GetTable <T>(MarkId); //engine.OpenXTable<int, string>(typeof(T).Name + MarkId);

            //var objexist = table.TryGetOrDefault(value.Sequence, "");
            //if (!String.IsNullOrWhiteSpace(objexist))//修改
            //{
            table.Delete(value.Sequence);
            //}
            engine.Commit();
        }
Ejemplo n.º 30
0
        /// <summary>
        /// InitializeWithEngine initializes ReactiveUI.Serialization with a
        /// storage engine to load and save objects.
        /// </summary>
        /// <param name="engine">The engine to use.</param>
        public static void InitializeWithEngine(IStorageEngine engine)
        {
            var extEngine = engine as IExtendedStorageEngine;

            if (extEngine != null)
            {
                Engine = extEngine;
            }
            else
            {
                Engine = new NaiveExtendedEngine(engine);
            }
        }
Ejemplo n.º 31
0
        /// <summary>
        /// Create server
        /// </summary>
        private static void Example4()
        {
            using (IStorageEngine engine = STSdb.FromFile("test.stsdb4"))
            {
                var server = STSdb.CreateServer(engine, 7182);

                server.Start();

                //server is ready for connections

                server.Stop();
            }
        }
        //public IStorageEngine StorageEngine { get; }

        //Used when data does not already exists
        private ObjectStore2(IStorageEngine storageEngine)
        {
            var serializerFactories = new SerializerFactories(SerializerFactories.DefaultFactories);
            var mapAndSerializers   = new MapAndSerializers(serializerFactories);

            var roots = new Roots2();

            Roots = roots;

            mapAndSerializers.GetOrCreateSerializerFor(roots);

            _persister = new Persister2(storageEngine, mapAndSerializers);
        }
Ejemplo n.º 33
0
        public void Delete(string databaseFile, string tableName, string key)
        {
            using (IStorageEngine engine = STSdb.FromFile(databaseFile))
            {
                var table = engine.OpenXTable <string, string>(tableName);

                table.Delete(key);

                engine.Commit();
            }

            Log(databaseFile, tableName);
        }
Ejemplo n.º 34
0
        public TransactionStreamSubscriber(Uri endpoint, IStorageEngine store, ILogger logger)
        {
            this.endpoint = new UriBuilder(endpoint);

            if (endpoint.Scheme.Equals("https", StringComparison.OrdinalIgnoreCase))
                this.endpoint.Scheme = "wss";
            else
                this.endpoint.Scheme = "ws";

            this.endpoint.Path = this.endpoint.Path.TrimEnd('/') + "/stream";
            this.store = store;
            this.logger = logger;
        }
Ejemplo n.º 35
0
        public StorageEngineServer(IStorageEngine storageEngine, TcpServer tcpServer)
        {
            if (storageEngine == null)
            {
                throw new ArgumentNullException("storageEngine");
            }
            if (tcpServer == null)
            {
                throw new ArgumentNullException("tcpServer");
            }

            StorageEngine = storageEngine;
            TcpServer     = tcpServer;
        }
Ejemplo n.º 36
0
        private void Log(string databaseFile, string tableName)
        {
            using (IStorageEngine engine = STSdb.FromFile(databaseFile))
            {
                var table = engine.OpenXTable <string, string>(tableName);

                log.Info(string.Format("Rows in {0}.{1}:", databaseFile, tableName));

                foreach (var row in table)
                {
                    log.Info(string.Format("{0} => {1}", row.Key, row.Value));
                }
            }
        }
        public static ObjectStore2 Load(IStorageEngine storageEngine, params object[] ephemeralInstances)
        {
            var(roots, mapAndSerializers) = Deserializer2.Load(
                storageEngine,
                new Ephemerals(ephemeralInstances),
                new SerializerFactories(SerializerFactories.DefaultFactories)
                );

            return(new ObjectStore2(
                       roots,
                       mapAndSerializers,
                       storageEngine
                       ));
        }
Ejemplo n.º 38
0
        internal static ITable CreateTable(this IStorageEngine engine, string name, Type t)
        {
            var type = t;

            if (!typeof(DataModel).IsAssignableFrom(t))
            {
                throw new InvalidModelException();
            }
            var columns = type.GetProperties().Select(x =>
                                                      x.Name.ToNamePreservation())
                          .ToArray();

            return(engine.CreateTable(name, columns));
        }
Ejemplo n.º 39
0
        public async Task Run(CancellationToken cancel)
        {
            IServiceScopeFactory scopeFactory = services.GetService <IServiceScopeFactory>();
            ILogger logger = services.GetRequiredService <ILogger>();

            while (!cancel.IsCancellationRequested)
            {
                using (IServiceScope scope = scopeFactory.CreateScope())
                {
                    IAnchorRecorder anchorRecorder = scope.ServiceProvider.GetService <IAnchorRecorder>();
                    IAnchorState    anchorState    = scope.ServiceProvider.GetService <IAnchorState>();

                    if (anchorRecorder == null || anchorState == null)
                    {
                        logger.LogInformation("Anchoring disabled");
                        return;
                    }

                    IStorageEngine storageEngine = scope.ServiceProvider.GetRequiredService <IStorageEngine>();

                    try
                    {
                        await storageEngine.Initialize();

                        await anchorState.Initialize();

                        AnchorBuilder anchorBuilder = new AnchorBuilder(storageEngine, anchorRecorder, anchorState);

                        while (!cancel.IsCancellationRequested)
                        {
                            LedgerAnchor anchor = await anchorBuilder.RecordAnchor();

                            if (anchor != null)
                            {
                                logger.LogInformation($"Recorded an anchor for {anchor.TransactionCount} transactions: {anchor.FullStoreHash.ToString()}");
                            }

                            await Task.Delay(TimeSpan.FromSeconds(10), cancel);
                        }
                    }
                    catch (Exception exception)
                    {
                        logger.LogError($"Error in the anchor worker:\r\n{exception}");

                        // Wait longer if an error occurred
                        await Task.Delay(TimeSpan.FromMinutes(1), cancel);
                    }
                }
            }
        }
Ejemplo n.º 40
0
        /// <summary>
        ///   Returns a multi class query executor (polymorphic = true)
        /// </summary>
        public IQueryExecutor GetQueryExecutor(IQuery query, IStorageEngine engine)
        {
            if (query is ValuesCriteriaQuery)
            {
                return(new MultiClassGenericQueryExecutor(new ValuesCriteriaQueryExecutor(query, engine)));
            }

            if (query is SodaQuery)
            {
                return(new MultiClassGenericQueryExecutor(new CriteriaQueryExecutor(query, engine)));
            }

            throw new OdbRuntimeException(NDatabaseError.QueryTypeNotImplemented.AddParameter(query.GetType().FullName));
        }
        public AzureDocumentDbStorageEngineHealthTests()
        {
            client        = DocumentClientFactory.Create(DatabaseName);
            storageEngine = StorageEngineFactory.Create(DatabaseName,
                                                        o =>
            {
                o.CollectionName            = CollectionName;
                o.DefaultTimeToLiveSeconds  = -1;
                o.DocumentTimeToLiveSeconds = 10;
            })
                            .Result;

            storageEngine.Initialise().Wait();
        }
Ejemplo n.º 42
0
        public void Index()
        {
            string fileFlag = GetRootFolder() + "\\RawData\\Baike_data.db4";

            using (IStorageEngine engine = STSdb.FromFile(fileFlag))
            {
                // 插入数据
                ITable <string, Page> table = engine.OpenXTable <string, Page>("WebPage");
                foreach (var kv in table)
                {
                    Page page = (Page)kv.Value;
                    Console.WriteLine(kv.Key + " " + page.Url);
                }
            }
        }
Ejemplo n.º 43
0
        private void InsertEntity(IEnumerable <KnowledgeEntity> ces)
        {
            string dataPath = "Baike\\Baike_question.db4";

            using (IStorageEngine engine = STSdb.FromFile(dataPath))
            {
                ITable <long, KnowledgeEntity> table = engine.OpenXTable <long, KnowledgeEntity>("WebPage");
                foreach (var knowledgeEntity in ces)
                {
                    table[knowledgeEntity.Id] = knowledgeEntity;
                    InsertIndex(knowledgeEntity.Id, knowledgeEntity.QuestionDesc);
                }
                engine.Commit();
            }
        }
Ejemplo n.º 44
0
 /// <summary>
 /// 保存索引数据
 /// </summary>
 /// <param name="indexDocs"></param>
 /// <param name="folder"></param>
 /// <param name="isForce"></param>
 public void SaveIndex(ref List <TextIndex> indexDocs, string folder, bool isForce = false)
 {
     // 如果有多余的,需要存放到数据库
     lock (IndexObj)
     {
         try
         {
             if (indexDocs.Count > 2000 || isForce)
             {
                 if (!Directory.Exists(folder))
                 {
                     Directory.CreateDirectory(folder);
                 }
                 string fileFlag = folder + "\\Iveely_Search_Engine_TextIndex.db4";
                 using (IStorageEngine engine = STSdb.FromFile(fileFlag))
                 {
                     // 插入数据
                     ITable <string, List <Iveely.STSdb4.Data.Slots <string, double> > > table = engine.OpenXTable <string, List <Iveely.STSdb4.Data.Slots <string, double> > >("WebPage");
                     for (int i = 0; i < indexDocs.Count; i++)
                     {
                         // 如果包含则追加
                         List <Iveely.STSdb4.Data.Slots <string, double> > list = table.Find(indexDocs[i].Keyword);
                         if (list != null && list.Count > 0)
                         {
                             Iveely.STSdb4.Data.Slots <string, double> slot = new Slots <string, double>(indexDocs[i].Url, indexDocs[i].Weight);
                             list.Add(slot);
                         }
                         // 否则新增
                         else
                         {
                             list = new List <Slots <string, double> >();
                             Iveely.STSdb4.Data.Slots <string, double> slot = new Slots <string, double>(indexDocs[i].Url, indexDocs[i].Weight);
                             list.Add(slot);
                             table[indexDocs[i].Keyword] = list;
                         }
                     }
                     engine.Commit();
                 }
                 indexDocs.Clear();
             }
         }
         catch (Exception exception)
         {
             Console.WriteLine(exception);
             indexDocs.Clear();
         }
     }
 }
Ejemplo n.º 45
0
        public StorageEngineServer(IStorageEngine storageEngine, TcpServer tcpServer)
        {
            if (storageEngine == null)
            {
                throw new ArgumentNullException("storageEngine");
            }
            if (tcpServer == null)
            {
                throw new ArgumentNullException("tcpServer");
            }

            StorageEngine = storageEngine;
            TcpServer     = tcpServer;

            CommandsIIndexExecute = new Func <XTable, ICommand, ICommand> [CommandCode.MAX];
            CommandsIIndexExecute[CommandCode.REPLACE]               = Replace;
            CommandsIIndexExecute[CommandCode.DELETE]                = Delete;
            CommandsIIndexExecute[CommandCode.DELETE_RANGE]          = DeleteRange;
            CommandsIIndexExecute[CommandCode.INSERT_OR_IGNORE]      = InsertOrIgnore;
            CommandsIIndexExecute[CommandCode.CLEAR]                 = Clear;
            CommandsIIndexExecute[CommandCode.TRY_GET]               = TryGet;
            CommandsIIndexExecute[CommandCode.FORWARD]               = Forward;
            CommandsIIndexExecute[CommandCode.BACKWARD]              = Backward;
            CommandsIIndexExecute[CommandCode.FIND_NEXT]             = FindNext;
            CommandsIIndexExecute[CommandCode.FIND_AFTER]            = FindAfter;
            CommandsIIndexExecute[CommandCode.FIND_PREV]             = FindPrev;
            CommandsIIndexExecute[CommandCode.FIND_BEFORE]           = FindBefore;
            CommandsIIndexExecute[CommandCode.FIRST_ROW]             = FirstRow;
            CommandsIIndexExecute[CommandCode.LAST_ROW]              = LastRow;
            CommandsIIndexExecute[CommandCode.COUNT]                 = Count;
            CommandsIIndexExecute[CommandCode.XTABLE_DESCRIPTOR_GET] = GetXIndexDescriptor;
            CommandsIIndexExecute[CommandCode.XTABLE_DESCRIPTOR_SET] = SetXIndexDescriptor;

            CommandsStorageEngineExecute = new Func <ICommand, ICommand> [CommandCode.MAX];
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_COMMIT]         = StorageEngineCommit;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_GET_ENUMERATOR] = StorageEngineGetEnumerator;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_RENAME]         = StorageEngineRename;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_EXISTS]         = StorageEngineExist;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_FIND_BY_ID]     = StorageEngineFindByID;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_FIND_BY_NAME]   = StorageEngineFindByNameCommand;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_OPEN_XTABLE]    = StorageEngineOpenXIndex;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_OPEN_XFILE]     = StorageEngineOpenXFile;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_DELETE]         = StorageEngineDelete;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_COUNT]          = StorageEngineCount;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_DATABASE_SIZE]  = StorageEngineDatabaseSize;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_GET_CACHE_SIZE] = StorageEngineGetCacheSize;
            CommandsStorageEngineExecute[CommandCode.STORAGE_ENGINE_SET_CACHE_SIZE] = StorageEngineSetCacheSize;
        }
Ejemplo n.º 46
0
        /// <summary>
        /// 获取数据所在数据库的索引,返回-1标识没找到。
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="value"></param>
        /// <param name="MarkId"></param>
        /// <returns></returns>
        public static int GetIndex <T>(this T value, string MarkId = "") where T : EntityBase
        {
            int iIndex = -1;

            IStorageEngine engine = GetStorageEngine <T>(MarkId);
            //var table = engine.OpenXTable<int, string>(typeof(T).Name + MarkId);
            var table = engine.GetTable <T>(MarkId); //engine.OpenXTable<int, string>(typeof(T).Name + MarkId);

            //var data = table.TryGetOrDefault(value.Sequence, "");
            //if (!String.IsNullOrWhiteSpace(data))
            //{
            iIndex = table.Select((o, index) => o.Key == value.Sequence ? index : -1).FirstOrDefault(o => o != -1);
            //}

            return(iIndex);
        }
Ejemplo n.º 47
0
        protected override void OnStart(string[] args)
        {
            string FileName = ConfigurationSettings.AppSettings["FileName"];
            int port = int.Parse(ConfigurationSettings.AppSettings["Port"]);
            int boundedCapacity = int.Parse(ConfigurationSettings.AppSettings["BoundedCapacity"]);
            Service = this;

            StorageEngine = STSdb.FromFile(FileName);
            TcpServer = new TcpServer(port);
            Program.StorageEngineServer = new StorageEngineServer(StorageEngine, TcpServer);
            Program.StorageEngineServer.Start();

            Form = new MainForm();
            Application.Run(Form);
            Program.StorageEngineServer.Stop();
            StorageEngine.Close();
        }
Ejemplo n.º 48
0
        public MetricsModule(IStorageEngine storageEngine)
            : base("/metrics")
        {
            _storageEngine = storageEngine;

            Get["/list"] = parameters =>
            {
                var metrics = _storageEngine.GetKnownMetrics();
                return Response.AsJson(metrics.ToArray());
            };

            Get["/query"] = parameters =>
            {
                DateTime start, end;
                DateTime.TryParse(Request.Query.start, out start);
                if (!DateTime.TryParse(Request.Query.end, out end))
                    end = DateTime.MaxValue;

                string rawMetrics = Convert.ToString(Request.Query.metric.Value);
                var metrics = new Metric[0];
                if (rawMetrics != null)
                {
                    var splitRawMetrics = rawMetrics.Split(',');
                    metrics = splitRawMetrics.Select(Metric.Create).ToArray();
                }

                var query = new Query
                {
                    StartDate = start,
                    EndDate = end,
                    Metrics = metrics
                };

                var results = _storageEngine.ExecuteQuery(query);
                return Response.AsJson(results.ToArray());
            };
        }
Ejemplo n.º 49
0
 public OpenchainController(IStorageEngine store, ILogger logger)
 {
     this.store = store;
     this.logger = logger;
 }
Ejemplo n.º 50
0
 public LocalSession(IStorageEngine engine)
     : base(GetSessionId(), engine.GetBaseIdentification().Id)
 {
     _storageEngine = engine;
 }
Ejemplo n.º 51
0
 public AnchorBuilder(IStorageEngine storageEngine, IAnchorRecorder anchorRecorder, IAnchorState anchorState)
 {
     this.storageEngine = storageEngine;
     this.anchorRecorder = anchorRecorder;
     this.anchorState = anchorState;
 }
 public SerializableListConverter(IStorageEngine engine = null)
 {
     _engine = engine ?? RxStorage.Engine;
 }
Ejemplo n.º 53
0
 public TransactionValidator(IStorageEngine store, IMutationValidator validator, string rootUrl)
 {
     this.store = store;
     this.validator = validator;
     this.ledgerId = new ByteString(Encoding.UTF8.GetBytes(rootUrl));
 }
Ejemplo n.º 54
0
        /// <summary>
        /// Configures the services.
        /// </summary>
        public async void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerfactory, IConfiguration configuration, IStorageEngine store)
        {
            app.UseCors(builder => builder.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin());

            app.UseIISPlatformHandler();

            app.Map("/stream", managedWebSocketsApp =>
            {
                if (bool.Parse(configuration["enable_transaction_stream"]))
                {
                    managedWebSocketsApp.UseWebSockets(new WebSocketOptions() { ReplaceFeature = true });
                    managedWebSocketsApp.Use(next => new TransactionStreamMiddleware(next).Invoke);
                }
            });

            // Add MVC to the request pipeline.
            app.UseMvc();

            await ConfigurationParser.InitializeLedgerStore(app.ApplicationServices);

            // Activate singletons
            TransactionStreamSubscriber subscriber = app.ApplicationServices.GetService<TransactionStreamSubscriber>();
            if (subscriber != null)
                runningTasks.Add(subscriber.Subscribe(CancellationToken.None));

            app.ApplicationServices.GetService<IMutationValidator>();

            LedgerAnchorWorker anchorWorker = app.ApplicationServices.GetService<LedgerAnchorWorker>();
            if (anchorWorker != null)
                runningTasks.Add(anchorWorker.Run(CancellationToken.None));
        }
Ejemplo n.º 55
0
 static void InitStorageEngine()
 {
     _storageEngine = new LegacyStorageEngine("Raspberry Aether");
 }
Ejemplo n.º 56
0
 public ExtensionContext(IWriteSession session, IAnchor anchor, IStorageEngine engine)
 {
     Session = session;
     Anchor = anchor;
     Engine = engine;
 }
Ejemplo n.º 57
0
 public OpenchainController(IStorageEngine store, ILogger logger, TransactionValidator validator = null)
 {
     this.store = store;
     this.validator = validator;
     this.logger = logger;
 }
Ejemplo n.º 58
0
 static ThreadStore()
 {
     storageImpl = new DummyStorageImplementation();
 }
 public SerializedItemsToGuidResolver(IStorageEngine engine = null)
 {
     _itemConverter = new SerializableItemConverter(engine);
     _listConverter = new SerializableListConverter(engine);
 }
Ejemplo n.º 60
0
 public InstanceBuilder(IStorageEngine engine)
 {
     _triggerManager = engine.GetLocalTriggerManager();
     _engine = engine;
 }