public virtual Stream Render(out string mimeType) { if (CacheProvider.ExistsInCache(MapRequestConfig)) { ///todo: think of a less hacky solution to mime type here! mimeType = MapRequestConfig.MimeType; Stream s = CacheProvider.RetrieveStream(MapRequestConfig); s.Position = 0; return(s); } else { RaiseBeforeInitializeMap(); InitMap(); RaiseMapInitialized(); RaiseBeforeLoadLayers(); LoadLayers(); RaiseLayersLoaded(); ConfigureMap(); RaiseBeforeLoadMapState(); LoadMapState(); RaiseMapStateLoaded(); ConfigureRenderer(); RaiseBeforeMapRender(); Stream s = MapRenderer.Render(Map, out mimeType); try { if (string.Compare(mimeType, MapRequestConfig.MimeType, true) == 0) { ///don't cache it if there is a mime type mismatch. ///perhaps we should raise an exception? s.Position = 0; CacheProvider.SaveToCache(MapRequestConfig, s); s.Position = 0; } RaiseMapRenderDone(); return(s); } catch { if (s != null) { s.Close(); } CacheProvider.RemoveFromCache(MapRequestConfig); throw; } } }
public override Stream Render(out string mimeType) { Stream s = null; if (CacheProvider.ExistsInCache(MapRequestConfig)) { mimeType = MapRequestConfig.MimeType; s = CacheProvider.RetrieveStream(MapRequestConfig); s.Position = 0; return(s); } try { RaiseBeforeInitializeMap(); InitMap(); RaiseMapInitialized(); RaiseBeforeLoadLayers(); LoadLayers(); RaiseLayersLoaded(); ConfigureMap(); if (MapRequestConfig.WmsMode == WmsMode.Capabilites) { XmlDocument caps = Capabilities.GetCapabilities(Context, Map, ServiceDescription); s = new MemoryStream(); caps.Save(s); mimeType = "text/xml"; } else { ConfigureRenderer(); AssignMonitorToDataProviders(); RaiseBeforeLoadMapState(); LoadMapState(); RaiseMapStateLoaded(); ConfigureMapView(); RaiseBeforeMapRender(); s = MapView.Render(out mimeType); } if (s == null) { return(null); } try { if (string.Compare(mimeType, MapRequestConfig.MimeType, true) == 0) { ///don't cache it if there is a mime type mismatch. ///perhaps we should raise an exception? s.Seek(0L, SeekOrigin.Begin); CacheProvider.SaveToCache(MapRequestConfig, s); s.Seek(0L, SeekOrigin.Begin); } RaiseMapRenderDone(); return(s); } catch { CacheProvider.RemoveFromCache(MapRequestConfig); throw; } } catch (ClientDisconnectedException) { if (s != null) { s.Close(); } throw; } catch (XmlFormatableExceptionBase) { if (s != null) { s.Close(); } throw; } catch (Exception ex) { if (s != null) { s.Close(); } throw new XmlFormatableExceptionWrapper(ex); } }
public virtual Stream Render(out String mimeType) { Stream s = null; if (CacheProvider.ExistsInCache(MapRequestConfig)) { mimeType = MapRequestConfig.MimeType; s = CacheProvider.RetrieveStream(MapRequestConfig); s.Position = 0; return(s); } try { RaiseBeforeInitializeMap(); InitMap(); RaiseMapInitialized(); RaiseBeforeLoadLayers(); LoadLayers(); RaiseLayersLoaded(); ConfigureMap(); ConfigureRenderer(); AssignMonitorToDataProviders(); RaiseBeforeLoadMapState(); LoadMapState(); RaiseMapStateLoaded(); ConfigureMapView(); RaiseBeforeMapRender(); s = MapView.Render(out mimeType); if (s == null) { return(null); } try { if (String.Compare(mimeType, MapRequestConfig.MimeType, true) == 0) { ///don't cache it if there is a mime type mismatch. ///perhaps we should raise an exception? s.Seek(0, SeekOrigin.Begin); CacheProvider.SaveToCache(MapRequestConfig, s); s.Seek(0, SeekOrigin.Begin); } RaiseMapRenderDone(); return(s); } catch { CacheProvider.RemoveFromCache(MapRequestConfig); throw; } } catch (ClientDisconnectedException) { if (!(s == null)) { s.Close(); } throw; } catch (XmlFormatableExceptionBase) { if (s != null) { s.Close(); } throw; } catch (Exception ex) { if (s != null) { s.Close(); } throw new XmlFormatableExceptionWrapper(ex); } }