Ejemplo n.º 1
0
        private void Initialize(UInt32 uniquePid, UInt64 objectId)
        {
            InitializeComponent();
            m_panelProcessInfo.Visible = uniquePid != 0;

            EventFormatter eventFormatter = new EventFormatter();

            m_colTime.DefaultCellStyle.Format           = "f";
            m_colObjectID.DefaultCellStyle.Format       = "x";
            m_colProcess.DefaultCellStyle.Format        = "x";
            m_colChildProcess.DefaultCellStyle.Format   = "x";
            m_colType.DefaultCellStyle.Format           = "objectType";
            m_colType.DefaultCellStyle.FormatProvider   = eventFormatter;
            m_colAction.DefaultCellStyle.Format         = "eventType";
            m_colAction.DefaultCellStyle.FormatProvider = eventFormatter;

            m_ds.FetchInfo(uniquePid, objectId);
            m_events.DataSource = m_ds;
            m_events.DataMember = "eventsList";

            if (uniquePid != 0)
            {
                m_processImageName.DataBindings.Add("Text", m_ds, "processInfo.imagePath");
                m_startTime.DataBindings.Add("Text", m_ds, "processInfo.startTime");
                m_finishTime.DataBindings.Add("Text", m_ds, "processInfo.finishTime");
                m_startEvent.DataBindings.Add("Text", m_ds, "processInfo.startEvent");
                m_finishEvent.DataBindings.Add("Text", m_ds, "processInfo.finishEvent");
                m_ownPID.DataBindings.Add("Text", m_ds, "processInfo.unique", true, DataSourceUpdateMode.OnPropertyChanged, "unknown", "x");
                m_parentPID.DataBindings.Add("Text", m_ds, "processInfo.parentUnique", true, DataSourceUpdateMode.OnPropertyChanged, "unknown", "x");
            }
        }
Ejemplo n.º 2
0
        static IEnumerable <ObjectGroup> BuildTriggers(
            MapData2D map,
            TilemapProperties properties,
            EventFormatter eventFormatter,
            ref int nextObjectGroupId,
            ref int nextObjectId)
        {
            var objectGroups = new List <ObjectGroup>();

            var regions = TriggerZoneBuilder.BuildZones(map);
            var groupedByTriggerType = regions
                                       .Where(x => x.Item1.Chain != null)
                                       .GroupBy(x => x.Item1.Trigger)
                                       .OrderBy(x => x.Key);

            foreach (var triggerType in groupedByTriggerType)
            {
                objectGroups.Add(BuildTriggerObjectGroup(
                                     nextObjectGroupId++,
                                     $"T:{triggerType.Key}",
                                     triggerType,
                                     properties,
                                     eventFormatter,
                                     ref nextObjectId));
            }

            return(objectGroups);
        }
        private void ProcessRequestEvent(Event eventObj, ProviderSession session)
        {
            foreach (Message msg in eventObj)
            {
                Console.WriteLine(msg);
                if (msg.MessageType == PERMISSION_REQUEST)
                {
                    Service pubService = session.GetService(d_service);
                    if (pubService == null)
                    {
                        Console.Error.WriteLine("service unavailable");
                        return;
                    }
                    Event          response = pubService.CreateResponseEvent(msg.CorrelationID);
                    EventFormatter ef       = new EventFormatter(response);
                    ef.AppendResponse("PermissionResponse");
                    ef.PushElement("topicPermissions");                     // TopicPermissions

                    Element topicElement = msg.GetElement(Name.GetName("topics"));
                    for (int i = 0; i < topicElement.NumValues; ++i)
                    {
                        ef.AppendElement();
                        ef.SetElement("topic", topicElement.GetValueAsString(i));
                        ef.SetElement("result", 0);                         // ALLOWED: 0, DENIED: 1
                        ef.PopElement();
                    }

                    session.SendResponse(response);
                }
            }
        }
Ejemplo n.º 4
0
    public string UpdateSendPortDescription(string sendPortName, string sendPortDescription)
    {
        try
        {
            if (string.IsNullOrEmpty(sendPortName))
            {
                throw new ArgumentNullException("sendPortName");
            }
            if (string.IsNullOrEmpty(sendPortDescription))
            {
                throw new ArgumentNullException("sendPortDescription");
            }

            return
                (bizTalkQuery.UpdateSendPortDescription(sendPortName, sendPortDescription));
        }
        catch (System.Exception ex)
        {
            // log and throw new error
            EventLogger.LogMessage(EventFormatter.FormatEvent(MethodInfo.GetCurrentMethod(), ex),
                                   EventLogEntryType.Error, (int)EventLogger.EventId.BizTalkQueryService);

            throw new SoapException(GetErrorDescription(BizTalkQueryServiceUpdateSendPortDescMessage), SoapException.ServerFaultCode, ex);
        }
    }
Ejemplo n.º 5
0
 public ProfilingTypeSession()
 {
     _dispatcher             = Dispatcher.CurrentDispatcher;
     _eventTree              = new EventTreeCollection();
     _eventFormatter         = new EventFormatter();
     _updatedEventSubscriber = new SafeEventSubscriber <EventArgs>(OnUpdated);
 }
Ejemplo n.º 6
0
        private void PublishEvents(ProviderSession session)
        {
            Service service = session.GetService(d_service);

            while (g_running)
            {
                Event eventObj = null;
                lock (d_topicSet)
                {
                    if (d_topicSet.Count == 0)
                    {
                        Monitor.Wait(d_topicSet, 100);
                    }
                    if (d_topicSet.Count == 0)
                    {
                        continue;
                    }

                    Console.WriteLine("Publishing");
                    eventObj = service.CreatePublishEvent();
                    EventFormatter eventFormatter = new EventFormatter(eventObj);

                    foreach (Topic topic in d_topicSet.Keys)
                    {
                        String os = new DateTime().ToString();

                        int numRows = 5;
                        int numCols = 3;
                        for (int i = 0; i < numRows; ++i)
                        {
                            eventFormatter.AppendMessage("RowUpdate", topic);
                            eventFormatter.SetElement("rowNum", i);
                            eventFormatter.PushElement("spanUpdate");
                            for (int j = 0; j < numCols; ++j)
                            {
                                eventFormatter.AppendElement();
                                eventFormatter.SetElement("startCol", j);
                                eventFormatter.SetElement("length", os.Length);
                                eventFormatter.SetElement("text", os);
                                eventFormatter.PopElement();
                            }
                            eventFormatter.PopElement();
                        }
                    }
                }
                if (d_verbose > 1)
                {
                    if (eventObj != null)
                    {
                        foreach (Message msg in eventObj)
                        {
                            Console.WriteLine(msg);
                        }
                    }
                }
                session.Publish(eventObj);
                Thread.Sleep(10 * 1000);
            }
        }
Ejemplo n.º 7
0
 public void Setup()
 {
     writer         = new TestWriter();
     eventFormatter =
         new EventFormatter(
             new TextFormatter(
                 writer));
 }
Ejemplo n.º 8
0
    string Decompile(EventSetId id, EventSet set)
    {
        var sb             = new StringBuilder();
        var assets         = Resolve <IAssetManager>();
        var eventFormatter = new EventFormatter(assets.LoadString, id.ToEventText());

        eventFormatter.FormatEventSetDecompiled(sb, set.Events, set.Chains, null, 0);
        return(sb.ToString());
    }
Ejemplo n.º 9
0
        public static (Map, string) FromAlbionMap2D(
            MapData2D map,
            TilesetData tileset,
            Tilemap2DProperties properties,
            string tilesetPath,
            Tileset npcTileset,
            EventFormatter eventFormatter)
        {
            if (map == null)
            {
                throw new ArgumentNullException(nameof(map));
            }
            if (tileset == null)
            {
                throw new ArgumentNullException(nameof(tileset));
            }
            if (properties == null)
            {
                throw new ArgumentNullException(nameof(properties));
            }
            if (npcTileset == null)
            {
                throw new ArgumentNullException(nameof(npcTileset));
            }

            ushort blankTileIndex = 0;
            int    nextObjectId   = 1;
            int    nextLayerId    = 3; // 1 & 2 are always underlay & overlay.

            npcTileset.GidOffset            = tileset.Tiles.Count;
            var(script, functionsByEventId) = BuildScript(map, eventFormatter);

            var result = new Map
            {
                TiledVersion    = "1.4.2",
                Version         = "1.4",
                Width           = map.Width,
                Height          = map.Height,
                TileWidth       = properties.TileWidth,
                TileHeight      = properties.TileHeight,
                Infinite        = 0,
                NextLayerId     = 5, // max(layer or objectgroup id) + 1
                Orientation     = "orthogonal",
                RenderOrder     = "right-down",
                BackgroundColor = "#000000",
                Properties      = BuildMapProperties(map),
                Tilesets        = new List <MapTileset>
                {
                    new() { FirstGid = 0, Source = tilesetPath, },
                    new() { FirstGid = npcTileset.GidOffset, Source = npcTileset.Filename }
                },
Ejemplo n.º 10
0
    public Collection <BizTalkQuery.BTMsgInstance> GetMessageInstances(string messageType)
    {
        try
        {
            return(bizTalkQuery.GetMessageInstances(messageType));
        }
        catch (System.Exception ex)
        {
            // log and throw new error
            EventLogger.LogMessage(EventFormatter.FormatEvent(MethodInfo.GetCurrentMethod(), ex),
                                   EventLogEntryType.Error, (int)EventLogger.EventId.BizTalkQueryService);

            throw new SoapException(GetErrorDescription(BizTalkQueryServiceMessageInstanceMessage, messageType), SoapException.ServerFaultCode, ex);
        }
    }
Ejemplo n.º 11
0
    /// <summary>
    /// Default constructor. Initializes the BizTalkQuery class
    /// </summary>
    public Operations()
    {
        try
        {
            bizTalkQuery = new BizTalkQuery();
        }
        catch (System.Exception ex)
        {
            // log and throw new error
            EventLogger.LogMessage(EventFormatter.FormatEvent(MethodInfo.GetCurrentMethod(), ex),
                                   EventLogEntryType.Error, (int)EventLogger.EventId.BizTalkQueryService);

            throw new SoapException(GetErrorDescription(BizTalkQueryServiceMessage), SoapException.ServerFaultCode, ex);
        }
    }
Ejemplo n.º 12
0
    public BizTalkQuery.BTSysStatus SystemStatus()
    {
        try
        {
            BizTalkQuery.BTSysStatus BTStatus = bizTalkQuery.SystemStatus();
            return(BTStatus);
        }
        catch (System.Exception ex)
        {
            // log and throw new error
            EventLogger.LogMessage(EventFormatter.FormatEvent(MethodInfo.GetCurrentMethod(), ex),
                                   EventLogEntryType.Error, (int)EventLogger.EventId.BizTalkQueryService);

            throw new SoapException(GetErrorDescription(BizTalkQueryServiceSystemStatusMessage), SoapException.ServerFaultCode, ex);
        }
    }
Ejemplo n.º 13
0
    public Collection <BizTalkQuery.BTApplication> Applications()
    {
        try
        {
            Collection <BizTalkQuery.BTApplication> apps = bizTalkQuery.Applications();
            return(apps);
        }
        catch (System.Exception ex)
        {
            // log and throw new error
            EventLogger.LogMessage(EventFormatter.FormatEvent(MethodInfo.GetCurrentMethod(), ex),
                                   EventLogEntryType.Error, (int)EventLogger.EventId.BizTalkQueryService);

            throw new SoapException(GetErrorDescription(BizTalkQueryServiceApplicationsMessage), SoapException.ServerFaultCode, ex);
        }
    }
 private void ProcessTopicStatusEvent(Event eventObj, ProviderSession session)
 {
     foreach (Message msg in eventObj)
     {
         Console.WriteLine(msg);
         if (msg.MessageType == TOPIC_RECAP || msg.MessageType == TOPIC_SUBSCRIBED)
         {
             Topic topic = session.GetTopic(msg);
             if (topic != null)
             {
                 // send initial paint, this should come from my own cache
                 Service service = session.GetService(d_service);
                 if (service == null)
                 {
                     Console.Error.WriteLine("service unavailable");
                     return;
                 }
                 Event          recapEvent     = service.CreatePublishEvent();
                 EventFormatter eventFormatter = new EventFormatter(recapEvent);
                 CorrelationID  recapCid       = msg.MessageType == TOPIC_RECAP ?
                                                 msg.CorrelationID       //solicited recap
                                                 : null;                 //unsolicited recap
                 eventFormatter.AppendRecapMessage(
                     topic,
                     recapCid);
                 eventFormatter.SetElement("numRows", 25);
                 eventFormatter.SetElement("numCols", 80);
                 eventFormatter.PushElement("rowUpdate");
                 for (int i = 1; i <= 5; ++i)
                 {
                     eventFormatter.AppendElement();
                     eventFormatter.SetElement("rowNum", i);
                     eventFormatter.PushElement("spanUpdate");
                     eventFormatter.AppendElement();
                     eventFormatter.SetElement("startCol", 1);
                     eventFormatter.SetElement("length", 10);
                     eventFormatter.SetElement("text", "RECAP");
                     eventFormatter.PopElement();
                     eventFormatter.PopElement();
                     eventFormatter.PopElement();
                 }
                 eventFormatter.PopElement();
                 session.Publish(recapEvent);
             }
         }
     }
 }
Ejemplo n.º 15
0
    public Collection <BizTalkQuery.BTHost> Hosts(string name)
    {
        // the hostName parameter can be an empty string
        try
        {
            Collection <BizTalkQuery.BTHost> BTHosts = bizTalkQuery.Hosts(name);
            return(BTHosts);
        }
        catch (System.Exception ex)
        {
            // log and throw new error
            EventLogger.LogMessage(EventFormatter.FormatEvent(MethodInfo.GetCurrentMethod(), ex),
                                   EventLogEntryType.Error, (int)EventLogger.EventId.BizTalkQueryService);

            throw new SoapException(GetErrorDescription(BizTalkQueryServiceHostsMessage), SoapException.ServerFaultCode, ex);
        }
    }
Ejemplo n.º 16
0
    public BizTalkQuery.BTMsgBody GetLiveMessageBody(string messageId, string instanceId)
    {
        try
        {
            if (string.IsNullOrEmpty(messageId))
            {
                throw new ArgumentNullException("messageId");
            }

            return(bizTalkQuery.GetLiveMessageBody(messageId, instanceId));
        }
        catch (System.Exception ex)
        {
            // log and throw new error
            EventLogger.LogMessage(EventFormatter.FormatEvent(MethodInfo.GetCurrentMethod(), ex),
                                   EventLogEntryType.Error, (int)EventLogger.EventId.BizTalkQueryService);

            throw new SoapException(GetErrorDescription(BizTalkQueryServiceLiveMessageBodyMessage, messageId), SoapException.ServerFaultCode, ex);
        }
    }
Ejemplo n.º 17
0
    public BizTalkQuery.BTSysStatus ApplicationStatus(string name)
    {
        try
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException("name");
            }

            BizTalkQuery.BTSysStatus BTStatus = bizTalkQuery.ApplicationStatus(name);
            return(BTStatus);
        }
        catch (System.Exception ex)
        {
            // log and throw new error
            EventLogger.LogMessage(EventFormatter.FormatEvent(MethodInfo.GetCurrentMethod(), ex),
                                   EventLogEntryType.Error, (int)EventLogger.EventId.BizTalkQueryService);

            throw new SoapException(GetErrorDescription(BizTalkQueryServiceApplicationStatusMessage, name), SoapException.ServerFaultCode, ex);
        }
    }
Ejemplo n.º 18
0
    public RouteTreeNode MessageFlowTree(string instanceId)
    {
        try
        {
            if (string.IsNullOrEmpty(instanceId))
            {
                throw new ArgumentNullException("instanceId");
            }

            RouteTreeNode root = bizTalkQuery.RouteTree(instanceId);
            return(root);
        }
        catch (System.Exception ex)
        {
            // log and throw new error
            EventLogger.LogMessage(EventFormatter.FormatEvent(MethodInfo.GetCurrentMethod(), ex),
                                   EventLogEntryType.Error, (int)EventLogger.EventId.BizTalkQueryService);

            throw new SoapException(GetErrorDescription(BizTalkQueryServiceMessageFlowMessage, instanceId), SoapException.ServerFaultCode, ex);
        }
    }
Ejemplo n.º 19
0
    public BizTalkQuery.BTSysStatus SendPortsByDescription(string description)
    {
        // description parameter may be empty
        try
        {
            Collection <BizTalkQuery.BTSendPort> retval       = bizTalkQuery.SendPortsByDescription(description);
            BizTalkQuery.BTSysStatus             retvalStatus = new BizTalkQuery.BTSysStatus();
            if (retval != null)
            {
                retvalStatus.SendPorts = retval;
            }
            return(retvalStatus);
        }
        catch (System.Exception ex)
        {
            // log and throw new error
            EventLogger.LogMessage(EventFormatter.FormatEvent(MethodInfo.GetCurrentMethod(), ex),
                                   EventLogEntryType.Error, (int)EventLogger.EventId.BizTalkQueryService);

            throw new SoapException(GetErrorDescription(BizTalkQueryServiceSendPortsByDescMessage), SoapException.ServerFaultCode, ex);
        }
    }
        private void ProcessRequestEvent(Event eventObj, ProviderSession session)
        {
            foreach (Message msg in eventObj)
            {
                if (msg.MessageType == PERMISSION_REQUEST)
                {
                    Service        pubService = session.GetService(d_service);
                    Event          response   = pubService.CreateResponseEvent(msg.CorrelationID);
                    EventFormatter ef         = new EventFormatter(response);
                    ef.AppendResponse("PermissionResponse");
                    ef.PushElement("topicPermissions");                     // TopicPermissions

                    Element topicElement = msg.GetElement(Name.GetName("topics"));
                    for (int i = 0; i < topicElement.NumValues; ++i)
                    {
                        ef.AppendElement();
                        ef.SetElement("topic", topicElement.GetValueAsString(i));
                        int permission = 0;
                        ef.SetElement("result", permission);                         // ALLOWED: 0, DENIED: 1

                        if (permission == 1)
                        {                        // DENIED
                            ef.PushElement("reason");
                            ef.SetElement("source", "My Publisher Name");
                            ef.SetElement("category", "NOT_AUTHORIZED");                             // or BAD_TOPIC, or custom
                            ef.SetElement("subcategory", "Publisher Controlled");
                            ef.SetElement("description", "Permission denied by My Publisher Name");
                            ef.PopElement();
                        }
                    }

                    session.SendResponse(response);
                }
                else
                {
                    System.Console.WriteLine("Received unknown request: " + msg);
                }
            }
        }
Ejemplo n.º 21
0
    public BizTalkQuery.BTSysStatus Orchestrations(string name)
    {
        // orchestration name can by empty
        try
        {
            Collection <BizTalkQuery.BTOrchestration> retval = bizTalkQuery.Orchestrations(name);
            BizTalkQuery.BTSysStatus retvalStatus            = new BizTalkQuery.BTSysStatus();
            if (retval != null)
            {
                retvalStatus.Orchestrations = retval;
            }

            return(retvalStatus);
        }
        catch (System.Exception ex)
        {
            // log and throw new error
            EventLogger.LogMessage(EventFormatter.FormatEvent(MethodInfo.GetCurrentMethod(), ex),
                                   EventLogEntryType.Error, (int)EventLogger.EventId.BizTalkQueryService);

            throw new SoapException(GetErrorDescription(BizTalkQueryServiceOrchestrationsMessage), SoapException.ServerFaultCode, ex);
        }
    }
Ejemplo n.º 22
0
    public BizTalkQuery.BTSysStatus ReceiveLocations(string name)
    {
        // receive location parameter can be empty
        // A null return is a valid return value
        try
        {
            Collection <BizTalkQuery.BTReceiveLocation> retval = bizTalkQuery.ReceiveLocations(name);
            BizTalkQuery.BTSysStatus retvalStatus = new BizTalkQuery.BTSysStatus();
            if (retval != null)
            {
                retvalStatus.ReceiveLocations = retval;
            }
            return(retvalStatus);
        }
        catch (System.Exception ex)
        {
            // log and throw new error
            EventLogger.LogMessage(EventFormatter.FormatEvent(MethodInfo.GetCurrentMethod(), ex),
                                   EventLogEntryType.Error, (int)EventLogger.EventId.BizTalkQueryService);

            throw new SoapException(GetErrorDescription(BizTalkQueryServiceReceiveLocationsMessage), SoapException.ServerFaultCode, ex);
        }
    }
        private void Publish(TopicList topicList, ProviderSession session)
        {
            List <MyStream> myStreams = new List <MyStream>();

            for (int i = 0; i < topicList.Size; ++i)
            {
                if (topicList.StatusAt(i) == TopicList.TopicStatus.CREATED)
                {
                    Message  message = topicList.MessageAt(i);
                    Topic    topic   = session.GetTopic(message);
                    MyStream stream  = (MyStream)topicList.CorrelationIdAt(i).Object;
                    stream.setTopic(topic);
                    myStreams.Add(stream);
                    Console.WriteLine("Topic created: " + stream.getId());
                }
            }

            Service pubService = session.GetService(d_service);

            if (pubService == null)
            {
                Console.Error.WriteLine("service unavailable");
                return;
            }

            // Now we will start publishing
            Event          eventObj       = pubService.CreatePublishEvent();
            EventFormatter eventFormatter = new EventFormatter(eventObj);

            for (int index = 0; index < myStreams.Count; index++)
            {
                MyStream stream = (MyStream)myStreams[index];

                eventFormatter.AppendRecapMessage(stream.getTopic(), null);
                eventFormatter.SetElement("numRows", 25);
                eventFormatter.SetElement("numCols", 80);
                eventFormatter.PushElement("rowUpdate");
                for (int i = 1; i <= 5; ++i)
                {
                    eventFormatter.AppendElement();
                    eventFormatter.SetElement("rowNum", i);
                    eventFormatter.PushElement("spanUpdate");
                    eventFormatter.AppendElement();
                    eventFormatter.SetElement("startCol", 1);
                    eventFormatter.SetElement("length", 10);
                    eventFormatter.SetElement("text", "INITIAL");
                    eventFormatter.SetElement("fgColor", "RED");
                    eventFormatter.PushElement("attr");
                    eventFormatter.AppendValue("UNDERLINE");
                    eventFormatter.AppendValue("BLINK");
                    eventFormatter.PopElement();
                    eventFormatter.PopElement();
                    eventFormatter.PopElement();
                    eventFormatter.PopElement();
                }
                eventFormatter.PopElement();
            }
            if (d_verbose > 0)
            {
                PrintMessage(eventObj);
            }
            session.Publish(eventObj);

            while (d_running)
            {
                eventObj       = pubService.CreatePublishEvent();
                eventFormatter = new EventFormatter(eventObj);

                for (int index = 0; index < myStreams.Count; index++)
                {
                    MyStream stream = (MyStream)myStreams[index];
                    eventFormatter.AppendMessage("RowUpdate", stream.getTopic());
                    eventFormatter.SetElement("rowNum", 1);
                    eventFormatter.PushElement("spanUpdate");
                    eventFormatter.AppendElement();
                    eventFormatter.SetElement("startCol", 1);
                    String text = System.DateTime.Now.ToString();
                    eventFormatter.SetElement("length", text.Length);
                    eventFormatter.SetElement("text", text);
                    eventFormatter.PopElement();
                    eventFormatter.AppendElement();
                    eventFormatter.SetElement("startCol", text.Length + 10);
                    text = System.DateTime.Now.ToString();
                    eventFormatter.SetElement("length", text.Length);
                    eventFormatter.SetElement("text", text);
                    eventFormatter.PopElement();
                    eventFormatter.PopElement();
                }

                if (d_verbose > 0)
                {
                    PrintMessage(eventObj);
                }
                session.Publish(eventObj);
                Thread.Sleep(10 * 1000);
            }
        }
Ejemplo n.º 24
0
        private void PublishEvents(ProviderSession session, List <MyStream> myStreams)
        {
            Service service = session.GetService(d_serviceName);

            if (service == null)
            {
                System.Console.Error.WriteLine("Failed to get Service: " + d_serviceName);
                return;
            }
            Random rnd = new Random(DateTime.Now.Millisecond);

            int iteration = 0;

            while (iteration++ < d_maxEvents)
            {
                if (!d_running)
                {
                    return;
                }
                Event          eventObj       = service.CreatePublishEvent();
                EventFormatter eventFormatter = new EventFormatter(eventObj);

                foreach (MyStream stream in myStreams)
                {
                    eventFormatter.AppendMessage("PageData", stream.GetTopic());
                    eventFormatter.PushElement("rowUpdate");

                    eventFormatter.AppendElement();
                    eventFormatter.SetElement("rowNum", 1);
                    eventFormatter.PushElement("spanUpdate");

                    eventFormatter.AppendElement();
                    eventFormatter.SetElement("startCol", 20);
                    eventFormatter.SetElement("length", 4);
                    eventFormatter.SetElement("text", "TEST");
                    eventFormatter.SetElement("attr", "INTENSIFY");
                    eventFormatter.PopElement();

                    eventFormatter.AppendElement();
                    eventFormatter.SetElement("startCol", 25);
                    eventFormatter.SetElement("length", 4);
                    eventFormatter.SetElement("text", "PAGE");
                    eventFormatter.SetElement("attr", "BLINK");
                    eventFormatter.PopElement();

                    eventFormatter.AppendElement();
                    eventFormatter.SetElement("startCol", 30);
                    String timestamp = System.DateTime.Now.ToString();
                    eventFormatter.SetElement("length", timestamp.Length);
                    eventFormatter.SetElement("text", timestamp);
                    eventFormatter.SetElement("attr", "REVERSE");
                    eventFormatter.PopElement();

                    eventFormatter.PopElement();
                    eventFormatter.PopElement();

                    eventFormatter.AppendElement();
                    eventFormatter.SetElement("rowNum", 2);
                    eventFormatter.PushElement("spanUpdate");
                    eventFormatter.AppendElement();
                    eventFormatter.SetElement("startCol", 20);
                    eventFormatter.SetElement("length", 9);
                    eventFormatter.SetElement("text", "---------");
                    eventFormatter.SetElement("attr", "UNDERLINE");
                    eventFormatter.PopElement();
                    eventFormatter.PopElement();
                    eventFormatter.PopElement();

                    eventFormatter.AppendElement();
                    eventFormatter.SetElement("rowNum", 3);
                    eventFormatter.PushElement("spanUpdate");
                    eventFormatter.AppendElement();
                    eventFormatter.SetElement("startCol", 10);
                    eventFormatter.SetElement("length", 9);
                    eventFormatter.SetElement("text", "TEST LINE");
                    eventFormatter.PopElement();
                    eventFormatter.AppendElement();
                    eventFormatter.SetElement("startCol", 23);
                    eventFormatter.SetElement("length", 5);
                    eventFormatter.SetElement("text", "THREE");
                    eventFormatter.PopElement();
                    eventFormatter.PopElement();
                    eventFormatter.PopElement();
                    eventFormatter.PopElement();

                    eventFormatter.SetElement("contributorId", d_contributionId);
                    eventFormatter.SetElement("productCode", 1);
                    eventFormatter.SetElement("pageNumber", 1);
                }

                foreach (Message msg in eventObj)
                {
                    Console.WriteLine(msg.ToString());
                }

                session.Publish(eventObj);

                int sleepSecs = rnd.Next(20);
                Thread.Sleep(sleepSecs * 1000);
            }
        }
Ejemplo n.º 25
0
        public static Map FromAlbionMap(
            MapData2D map,
            TilesetData tileset,
            TilemapProperties properties,
            string tilesetPath,
            Tileset npcTileset,
            EventFormatter eventFormatter)
        {
            if (map == null)
            {
                throw new ArgumentNullException(nameof(map));
            }
            if (tileset == null)
            {
                throw new ArgumentNullException(nameof(tileset));
            }
            if (properties == null)
            {
                throw new ArgumentNullException(nameof(properties));
            }
            if (npcTileset == null)
            {
                throw new ArgumentNullException(nameof(npcTileset));
            }

            ushort blankTileIndex    = (ushort)(tileset.Tiles.Max(x => x.ImageNumber + x.FrameCount - 1) + 1);
            int    nextObjectId      = 1;
            int    nextObjectGroupId = 3; // 1 & 2 are always underlay & overlay.

            npcTileset.GidOffset = tileset.Tiles.Count + 1;

            return(new Map
            {
                TiledVersion = "1.4.2",
                Version = "1.4",
                Width = map.Width,
                Height = map.Height,
                TileWidth = properties.TileWidth,
                TileHeight = properties.TileHeight,
                Infinite = 0,
                NextLayerId = 5, // max(layer or objectgroup id) + 1
                NextObjectId = 1,
                Orientation = "orthogonal",
                RenderOrder = "right-down",
                BackgroundColor = "#000000",
                Tilesets = new List <MapTileset>
                {
                    new MapTileset {
                        FirstGid = 1, Source = tilesetPath,
                    },
                    new MapTileset {
                        FirstGid = npcTileset.GidOffset, Source = npcTileset.Filename
                    }
                },
                Layers = new List <MapLayer> {
                    new MapLayer
                    {
                        Id = 1,
                        Name = "Underlay",
                        Width = map.Width,
                        Height = map.Height,
                        Data = new LayerData {
                            Encoding = "csv", Content = BuildCsvData(map, tileset, false, blankTileIndex)
                        }
                    },
                    new MapLayer
                    {
                        Id = 2,
                        Name = "Overlay",
                        Width = map.Width,
                        Height = map.Height,
                        Data = new LayerData {
                            Encoding = "csv", Content = BuildCsvData(map, tileset, true, blankTileIndex)
                        }
                    }
                },
                ObjectGroups = new[] {
                    BuildTriggers(map, properties, eventFormatter, ref nextObjectGroupId, ref nextObjectId),
                    BuildNpcs(map, properties, eventFormatter, npcTileset, ref nextObjectGroupId, ref nextObjectId)
                }.SelectMany(x => x).ToList()
            });
        }
        private void ProcessTopicStatusMsg(ProviderSession session, Event eventObj)
        {
            TopicList topicList = new TopicList();

            foreach (Message msg in eventObj)
            {
                Console.WriteLine(msg);

                if (msg.MessageType == TOPIC_SUBSCRIBED)
                {
                    Topic topic = session.GetTopic(msg);
                    if (topic == null)
                    {
                        CorrelationID cid = new CorrelationID(msg.GetElementAsString(TOPIC));
                        topicList.Add(msg, cid);
                    }
                    else
                    {
                        lock (d_topicSet)
                        {
                            if (!d_topicSet.ContainsKey(topic))
                            {
                                d_topicSet[topic] = topic;
                                Monitor.PulseAll(d_topicSet);
                            }
                        }
                    }
                }
                else if (msg.MessageType == TOPIC_UNSUBSCRIBED)
                {
                    Topic topic = session.GetTopic(msg);
                    lock (d_topicSet)
                    {
                        d_topicSet.Remove(topic);
                    }
                }
                else if (msg.MessageType == TOPIC_CREATED)
                {
                    Topic topic = session.GetTopic(msg);
                    lock (d_topicSet)
                    {
                        if (!d_topicSet.ContainsKey(topic))
                        {
                            d_topicSet[topic] = topic;
                            Monitor.PulseAll(d_topicSet);
                        }
                    }
                }
                else if (msg.MessageType == TOPIC_RECAP)
                {
                    Topic topic = session.GetTopic(msg);
                    lock (d_topicSet)
                    {
                        if (!d_topicSet.ContainsKey(topic))
                        {
                            continue;
                        }
                    }
                    // send initial paint.this should come from app's cache.
                    Service        service        = session.GetService(d_service);
                    Event          recapEvent     = service.CreatePublishEvent();
                    EventFormatter eventFormatter = new EventFormatter(recapEvent);
                    eventFormatter.AppendRecapMessage(topic, msg.CorrelationID);
                    eventFormatter.SetElement("numRows", 25);
                    eventFormatter.SetElement("numCols", 80);
                    eventFormatter.PushElement("rowUpdate");
                    for (int i = 1; i <= 5; ++i)
                    {
                        eventFormatter.AppendElement();
                        eventFormatter.SetElement("rowNum", i);
                        eventFormatter.PushElement("spanUpdate");
                        eventFormatter.AppendElement();
                        eventFormatter.SetElement("startCol", 1);
                        eventFormatter.SetElement("length", 10);
                        eventFormatter.SetElement("text", "RECAP");
                        eventFormatter.PopElement();
                        eventFormatter.PopElement();
                        eventFormatter.PopElement();
                    }
                    eventFormatter.PopElement();
                    session.Publish(recapEvent);
                }
            }

            if (topicList.Size > 0)
            {
                session.CreateTopicsAsync(topicList);
            }
        }
        // Handling subscription start and stop events, which add and remove topics to the active publication set.
        private void processEvent(Event eventObj, ProviderSession session)
        {
            switch (eventObj.Type)
            {
            case Event.EventType.SESSION_STATUS:
                foreach (Message msg in eventObj)
                {
                    Console.WriteLine(msg);
                    if (msg.MessageType == SESSION_TERMINATED)
                    {
                        d_running = false;
                    }
                }
                break;

            case Event.EventType.TOPIC_STATUS:
                ProcessTopicStatusMsg(session, eventObj);
                break;

            case Event.EventType.REQUEST:
                Service service = session.GetService(d_service);
                foreach (Message msg in eventObj)
                {
                    if (msg.MessageType == PERMISSION_REQUEST)
                    {
                        // This example always sends a 'PERMISSIONED' response.
                        // See 'MktdataPublisherExample' on how to parse a Permission
                        // request and send an appropriate 'PermissionResponse'.
                        Event          response   = service.CreateResponseEvent(msg.CorrelationID);
                        EventFormatter ef         = new EventFormatter(response);
                        int            permission = 0;                      // ALLOWED: 0, DENIED: 1
                        ef.AppendResponse("PermissionResponse");
                        ef.PushElement("topicPermissions");
                        // For each of the topics in the request, add an entry
                        // to the response
                        Element topicsElement = msg.GetElement(Name.GetName("topics"));
                        for (int i = 0; i < topicsElement.NumValues; ++i)
                        {
                            ef.AppendElement();
                            ef.SetElement("topic", topicsElement.GetValueAsString(i));
                            ef.SetElement("result", permission);                                     // PERMISSIONED
                            ef.PopElement();
                        }
                        ef.PopElement();
                        session.SendResponse(response);
                    }
                }
                break;

            case Event.EventType.RESPONSE:
            case Event.EventType.PARTIAL_RESPONSE:
            case Event.EventType.REQUEST_STATUS:
                foreach (Message msg in eventObj)
                {
                    if (msg.CorrelationID != null && d_verbose > 1)
                    {
                        Console.Out.WriteLine("cid = " + msg.CorrelationID);
                    }
                    Console.Out.WriteLine("Message = " + msg);

                    if (msg.CorrelationID == null)
                    {
                        continue;
                    }
                    lock (d_authorizationStatus)
                    {
                        if (d_authorizationStatus.ContainsKey(msg.CorrelationID))
                        {
                            if (msg.MessageType == AUTHORIZATION_SUCCESS)
                            {
                                d_authorizationStatus[msg.CorrelationID] = AuthorizationStatus.AUTHORIZED;
                            }
                            else
                            {
                                d_authorizationStatus[msg.CorrelationID] = AuthorizationStatus.FAILED;
                            }
                            Monitor.Pulse(d_authorizationStatus);
                        }
                    }
                }
                break;

            default:
                if (d_verbose > 0)
                {
                    foreach (Message msg in eventObj)
                    {
                        Console.WriteLine("Message = " + msg);
                    }
                }
                break;
            }
        }
        public void Run(String[] args)
        {
            if (!ParseCommandLine(args))
            {
                return;
            }

            SessionOptions.ServerAddress[] servers = new SessionOptions.ServerAddress[d_serverHosts.Count];
            for (int i = 0; i < d_serverHosts.Count; ++i)
            {
                servers[i] = new SessionOptions.ServerAddress(d_serverHosts[i], d_serverPort);
            }

            SessionOptions sessionOptions = new SessionOptions();

            sessionOptions.ServerAddresses            = servers;
            sessionOptions.AuthenticationOptions      = d_authOptions;
            sessionOptions.AutoRestartOnDisconnection = true;
            sessionOptions.NumStartAttempts           = d_serverHosts.Count;

            System.Console.Write("Connecting to");
            foreach (SessionOptions.ServerAddress server in sessionOptions.ServerAddresses)
            {
                System.Console.Write(" " + server);
            }
            System.Console.WriteLine();
            ProviderSession session = new ProviderSession(sessionOptions, ProcessEvent);

            if (!session.Start())
            {
                Console.Error.WriteLine("Failed to start session");
                return;
            }

            Identity identity = null;

            if (d_authOptions != null)
            {
                bool isAuthorized = false;
                identity = session.CreateIdentity();
                if (session.OpenService("//blp/apiauth"))
                {
                    Service authService = session.GetService("//blp/apiauth");
                    if (Authorize(authService, identity, session, new CorrelationID()))
                    {
                        isAuthorized = true;
                    }
                }
                if (!isAuthorized)
                {
                    System.Console.Error.WriteLine("No authorization");
                    return;
                }
            }

            TopicList topicList = new TopicList();

            topicList.Add(
                d_serviceName + "/ticker/929903DF6 Corp",
                new CorrelationID(new MyStream("AUDEUR Curncy")));
            topicList.Add(
                d_serviceName + "/ticker/EC070336 Corp",
                new CorrelationID(new MyStream("EC070336 Corp")));
            topicList.Add(
                d_serviceName + "/ticker/6832348A9 Corp",
                new CorrelationID(new MyStream("6832348A9 Corp")));

            session.CreateTopics(
                topicList,
                ResolveMode.AUTO_REGISTER_SERVICES,
                identity);

            Service service = session.GetService(d_serviceName);

            if (service == null)
            {
                System.Console.Error.WriteLine("Open service failed: " + d_serviceName);
                return;
            }

            List <MyStream> myStreams = new List <MyStream>();

            for (int i = 0; i < topicList.Size; ++i)
            {
                if (topicList.StatusAt(i) == TopicList.TopicStatus.CREATED)
                {
                    Topic    topic  = session.GetTopic(topicList.MessageAt(i));
                    MyStream stream = (MyStream)topicList.CorrelationIdAt(i).Object;
                    stream.SetTopic(topic);
                    myStreams.Add(stream);
                }
            }

            int iteration = 0;

            while (iteration++ < d_maxEvents)
            {
                if (!d_running)
                {
                    break;
                }
                Event          eventObj       = service.CreatePublishEvent();
                EventFormatter eventFormatter = new EventFormatter(eventObj);

                foreach (MyStream stream in myStreams)
                {
                    eventFormatter.AppendMessage("MarketData", stream.GetTopic());
                    eventFormatter.SetElement(BID, stream.GetBid());
                    eventFormatter.SetElement(ASK, stream.GetAsk());
                    eventFormatter.SetElement(BID_SIZE, 1200);
                    eventFormatter.SetElement(ASK_SIZE, 1400);
                }

                System.Console.WriteLine(System.DateTime.Now.ToString() + " -");

                foreach (Message msg in eventObj)
                {
                    System.Console.WriteLine(msg);
                }

                session.Publish(eventObj);
                Thread.Sleep(10 * 1000);
            }

            session.Stop();
        }
        public void Run(String[] args)
        {
            if (!ParseCommandLine(args))
            {
                return;
            }

            SessionOptions.ServerAddress[] servers = new SessionOptions.ServerAddress[d_hosts.Count];
            for (int i = 0; i < d_hosts.Count; ++i)
            {
                servers[i] = new SessionOptions.ServerAddress(d_hosts[i], d_port);
            }

            SessionOptions sessionOptions = new SessionOptions();

            sessionOptions.ServerAddresses            = servers;
            sessionOptions.AuthenticationOptions      = d_authOptions;
            sessionOptions.AutoRestartOnDisconnection = true;
            sessionOptions.NumStartAttempts           = servers.Length;

            System.Console.Write("Connecting to");
            foreach (SessionOptions.ServerAddress server in sessionOptions.ServerAddresses)
            {
                System.Console.Write(" " + server);
            }
            System.Console.WriteLine();

            ProviderSession session = new ProviderSession(sessionOptions, ProcessEvent);

            if (!session.Start())
            {
                System.Console.Error.WriteLine("Failed to start session");
                return;
            }

            Identity identity = null;

            if (d_authOptions != null)
            {
                if (!Authorize(out identity, session))
                {
                    return;
                }
            }

            if (d_groupId != null)
            {
                // NOTE: will perform explicit service registration here, instead of letting
                //       createTopics do it, as the latter approach doesn't allow for custom
                //       ServiceRegistrationOptions
                ServiceRegistrationOptions serviceRegistrationOptions = new ServiceRegistrationOptions();
                serviceRegistrationOptions.GroupId         = d_groupId;
                serviceRegistrationOptions.ServicePriority = d_priority;

                if (!session.RegisterService(d_service, identity, serviceRegistrationOptions))
                {
                    System.Console.Write("Failed to register " + d_service);
                    return;
                }
            }

            TopicList topicList = new TopicList();

            for (int i = 0; i < d_topics.Count; i++)
            {
                topicList.Add(
                    d_service + "/" + d_topics[i],
                    new CorrelationID(new MyStream(d_topics[i])));
            }

            session.CreateTopics(
                topicList,
                ResolveMode.AUTO_REGISTER_SERVICES,
                identity);
            // createTopics() is synchronous, topicList will be updated
            // with the results of topic creation (resolution will happen
            // under the covers)

            List <MyStream> myStreams = new List <MyStream>();

            for (int i = 0; i < topicList.Size; ++i)
            {
                MyStream stream = (MyStream)topicList.CorrelationIdAt(i).Object;
                if (topicList.StatusAt(i) == TopicList.TopicStatus.CREATED)
                {
                    Message msg = topicList.MessageAt(i);
                    stream.setTopic(session.GetTopic(msg));
                    myStreams.Add(stream);
                    System.Console.WriteLine("Topic created: " + topicList.TopicStringAt(i));
                }
                else
                {
                    System.Console.WriteLine("Stream '" + stream.getId()
                                             + "': topic not resolved, status = " + topicList.StatusAt(i));
                }
            }
            Service service = session.GetService(d_service);

            // Now we will start publishing
            Name eventName = Name.GetName("MarketDataEvents");
            Name high      = Name.GetName("HIGH");
            Name low       = Name.GetName("LOW");
            long tickCount = 1;

            for (int eventCount = 0; eventCount < d_maxEvents; ++eventCount)
            {
                Event          eventObj       = service.CreatePublishEvent();
                EventFormatter eventFormatter = new EventFormatter(eventObj);

                for (int index = 0; index < myStreams.Count; index++)
                {
                    Topic topic = myStreams[index].getTopic();
                    if (!topic.IsActive())
                    {
                        continue;
                    }
                    eventFormatter.AppendMessage(eventName, topic);
                    if (1 == tickCount)
                    {
                        eventFormatter.SetElement("OPEN", 1.0);
                    }
                    else if (2 == tickCount)
                    {
                        eventFormatter.SetElement("BEST_BID", 3.0);
                    }
                    eventFormatter.SetElement(high, tickCount * 1.0);
                    eventFormatter.SetElement(low, tickCount * 0.5);
                    ++tickCount;
                }

                foreach (Message msg in eventObj)
                {
                    System.Console.WriteLine(msg);
                }

                session.Publish(eventObj);
                Thread.Sleep(2 * 1000);
            }

            session.Stop();
        }
Ejemplo n.º 30
0
    static void MapData(IAssetManager assets, string baseDir, AssetId[] dumpIds)
    {
        using var sw = Open(baseDir, MapInfoPath);
        for (int i = 100; i < 400; i++)
        {
            MapId id = MapId.From((Base.Map)i);
            if (dumpIds != null && !dumpIds.Contains(id))
            {
                continue;
            }

            IMapData map = assets.LoadMap(id);
            if (map == null)
            {
                continue;
            }

            sw.Write($"{i} {(Base.Map)i} {map.MapType} ");
            sw.Write($"{map.Width}x{map.Height} ");
            sw.Write($"Palette:{map.PaletteId} ({map.PaletteId.Id}) ");
            if (map is MapData2D map2d)
            {
                sw.Write($"FrameRate:{map2d.FrameRate} ");
                sw.Write($"TileSet:{map2d.TilesetId} ");
                sw.Write($"Flags:{map2d.Flags} ");
                sw.Write($"Sound?:{map2d.Sound} ");
            }

            LabyrinthData lab = null;
            if (map is MapData3D map3d)
            {
                sw.Write($"Flags: {map3d.Flags} ");
                sw.Write($"Labyrinth: {map3d.LabDataId} ");
                sw.Write($"Sound?:{map3d.AmbientSongId} ");
                lab = assets.LoadLabyrinthData(map3d.LabDataId);
            }

            sw.Write($"Song:{map.SongId} ({map.SongId.Id}) ");
            sw.WriteLine($"CombatBackground:{map.CombatBackgroundId} ({map.CombatBackgroundId.Id})");

            for (int j = 0; j < map.Npcs.Count; j++)
            {
                var npc = map.Npcs[j];
                if (npc == null)
                {
                    continue;
                }

                var wp     = npc.Waypoints.FirstOrDefault();
                var idText = npc.Id.ToString().PadLeft(15);

                sw.Write($"    Npc{j:D3}: {idText} ({npc.Id.Id:D3}) ");
                sw.Write($"X:{wp.X:D3} Y:{wp.Y:D3} ");
                sw.Write($"F{(int)npc.Flags:X2}:({npc.Flags}) ");
                sw.Write($"M:{npc.Movement} ");
                sw.Write($"S:{npc.Sound} ({npc.Sound}) ");
                switch (map.MapType)
                {
                case MapType.TwoD: sw.Write($"GR:{npc.SpriteOrGroup} "); break;

                case MapType.TwoDOutdoors: sw.Write($"KL:{npc.SpriteOrGroup} "); break;

                case MapType.ThreeD:
                    if (lab != null)
                    {
                        if (npc.SpriteOrGroup.Id >= lab.ObjectGroups.Count)
                        {
                            sw.Write($"InvalidObjGroup:{npc.SpriteOrGroup.Id}");
                        }
                        else
                        {
                            var objectData = lab.ObjectGroups[npc.SpriteOrGroup.Id];
                            sw.Write($"3D:{npc.SpriteOrGroup.Id}=(");
                            bool first = true;
                            foreach (var subObject in objectData.SubObjects)
                            {
                                if (subObject == null)
                                {
                                    continue;
                                }
                                if (!first)
                                {
                                    sw.Write(", ");
                                }
                                first = false;
                                var def = lab.Objects[subObject.ObjectInfoNumber];
                                sw.Write(def.SpriteId);
                            }

                            sw.Write(")");
                        }
                    }

                    break;
                }

                sw.WriteLine();
                if (npc.Chain != 0xffff)
                {
                    sw.WriteLine($"        EventChain: {npc.Chain}");
                    var formatter = new EventFormatter(assets.LoadString, id.ToMapText());
                    sw.WriteLine(formatter.FormatChain(npc.Node, 2));
                }
            }
            sw.WriteLine();
        }
    }