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"); } }
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); } } }
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); } }
public ProfilingTypeSession() { _dispatcher = Dispatcher.CurrentDispatcher; _eventTree = new EventTreeCollection(); _eventFormatter = new EventFormatter(); _updatedEventSubscriber = new SafeEventSubscriber <EventArgs>(OnUpdated); }
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); } }
public void Setup() { writer = new TestWriter(); eventFormatter = new EventFormatter( new TextFormatter( writer)); }
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()); }
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 } },
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); } }
/// <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); } }
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); } }
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); } } } }
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); } }
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); } }
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); } }
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); } }
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); } } }
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); } }
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); } }
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); } }
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(); }
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(); } }