Beispiel #1
0
 XElement CreateElement(NetworkMessageEvent evt, string name, params XAttribute[] attrs)
 {
     if ((flags & Flags.CoreMessageAttrsOnly) != 0)
     {
         // forget event-specific attrs - thay are not "core" attrs
         attrs = new XAttribute[0];
     }
     return(CreateElement((Event)evt, name, attrs.Concat(new[] {
         new XAttribute(SC.Attr_MessageDirection, (int)evt.MessageDirection),
         new XAttribute(SC.Attr_MessageType, (int)evt.MessageType),
         (evt.MessageId != null) ? new XAttribute(SC.Attr_MessageId, evt.MessageId) : null,
         (evt.EventType != null) ? new XAttribute(SC.Attr_EventType, evt.EventType) : null,
         (evt.RemoteSideId != null) ? new XAttribute(SC.Attr_Remote, evt.RemoteSideId) : null,
         (evt.TargetIdHint != null) ? new XAttribute(SC.Attr_TargetId, evt.TargetIdHint) : null,
         (evt.Status != EventStatus.Unspecified) ? new XAttribute(SC.Attr_Status, (int)evt.Status) : null,
     }).ToArray()));
 }
 void IEventsVisitor.Visit(NetworkMessageEvent evt)
 {
     Output.AppendFormat("Net.{2}: id='{0}' {1}", evt.MessageId, evt.DisplayName, evt.EventType);
 }
Beispiel #3
0
 void IEventsVisitor.Visit(NetworkMessageEvent evt)
 {
     CreateElement(evt, SC.Elt_NetworkMessage);
 }
        public bool TryDeserialize(XElement elt, out Event ret)
        {
            ret = null;
            switch (elt.Name.LocalName)
            {
            case SC.Elt_HttpMessage:
                ret = new HttpMessage(
                    MakeTrigger(elt),
                    Attr(elt, SC.Attr_DisplayName),
                    MessageDirection(elt, SC.Attr_MessageDirection),
                    MessageType(elt, SC.Attr_MessageType),
                    Attr(elt, SC.Attr_MessageId),
                    Attr(elt, SC.Attr_Remote),
                    Attr(elt, SC.Attr_Method),
                    "",
                    Enumerable.Empty <KeyValuePair <string, string> >(),
                    StatusCode(elt, SC.Attr_StatusCode),
                    targetIdHint: Attr(elt, SC.Attr_TargetId),
                    statusComment: Attr(elt, SC.Attr_StatusComment)
                    );
                break;

            case SC.Elt_NetworkMessage:
                ret = new NetworkMessageEvent(
                    MakeTrigger(elt),
                    Attr(elt, SC.Attr_DisplayName),
                    MessageDirection(elt, SC.Attr_MessageDirection),
                    MessageType(elt, SC.Attr_MessageType),
                    typesPool.Intern(Attr(elt, SC.Attr_EventType)),
                    Attr(elt, SC.Attr_MessageId),
                    Attr(elt, SC.Attr_TargetId),
                    remoteNodeIdsPool.Intern(Attr(elt, SC.Attr_Remote))
                    );
                break;

            case SC.Elt_ResponselessNetworkMessage:
                ret = new ResponselessNetworkMessageEvent(
                    MakeTrigger(elt),
                    Attr(elt, SC.Attr_DisplayName),
                    MessageDirection(elt, SC.Attr_MessageDirection),
                    MessageType(elt, SC.Attr_MessageType),
                    messageId: Attr(elt, SC.Attr_MessageId),
                    targetIdHint: Attr(elt, SC.Attr_TargetId)
                    );
                break;

            case SC.Elt_Cancellation:
                ret = new RequestCancellationEvent(
                    MakeTrigger(elt),
                    Attr(elt, SC.Attr_DisplayName),
                    Attr(elt, SC.Attr_MessageId)
                    );
                break;

            case SC.Elt_Function:
                ret = new FunctionInvocationEvent(
                    MakeTrigger(elt),
                    Attr(elt, SC.Attr_DisplayName),
                    MessageDirection(elt, SC.Attr_MessageDirection),
                    MessageType(elt, SC.Attr_MessageType),
                    Attr(elt, SC.Attr_MessageId)
                    );
                break;

            case SC.Elt_Meta:
                ret = new MetadataEvent(
                    MakeTrigger(elt),
                    Attr(elt, SC.Attr_MetaKey),
                    Attr(elt, SC.Attr_MetaValue)
                    );
                break;
            }
            if (ret != null)
            {
                ret.Tags = tagsPool.Intern(
                    new HashSet <string>((Attr(elt, SC.Attr_Tags) ?? "").Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)));
                ret.Status = EventStatus(elt, SC.Attr_Status);
            }
            return(ret != null);
        }