예제 #1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            textBox2.Text = SqliteHelper.connString;
            FilesMonitor fm = new FilesMonitor();
            DataSet      ds = fm.GetDirectories();

            dataGridView1.DataSource = ds.Tables[0];
        }
예제 #2
0
        private void button5_Click(object sender, EventArgs e)
        {
            string       dir = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
            FilesMonitor fm  = new FilesMonitor();

            fm.DeleteDirectories(dir);
            DataSet ds = fm.GetDirectories();

            dataGridView1.DataSource = ds.Tables[0];
        }
예제 #3
0
        private void button1_Click(object sender, EventArgs e)
        {
            folderBrowserDialog1.ShowDialog();
            string       path = folderBrowserDialog1.SelectedPath;
            FilesMonitor fm   = new FilesMonitor();

            fm.AddDirectories(path);
            DataSet ds = fm.GetDirectories();

            dataGridView1.DataSource = ds.Tables[0];
        }
        /// <summary>
        /// Loads the routerdb into ram and starts the file monitor that automatically checks
        /// for updates in the routerdb and reloads when necessary.
        /// </summary>
        public static void initialize(IConfiguration configuration)
        {
            var paths = configuration.GetSection("Paths");

            using (var stream = new FileInfo(paths.GetValue <string>("RouterdbFile")).OpenRead())
            {
                routerDb = RouterDb.Deserialize(stream);
            }
            router  = new Router(routerDb);
            monitor = new FilesMonitor <FileInfo>((f) =>
            {
                using (var stream = new FileInfo(paths.GetValue <string>("RouterdbFile")).OpenRead())
                {
                    routerDb = RouterDb.Deserialize(stream);
                }
                router = new Router(routerDb);
                return(true);
            }, new FileInfo(paths.GetValue <string>("RouterdbFile")));
            monitor.Start();
            monitor.AddFile(paths.GetValue <string>("RouterdbFile"));
        }
예제 #5
0
        private void button6_Click(object sender, EventArgs e)
        {
            FilesMonitor fm = new FilesMonitor();

            textBox1.Text = fm.SyncFiles();
        }
예제 #6
0
        /// <summary>
        /// Initializes all routing instance from the configuration in the configuration file.
        /// </summary>
        public static void BootFromConfiguration(string path)
        {
            try
            {
                // register vehicle profiles.
                Vehicle.RegisterVehicles();

                // load all .routerdb files.
                var dataDirectory = new DirectoryInfo(path);
                if (!dataDirectory.Exists)
                {
                    throw new DirectoryNotFoundException(
                              string.Format("Configured data directory doesn't exist: {0}", dataDirectory.FullName));
                }
                Logger.Log("Bootstrapper", TraceEventType.Information,
                           "Loading all routerdb's from path: {0}", dataDirectory.FullName);

                // load all relevant files.
                var routingFiles = dataDirectory.GetFiles("*.routerdb").Concat(
                    dataDirectory.GetFiles("*.multimodaldb"));
                if (routingFiles.Count() == 0)
                {
                    throw new DirectoryNotFoundException(
                              string.Format("No .routerdb files found in {0}", dataDirectory.FullName));
                }

                // load each routerdb on other threads.
                foreach (var file in routingFiles)
                {
                    var thread = new Thread((state) =>
                    {
                        var localFile = state as FileInfo;

                        if (Bootstrapper.LoadInstance(localFile))
                        {
                            var monitor = new FilesMonitor <FileInfo>((f) =>
                            {
                                return(Bootstrapper.LoadInstance(f));
                            }, localFile);
                            monitor.Start();
                            monitor.AddFile(file.FullName);
                            _fileMonitors.Add(monitor);
                        }
                    });
                    thread.Start(file);
                }

                // check if there are folder with OSM-XML or OSM-PBF file.
                var subDirs = dataDirectory.EnumerateDirectories();
                foreach (var subDir in subDirs)
                {
                    var osmFiles = subDir.EnumerateFiles("*.osm").Concat(
                        subDir.EnumerateFiles("*.osm.pbf")).ToArray();
                    if (osmFiles.Length > 0)
                    {
                        var thread = new Thread((state) =>
                        {
                            var localDirectory = state as DirectoryInfo;

                            if (Bootstrapper.LoadInstanceFromFolder(localDirectory))
                            {
                                var monitor = new FilesMonitor <DirectoryInfo>((f) =>
                                {
                                    return(Bootstrapper.LoadInstanceFromFolder(f));
                                }, localDirectory);
                                monitor.Start();
                                // add osm and osm-pbf files.
                                foreach (var osmFile in osmFiles)
                                {
                                    monitor.AddFile(osmFile.FullName);
                                }
                                foreach (var luaFile in subDir.EnumerateFiles("*.lua"))
                                {
                                    monitor.AddFile(luaFile.FullName);
                                }
                                _fileMonitors.Add(monitor);
                            }
                        });
                        thread.Start(subDir);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Log("Bootstrapper", TraceEventType.Critical,
                           "Failed to start service: {0}", ex.ToInvariantString());
            }
        }