/// <summary> /// Creates a new instance monitor. /// </summary> public InstanceMonitor(TileApiConfiguration apiConfiguration, InstanceConfiguration instanceConfiguration, ApiBootstrapper.InstanceLoaderDelegate instanceLoader) { _filesToMonitor = new List<FileMonitor>(); _hasChanged = false; _lastChange = DateTime.Now.Ticks; _reloadDelegate = instanceLoader; _apiConfiguration = apiConfiguration; _instanceConfiguration = instanceConfiguration; _timer = new Timer(Tick, null, System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite); }
/// <summary> /// Loads a new instance. /// </summary> /// <param name="apiConfiguration"></param> /// <param name="instanceConfiguration"></param> /// <returns></returns> private static bool LoadInstance(TileApiConfiguration apiConfiguration, InstanceConfiguration instanceConfiguration) { // get data file configuration. var data = instanceConfiguration.Data; // get mapcss configuration. var mapCSS = instanceConfiguration.MapCSS; if (string.IsNullOrWhiteSpace(mapCSS)) { } // get the format. var format = instanceConfiguration.Format; // get the include file. try { // create routing instance. OsmSharp.Logging.Log.TraceEvent("Bootstrapper", OsmSharp.Logging.TraceEventType.Information, string.Format("Creating {0} instance...", instanceConfiguration.Name)); switch (format.ToLowerInvariant()) { case "osm-xml": using (var stream = new FileInfo(data).OpenRead()) { var streamSource = new XmlOsmStreamSource(stream); using (var cssStream = new FileInfo(mapCSS).OpenRead()) { ApiBootstrapper.BuildTileServer("tiles_" + instanceConfiguration.Name, streamSource, cssStream, apiConfiguration.Cache); } } break; case "osm-pbf": using (var stream = new FileInfo(data).OpenRead()) { var streamSource = new PBFOsmStreamSource(stream); using (var cssStream = new FileInfo(mapCSS).OpenRead()) { ApiBootstrapper.BuildTileServer("tiles_" + instanceConfiguration.Name, streamSource, cssStream, apiConfiguration.Cache); } } break; default: throw new Exception(string.Format("Unrecognised raw osm format: {0}", format)); } OsmSharp.Logging.Log.TraceEvent("Bootstrapper", OsmSharp.Logging.TraceEventType.Information, string.Format("Instance {0} created successfully!", instanceConfiguration.Name)); } catch (Exception ex) { OsmSharp.Logging.Log.TraceEvent("Bootstrapper", OsmSharp.Logging.TraceEventType.Error, string.Format("Exception occured while creating instance {0}:{1}", instanceConfiguration.Name, ex.ToInvariantString())); return false; } return true; }