예제 #1
0
        private RaptorDB GetInstance(string name)
        {
            // load or get instance
            instance_handler inst = null;

            _instances.TryGetValue(name.ToLower(), out inst);
            if (inst == null)
            {
                // no instance found -> err
                _log.Debug("instance name not found : " + name);
                return(null);
            }
            if (inst.rdb == null)
            {
                // try loading raptordb instance
                var r = RaptorDB.Open(inst.dbpath);
                inst.rdb = r;
                // fix : create register and save
                //inst.register
                //inst.save

                if (inst.hasExtensions)
                {
                    // fix: load extension folder
                }
                else
                {
                    // fix: load default extenstions
                }
            }
            return(inst.rdb);
        }
예제 #2
0
        public RaptorDBServer(int port, string DataPath)
        {
            _path = Directory.GetCurrentDirectory();
            AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
            _server = new NetworkServer();

            if (_S == "/")// unix system
            {
                _datapath = DataPath.Replace("\\", "/");
            }
            else
            {
                _datapath = DataPath;
            }

            if (_datapath.EndsWith(_S) == false)
            {
                _datapath += _S;
            }

            _raptor  = RaptorDB.Open(DataPath);
            register = _raptor.GetType().GetMethod("RegisterView", BindingFlags.Instance | BindingFlags.Public);
            save     = _raptor.GetType().GetMethod("Save", BindingFlags.Instance | BindingFlags.Public);
            Initialize();
            _server.Start(port, processpayload);

            // add timer to cleanup connected clients
            _concleanuptimer           = new System.Timers.Timer(30 * 1000);
            _concleanuptimer.AutoReset = true;
            _concleanuptimer.Enabled   = true;
            _concleanuptimer.Elapsed  += _concleanuptimer_Elapsed;
        }
예제 #3
0
        public RaptorDBServer(int port, string DataPath)
        {
            _path = Directory.GetCurrentDirectory();
            AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
            _server = new NetworkServer();

            if (_S == "/")// unix system
            {
                _datapath = DataPath.Replace("\\", "/");
            }
            else
            {
                _datapath = DataPath;
            }

            if (_datapath.EndsWith(_S) == false)
            {
                _datapath += _S;
            }

            // check if "instances" folder exist -> multi instance mode
            if (Directory.Exists(_datapath + "instances"))
            {
                _log.Debug("Insances exist, loading...");
                _multiInstance = true;
                foreach (var d in Directory.GetDirectories(_datapath + "instances"))
                {
                    var dn = new DirectoryInfo(d);
                    var i  = new instance_handler();
                    i.dbpath = d;
                    if (Directory.Exists(d + _S + "Extensions"))
                    {
                        i.hasExtensions = true;
                    }
                    _instances.Add(dn.Name.ToLower(), i);
                }
            }
            _defaultInstance.rdb      = RaptorDB.Open(DataPath);
            _defaultInstance.register = _defaultInstance.rdb.GetType().GetMethod("RegisterView", BindingFlags.Instance | BindingFlags.Public);
            _defaultInstance.save     = _defaultInstance.rdb.GetType().GetMethod("Save", BindingFlags.Instance | BindingFlags.Public);

            Initialize();
            _server.Start(port, processpayload);

            // add timer to cleanup connected clients
            _concleanuptimer           = new System.Timers.Timer(30 * 1000);
            _concleanuptimer.AutoReset = true;
            _concleanuptimer.Enabled   = true;
            _concleanuptimer.Elapsed  += _concleanuptimer_Elapsed;

            _unusedinstancetimer           = new System.Timers.Timer(300 * 1000);// FIX : configuration here
            _unusedinstancetimer.AutoReset = true;
            _unusedinstancetimer.Enabled   = true;
            _unusedinstancetimer.Elapsed  += _unusedinstancetimer_Elapsed;
        }
예제 #4
0
 public rdbRest(int HttpPort, RaptorDB rdb, string routingpath, bool localonly) : base(HttpPort, localonly, System.Net.AuthenticationSchemes.None, "raptordb")
 {
     _rdb = rdb;
     //save = _rdb.GetType().GetMethod("Save", BindingFlags.Instance | BindingFlags.Public);
     //register = _rdb.GetType().GetMethod("RegisterView", BindingFlags.Instance | BindingFlags.Public);
     if (_S == "/")
     {
         _path = routingpath.Replace("\\", "/");
     }
     else
     {
         _path = routingpath;
     }
 }
예제 #5
0
        static RaptorDB.RaptorDB rdb; // 1 instance

        static void Main(string[] args)
        {
            rdb = RaptorDB.RaptorDB.Open("data"); // a "data" folder beside the executable
            RaptorDB.Global.RequirePrimaryView = false;

            Console.WriteLine("Registering views..");
            rdb.RegisterView(new SalesInvoiceView());

            DoWork();

            Console.WriteLine("press any key...");
            Console.ReadKey();
            Console.WriteLine("\r\nShutting down...");
            rdb.Shutdown(); // explicit shutdown
        }
예제 #6
0
        public RestServer(int HttpPort, RaptorDB.RaptorDB rdb, string routingpath, bool localonly)
        {
            _localonly = localonly;
            _port      = HttpPort;
            _rdb       = rdb;
            //save = _rdb.GetType().GetMethod("Save", BindingFlags.Instance | BindingFlags.Public);
            //register = _rdb.GetType().GetMethod("RegisterView", BindingFlags.Instance | BindingFlags.Public);
            if (_S == "/")
            {
                _path = routingpath.Replace("\\", "/");
            }
            else
            {
                _path = routingpath;
            }

            Task.Factory.StartNew(() => Start(), TaskCreationOptions.LongRunning);
        }
예제 #7
0
        public RaptorDBServer(int port, string DataPath)
        {
            _path = Directory.GetCurrentDirectory();
            AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
            //AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit);
            _server = new NetworkServer();

            _datapath = DataPath;
            if (_datapath.EndsWith(_S) == false)
            {
                _datapath += _S;
            }
            _raptor  = RaptorDB.Open(DataPath);
            register = _raptor.GetType().GetMethod("RegisterView", BindingFlags.Instance | BindingFlags.Public);
            save     = _raptor.GetType().GetMethod("Save", BindingFlags.Instance | BindingFlags.Public);
            Initialize();
            _server.Start(port, processpayload);
        }