public override void Init(System.Collections.Generic.Dictionary <object, object> dictionary) { base.Init(dictionary); lock (initLock) { if (collectorsConfig == null) { Stream configStream = null; String config = Path.GetDirectoryName(Assembly.GetAssembly(typeof(HttpParseCollectPipe)).Location) + "\\conf\\DataCollectors.config"; try { if (File.Exists(config)) { configStream = File.Open(config, FileMode.Open); } else { configStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MySpace.MSFast.Engine.DataCollectors.config"); } collectorsConfig = new CollectorsConfig(configStream); } catch { } finally { try { if (configStream != null) { configStream.Close(); } } catch { } configStream = null; } } } }
public override void Flush() { CollectorsConfig cc = null; Stream configStream = null; try { configStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MySpace.MSFast.Engine.DataCollectors.config"); cc = new CollectorsConfig(configStream); } catch { } finally { try { if (configStream != null) { configStream.Close(); } } catch { } configStream = null; } if (this.CollectionInfoParser.CollectFlags == 0 || cc == null || cc.Collection == null || String.IsNullOrEmpty(cc.Collection.JSMain) || String.IsNullOrEmpty(cc.Collection.Html) || String.IsNullOrEmpty(cc.Collection.JSSetTestID) || String.IsNullOrEmpty(cc.Collection.JSStartCollecting)) { return; } CollectPageInformation cpi = CollectPageInformation.Render; try{ cpi = (CollectPageInformation)Enum.ToObject(typeof(CollectPageInformation), this.CollectionInfoParser.CollectFlags); }catch { } StringBuilder scripts = new StringBuilder(); foreach (CollectorsConfig.Collector cs in cc) { if ((cpi & cs.CollectType) == cs.CollectType) { scripts.Append(cs.Collection); } } if (this.CollectionInfoParser != null && this.Configuration is EngineSuProxyConfiguration) { scripts.Insert(0, String.Format(cc.Collection.JSSetTestID, 0, 0, ((EngineSuProxyConfiguration)this.Configuration).CollectionID, this.CollectionInfoParser.URL, this.CollectionInfoParser.URLEncoded)); scripts.Insert(0, cc.Collection.JSMain); String page = String.Format(cc.Collection.Html, scripts.ToString(), cc.Collection.JSStartCollecting); byte[] b = Encoding.UTF8.GetBytes(page); base.SendHeader(String.Format(responseHeader, b.Length)); base.SendBodyData(b, 0, b.Length); } base.Flush(); }