Пример #1
0
        public void TraceInsert(UntypedEvent evt, string prefix)
        {
            StringBuilder builder = new StringBuilder()
                                    .Append(this._config.TraceName)
                                    .Append(prefix);

            if (evt.EventKind != EventKind.Insert)
            {
                throw new InvalidOperationException();
            }

            for (int ordinal = 0; ordinal < this._type.Fields.Count; ordinal++)
            {
                if (this._config.SingleLine)
                {
                    builder.Append(" ");
                }
                else
                {
                    builder
                    .AppendLine()
                    .Append('\t')
                    .Append(this._type.FieldsByOrdinal[ordinal].Name)
                    .Append(" = ");
                }

                object value = evt.GetField(ordinal) ?? "NULL";
                builder.Append(String.Format(CultureInfo.InvariantCulture, "{0}", value));
            }

            this._trace(builder.ToString());
        }
Пример #2
0
        /// <summary>
        /// Traces an insert event.
        /// </summary>
        /// <param name="evt">Event to trace.</param>
        /// <param name="prefix">String prefix to use when tracing the event.</param>
        public void TraceInsert(UntypedEvent evt, string prefix)
        {
            StringBuilder builder = new StringBuilder()
                .Append(this.config.TraceName)
                .Append(": ")
                .Append(prefix);

            if (evt.EventKind != EventKind.Insert)
            {
                throw new InvalidOperationException();
            }

            for (int ordinal = 0; ordinal < this.type.Fields.Count; ordinal++)
            {
                if (this.config.SingleLine)
                {
                    builder.Append(" ");
                }
                else
                {
                    builder
                        .AppendLine()
                        .Append('\t')
                        .Append(this.type.FieldsByOrdinal[ordinal].Name)
                        .Append(" = ");
                }

                object value = evt.GetField(ordinal) ?? "NULL";
                builder.Append(String.Format(CultureInfo.InvariantCulture, "{0}", value));
            }

            this.trace(builder.ToString());
        }
Пример #3
0
        private static string CreateLineFromEvent(UntypedEvent evt, CepEventType eventType, string[] delimiter, Dictionary <int, int> order, CultureInfo culture)
        {
            StringBuilder builder       = new StringBuilder();
            PointEvent    pointEvent    = evt as PointEvent;
            IntervalEvent intervalEvent = evt as IntervalEvent;
            EdgeEvent     edgeEvent     = evt as EdgeEvent;

            if (EventKind.Cti == evt.EventKind)
            {
                builder
                .Append("CTI")
                .Append(delimiter[0]);

                if (null != pointEvent)
                {
                    builder.Append(pointEvent.StartTime.ToString());
                }
                else if (null != intervalEvent)
                {
                    builder.Append(intervalEvent.StartTime.ToString());
                }
                else
                {
                    builder.Append(edgeEvent.StartTime.ToString());
                }
            }
            else
            {
                builder
                .Append("INSERT")
                .Append(delimiter[0]);

                if (null != pointEvent)
                {
                    builder.Append(pointEvent.StartTime.ToString());
                }
                else if (null != intervalEvent)
                {
                    builder
                    .Append(intervalEvent.StartTime.ToString())
                    .Append(delimiter[0])
                    .Append(intervalEvent.EndTime.ToString())
                    .Append(delimiter[0]);
                }
                else
                {
                    builder
                    .Append(edgeEvent.EdgeType.ToString())
                    .Append(delimiter[0])
                    .Append(edgeEvent.StartTime.ToString())
                    .Append(delimiter[0])
                    .Append((EdgeType.End == edgeEvent.EdgeType) ? edgeEvent.EndTime.ToString() : string.Empty)
                    .Append(delimiter[0]);
                }

                SerializePayload(evt, eventType, delimiter, order, culture, ref builder);
            }

            return(builder.ToString());
        }
Пример #4
0
 public static void AddPayloadDetailsRow(StringBuilder sb,
                                         UntypedEvent evt, CepEventType eventType)
 {
     foreach (var p in eventType.FieldsByOrdinal)
     {
         object value = evt.GetField(p.Key);
         sb.AppendFormat("{0} = {1}, ", p.Value.Name,
                         ((value != null) ? value.ToString() : "NULL"));
     }
 }
Пример #5
0
 private static void SerializePayload(UntypedEvent evt, CepEventType eventType, string[] delimiter, Dictionary <int, int> order, CultureInfo culture, ref StringBuilder builder)
 {
     for (int ordinal = 0; ordinal < eventType.FieldsByOrdinal.Count; ordinal++)
     {
         object value = evt.GetField(order[ordinal]) ?? "NULL";
         builder
         .AppendFormat(culture, "{0}", value)
         .Append(delimiter[0]);
     }
 }
Пример #6
0
        /// <summary>
        /// Given an untyped PointEvent generate a textual representation suitable for console,
        /// trace, etc, output.
        /// </summary>
        /// <param name="currEvent">An untyped PointEvent</param>
        /// <returns>A formatted string of the contents of the PointEvent</returns>
        public static string FormatEventForDisplay(this UntypedEvent evt,
                                                   CepEventType eventType, bool verbose)
        {
            StringBuilder  sb        = new StringBuilder();
            DateTimeOffset startTime = DateTimeOffset.MinValue;
            DateTimeOffset endTime   = DateTimeOffset.MinValue;

            if (evt is PointEvent)
            {
                startTime = ((PointEvent)evt).StartTime;
                sb.AppendFormat("POINT({0}) ", startTime.ToString("hh:mm:ss.fff"));
            }

            if (evt is IntervalEvent)
            {
                startTime = ((IntervalEvent)evt).StartTime;
                endTime   = ((IntervalEvent)evt).EndTime;
                sb.AppendFormat("INTERVAL({0} - {1}) ",
                                startTime.ToString("hh:mm:ss.fff"),
                                endTime.ToString("hh:mm:ss.fff"));
            }

            if (evt is EdgeEvent)
            {
                startTime = ((EdgeEvent)evt).StartTime;
                endTime   = DateTimeOffset.MaxValue;
                sb.AppendFormat("EDGE({0} - ?) ",
                                startTime.ToString("hh:mm:ss.fff"));
            }

            if (EventKind.Cti == evt.EventKind)
            {
                sb.AppendFormat(" CTI - start time: {0}", startTime);
            }
            else if (verbose)
            {
                AddPayloadDetailsList(sb, evt, eventType);
            }
            else
            {
                AddPayloadDetailsRow(sb, evt, eventType);
            }

            return(sb.ToString());
        }
Пример #7
0
        /// <summary>
        /// Creates a string from an event payload.
        /// </summary>
        /// <param name="evt">Event of which to serialize the payload.</param>
        /// <param name="eventType">CEP event type.</param>
        /// <param name="delimiter">Delimiter between event fields.</param>
        /// <param name="builder">StringBuilder to append the payload string to.</param>
        private static void SerializePayload(UntypedEvent evt, CepEventType eventType, char delimiter, ref StringBuilder builder)
        {
            for (int ordinal = 0; ordinal < eventType.FieldsByOrdinal.Count; ordinal++)
            {
                object value = evt.GetField(ordinal) ?? "NULL";

                if (value.GetType().FullName == "System.Byte[]")
                {
                    System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
                    builder
                    .AppendFormat(CultureInfo.InvariantCulture, "{0}", enc.GetString((byte[])value))
                    .Append(delimiter);
                }
                else
                {
                    builder
                    .AppendFormat(CultureInfo.InvariantCulture, "{0}", value)
                    .Append(delimiter);
                }
            }
        }
Пример #8
0
        /// <summary>
        /// Creates a string from an event payload.
        /// </summary>
        /// <param name="evt">Event of which to serialize the payload.</param>
        /// <param name="eventType">CEP event type.</param>
        /// <param name="delimiter">Delimiter between event fields.</param>
        /// <param name="builder">StringBuilder to append the payload string to.</param>
        private static void SerializePayload(UntypedEvent evt, CepEventType eventType, char delimiter, ref StringBuilder builder)
        {
            for (int ordinal = 0; ordinal < eventType.FieldsByOrdinal.Count; ordinal++)
            {
                object value = evt.GetField(ordinal) ?? "NULL";

                if (value.GetType().FullName == "System.Byte[]")
                {
                    System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
                    builder
                        .AppendFormat(CultureInfo.InvariantCulture, "{0}", enc.GetString((byte[])value))
                        .Append(delimiter);
                }
                else
                {
                    builder
                        .AppendFormat(CultureInfo.InvariantCulture, "{0}", value)
                        .Append(delimiter);
                }
            }
        }