public BaseStrategy(ILogMedia media, Encoding encoding, IRegex headerRe, TextStreamPositioningParams textStreamPositioningParams) { this.media = media; this.encoding = encoding; this.headerRe = headerRe; this.textStreamPositioningParams = textStreamPositioningParams; }
public MultiThreadedStrategy(ILogMedia media, Encoding encoding, IRegex headerRe, MessagesSplitterFlags splitterFlags, TextStreamPositioningParams textStreamPositioningParams, string parentLoggingPrefix, ITraceSourceFactory traceSourceFactory) : this(media, encoding, headerRe, splitterFlags, false, textStreamPositioningParams, parentLoggingPrefix, traceSourceFactory) { BytesToParsePerThread = GetBytesToParsePerThread(textStreamPositioningParams); }
public UserDefinedFormatFactory(UserDefinedFactoryParams createParams) : base(createParams) { var formatSpecificNode = createParams.FormatSpecificNode; ReadPatterns(formatSpecificNode, patterns); var boundsNodes = formatSpecificNode.Elements("bounds").Take(1); var beginFinder = BoundFinder.CreateBoundFinder(boundsNodes.Select(n => n.Element("begin")).FirstOrDefault()); var endFinder = BoundFinder.CreateBoundFinder(boundsNodes.Select(n => n.Element("end")).FirstOrDefault()); this.tempFilesManager = createParams.TempFilesManager; formatInfo = new Lazy <JsonFormatInfo>(() => { string transform = ReadParameter(formatSpecificNode, "transform"); if (transform == null) { throw new Exception("Wrong JSON format definition: transform is not defined"); } LoadedRegex head = ReadRe(formatSpecificNode, "head-re", ReOptions.Multiline); LoadedRegex body = ReadRe(formatSpecificNode, "body-re", ReOptions.Singleline); string encoding = ReadParameter(formatSpecificNode, "encoding"); DejitteringParams?dejitteringParams = DejitteringParams.FromConfigNode( formatSpecificNode.Element("dejitter")); TextStreamPositioningParams textStreamPositioningParams = TextStreamPositioningParams.FromConfigNode( formatSpecificNode); return(new JsonFormatInfo(transform, head, body, beginFinder, endFinder, encoding, textStreamPositioningParams, dejitteringParams, viewOptions)); }); }
public static int GetBytesToParsePerThread(TextStreamPositioningParams textStreamPositioningParams) { if (textStreamPositioningParams.AlignmentBlockSize > DefaultBytesToParsePerThread) { return(textStreamPositioningParams.AlignmentBlockSize); } Debug.Assert((DefaultBytesToParsePerThread % textStreamPositioningParams.AlignmentBlockSize) == 0); return(DefaultBytesToParsePerThread); }
public UserDefinedFormatFactory(UserDefinedFactoryParams createParams) : base(createParams) { var formatSpecificNode = createParams.FormatSpecificNode; ReadPatterns(formatSpecificNode, patterns); var boundsNodes = formatSpecificNode.Elements("bounds").Take(1); var beginFinder = BoundFinder.CreateBoundFinder(boundsNodes.Select(n => n.Element("begin")).FirstOrDefault()); var endFinder = BoundFinder.CreateBoundFinder(boundsNodes.Select(n => n.Element("end")).FirstOrDefault()); tempFilesManager = createParams.TempFilesManager; fieldsProcessorFactory = createParams.FieldsProcessorFactory; regexFactory = createParams.RegexFactory; traceSourceFactory = createParams.TraceSourceFactory; fmtInfo = new Lazy <FormatInfo>(() => { FieldsProcessor.IInitializationParams fieldsInitParams = fieldsProcessorFactory.CreateInitializationParams( formatSpecificNode.Element("fields-config"), performChecks: true); MessagesReaderExtensions.XmlInitializationParams extensionsInitData = new MessagesReaderExtensions.XmlInitializationParams( formatSpecificNode.Element("extensions")); DejitteringParams?dejitteringParams = DejitteringParams.FromConfigNode( formatSpecificNode.Element("dejitter")); TextStreamPositioningParams textStreamPositioningParams = TextStreamPositioningParams.FromConfigNode( formatSpecificNode); RotationParams rotationParams = RotationParams.FromConfigNode( formatSpecificNode.Element("rotation")); FormatInfo.FormatFlags flags = FormatInfo.FormatFlags.None; if (formatSpecificNode.Element("plain-text-search-optimization").AttributeValue("allowed") == "yes") { flags |= FormatInfo.FormatFlags.AllowPlainTextSearchOptimization; } return(new FormatInfo( ReadRe(formatSpecificNode, "head-re", ReOptions.Multiline), ReadRe(formatSpecificNode, "body-re", ReOptions.Singleline), ReadParameter(formatSpecificNode, "encoding"), fieldsInitParams, extensionsInitData, dejitteringParams, textStreamPositioningParams, flags, rotationParams, beginFinder, endFinder )); }); uiKey = ReadParameter(formatSpecificNode, "ui-key"); }
public JsonFormatInfo( string transform, LoadedRegex headRe, LoadedRegex bodyRe, BoundFinder beginFinder, BoundFinder endFinder, string encoding, TextStreamPositioningParams textStreamPositioningParams, DejitteringParams?dejitteringParams, IFormatViewOptions viewOptions) : base(MessagesReaderExtensions.XmlInitializationParams.Empty) { Encoding = encoding; HeadRe = headRe; BodyRe = bodyRe; BeginFinder = beginFinder; EndFinder = endFinder; TextStreamPositioningParams = textStreamPositioningParams; DejitteringParams = dejitteringParams; ViewOptions = viewOptions; Transform = JObject.Parse(transform); }
public XmlFormatInfo(XmlNode xsl, LoadedRegex headRe, LoadedRegex bodyRe, BoundFinder beginFinder, BoundFinder endFinder, string encoding, MessagesReaderExtensions.XmlInitializationParams extensionsInitData, TextStreamPositioningParams textStreamPositioningParams, DejitteringParams?dejitteringParams, IFormatViewOptions viewOptions) : base(extensionsInitData) { Encoding = encoding; HeadRe = headRe; BodyRe = bodyRe; BeginFinder = beginFinder; EndFinder = endFinder; TextStreamPositioningParams = textStreamPositioningParams; DejitteringParams = dejitteringParams; ViewOptions = viewOptions; if (xsl != null) { Dictionary <string, string> nsTable = new Dictionary <string, string>(); foreach (XmlAttribute ns in xsl.SelectNodes(".//namespace::*")) { if (ns.Value == "http://www.w3.org/XML/1998/namespace") { continue; } if (ns.Value == "http://www.w3.org/1999/XSL/Transform") { continue; } if (ns.Value == Properties.LogJointNS) { continue; } nsTable[ns.Name] = ns.Value; } StringBuilder nsdeclBuilder = new StringBuilder(); foreach (KeyValuePair <string, string> ns in nsTable) { nsdeclBuilder.AppendFormat("{0}='{1}' ", ns.Key, ns.Value); } NSDeclaration = nsdeclBuilder.ToString(); Transform = new XslCompiledTransform(); Transform.Load(xsl); } }
public UserDefinedFormatFactory(UserDefinedFactoryParams createParams) : base(createParams) { var formatSpecificNode = createParams.FormatSpecificNode; ReadPatterns(formatSpecificNode, patterns); var boundsNodes = formatSpecificNode.Elements("bounds").Take(1); var beginFinder = BoundFinder.CreateBoundFinder(boundsNodes.Select(n => n.Element("begin")).FirstOrDefault()); var endFinder = BoundFinder.CreateBoundFinder(boundsNodes.Select(n => n.Element("end")).FirstOrDefault()); this.tempFilesManager = createParams.TempFilesManager; this.regexFactory = createParams.RegexFactory; this.traceSourceFactory = createParams.TraceSourceFactory; formatInfo = new Lazy <XmlFormatInfo>(() => { XmlDocument tmpDoc = new XmlDocument(); tmpDoc.LoadXml(formatSpecificNode.ToString()); XmlElement xsl = tmpDoc.DocumentElement.SelectSingleNode("xsl:stylesheet", nsMgr) as XmlElement; if (xsl == null) { throw new Exception("Wrong XML-based format definition: xsl:stylesheet is not defined"); } LoadedRegex head = ReadRe(formatSpecificNode, "head-re", ReOptions.Multiline); LoadedRegex body = ReadRe(formatSpecificNode, "body-re", ReOptions.Singleline); string encoding = ReadParameter(formatSpecificNode, "encoding"); MessagesReaderExtensions.XmlInitializationParams extensionsInitData = new MessagesReaderExtensions.XmlInitializationParams(formatSpecificNode.Element("extensions")); DejitteringParams?dejitteringParams = DejitteringParams.FromConfigNode( formatSpecificNode.Element("dejitter")); TextStreamPositioningParams textStreamPositioningParams = TextStreamPositioningParams.FromConfigNode( formatSpecificNode); return(new XmlFormatInfo(xsl, head, body, beginFinder, endFinder, encoding, extensionsInitData, textStreamPositioningParams, dejitteringParams, viewOptions)); }); uiKey = ReadParameter(formatSpecificNode, "ui-key"); }
public FormatInfo( LoadedRegex headRe, LoadedRegex bodyRe, string encoding, FieldsProcessor.InitializationParams fieldsParams, MessagesReaderExtensions.XmlInitializationParams extensionsInitData, DejitteringParams?dejitteringParams, TextStreamPositioningParams textStreamPositioningParams, FormatFlags flags, RotationParams rotationParams ) : base(extensionsInitData) { this.HeadRe = headRe; this.BodyRe = bodyRe; this.Encoding = encoding; this.FieldsProcessorParams = fieldsParams; this.DejitteringParams = dejitteringParams; this.TextStreamPositioningParams = textStreamPositioningParams; this.Flags = flags; this.RotationParams = rotationParams; }
public UserDefinedFormatFactory(UserDefinedFactoryParams createParams) : base(createParams) { var formatSpecificNode = createParams.FormatSpecificNode; ReadPatterns(formatSpecificNode, patterns); tempFilesManager = createParams.TempFilesManager; fmtInfo = new Lazy <FormatInfo>(() => { Type precompiledUserCode = ReadPrecompiledUserCode(createParams.RootNode); FieldsProcessor.InitializationParams fieldsInitParams = new FieldsProcessor.InitializationParams( formatSpecificNode.Element("fields-config"), true, precompiledUserCode); MessagesReaderExtensions.XmlInitializationParams extensionsInitData = new MessagesReaderExtensions.XmlInitializationParams( formatSpecificNode.Element("extensions")); DejitteringParams?dejitteringParams = DejitteringParams.FromConfigNode( formatSpecificNode.Element("dejitter")); TextStreamPositioningParams textStreamPositioningParams = TextStreamPositioningParams.FromConfigNode( formatSpecificNode); RotationParams rotationParams = RotationParams.FromConfigNode( formatSpecificNode.Element("rotation")); FormatInfo.FormatFlags flags = FormatInfo.FormatFlags.None; if (formatSpecificNode.Element("plain-text-search-optimization").AttributeValue("allowed") == "yes") { flags |= FormatInfo.FormatFlags.AllowPlainTextSearchOptimization; } return(new FormatInfo( ReadRe(formatSpecificNode, "head-re", ReOptions.Multiline), ReadRe(formatSpecificNode, "body-re", ReOptions.Singleline), ReadParameter(formatSpecificNode, "encoding"), fieldsInitParams, extensionsInitData, dejitteringParams, textStreamPositioningParams, flags, rotationParams )); }); uiKey = ReadParameter(formatSpecificNode, "ui-key"); }
internal MultiThreadedStrategy(ILogMedia media, Encoding encoding, IRegex headerRe, MessagesSplitterFlags splitterFlags, bool useMockThreading, TextStreamPositioningParams textStreamPositioningParams, string parentLoggingPrefix, ITraceSourceFactory traceSourceFactory) : base(media, encoding, headerRe, textStreamPositioningParams) { if (parentLoggingPrefix != null) { this.tracer = traceSourceFactory.CreateTraceSource("LogSource", string.Format("{0}.mts_{1:x4}", parentLoggingPrefix, Hashing.GetShortHashCode(this.GetHashCode()))); } this.streamDataPool = new ThreadSafeObjectPool <Byte[]>(pool => { var ret = new Byte[BytesToParsePerThread]; tracer.Info("Allocating new piece of stream data: {0:x8}", ret.GetHashCode()); return(ret); }); this.outputBuffersPool = new ThreadSafeObjectPool <List <PostprocessedMessage> >(pool => { var ret = new List <PostprocessedMessage>(1024 * 8); tracer.Info("Allocating new output buffer: {0:x8}", ret.GetHashCode()); return(ret); }); this.useMockThreading = useMockThreading; this.splitterFlags = splitterFlags; }
internal MultiThreadedStrategy(ILogMedia media, Encoding encoding, IRegex headerRe, MessagesSplitterFlags splitterFlags, bool useMockThreading, TextStreamPositioningParams textStreamPositioningParams) : base(media, encoding, headerRe, textStreamPositioningParams) { this.streamDataPool = new ThreadSafeObjectPool <Byte[]>(pool => { var ret = new Byte[BytesToParsePerThread]; tracer.Info("Allocating new piece of stream data: {0}", ret.GetHashCode()); return(ret); }); this.outputBuffersPool = new ThreadSafeObjectPool <List <PostprocessedMessage> >(pool => { var ret = new List <PostprocessedMessage>(1024 * 8); tracer.Info("Allocating new output buffer: {0}", ret.GetHashCode()); return(ret); }); this.useMockThreading = useMockThreading; this.splitterFlags = splitterFlags; }
public MultiThreadedStrategy(ILogMedia media, Encoding encoding, IRegex headerRe, MessagesSplitterFlags splitterFlags, TextStreamPositioningParams textStreamPositioningParams) : this(media, encoding, headerRe, splitterFlags, false, textStreamPositioningParams) { BytesToParsePerThread = GetBytesToParsePerThread(textStreamPositioningParams); }
public SingleThreadedStrategy(ILogMedia media, Encoding encoding, IRegex headerRe, MessagesSplitterFlags splitterFlags, TextStreamPositioningParams textStreamPositioningParams) : base(media, encoding, headerRe, textStreamPositioningParams) { this.textSplitter = new ReadMessageFromTheMiddleProblem(new MessagesSplitter(new StreamTextAccess(media.DataStream, encoding, textStreamPositioningParams), headerRe, splitterFlags)); }