static void Main(string[] args) { DDSEntityManager mgr = new DDSEntityManager("Listener"); ReturnCode status = ReturnCode.Error; ListenerDataListener myListener; String partitionName = "Listener Example"; int count = 0; // create Domain Participant mgr.createParticipant(partitionName); // create Type MsgTypeSupport msgTS = new MsgTypeSupport(); mgr.registerType(msgTS); // create Topic mgr.createTopic("ListenerData_Msg"); // create Subscriber mgr.createSubscriber(); // create DataReader mgr.createReader(false); IDataReader dreader = mgr.getReader(); myListener = new ListenerDataListener(); myListener.MsgDR = dreader as MsgDataReader; Console.WriteLine("=== [ListenerDataSubscriber] SetListener"); StatusKind kind = StatusKind.DataAvailable | StatusKind.RequestedDeadlineMissed; status = myListener.MsgDR.SetListener(myListener, kind); ErrorHandler.checkStatus(status, "DataReader.SetListener"); Console.WriteLine("=== [ListenerDataSubscriber] Ready..."); myListener.terminated = false; WaitSet ws = new WaitSet(); ws.AttachCondition(myListener.guardCond); ICondition[] cond = null; while (!myListener.terminated && count < 1500) { Console.WriteLine("=== [SubscriberUsingListener] waiting waitset ..."); ws.Wait(ref cond, Duration.Infinite); myListener.guardCond.SetTriggerValue(false); ++count; } Console.WriteLine("===[ListenerDataSubscriber] Market Closed."); mgr.getSubscriber().DeleteDataReader(myListener.MsgDR); mgr.deleteSubscriber(); mgr.deleteTopic(); mgr.deleteParticipant(); }
static void Main(string[] args) { DDSEntityManager mgr = new DDSEntityManager("Listener"); ReturnCode status = ReturnCode.Error; ListenerDataListener myListener; String partitionName = "Listener Example"; int count = 0; Duration wait_timeout = new Duration(0, 200000000); // create Domain Participant mgr.createParticipant(partitionName); // create Type MsgTypeSupport msgTS = new MsgTypeSupport(); mgr.registerType(msgTS); // create Topic mgr.createTopic("ListenerData_Msg"); // create Subscriber mgr.createSubscriber(); // create DataReader mgr.createReader(false); IDataReader dreader = mgr.getReader(); myListener = new ListenerDataListener(); myListener.MsgDR = dreader as MsgDataReader; Console.WriteLine("=== [ListenerDataSubscriber] SetListener"); StatusKind kind = StatusKind.DataAvailable | StatusKind.RequestedDeadlineMissed; status = myListener.MsgDR.SetListener(myListener, kind); ErrorHandler.checkStatus(status, "DataReader.SetListener"); Console.WriteLine("=== [ListenerDataSubscriber] Ready..."); myListener.terminated = false; WaitSet ws = new WaitSet(); ws.AttachCondition(myListener.guardCond); ICondition[] cond = null; while (!myListener.terminated && count < 1500) { Console.WriteLine("=== [SubscriberUsingListener] waiting waitset ..."); ws.Wait(ref cond, wait_timeout); myListener.guardCond.SetTriggerValue(false); ++count; } Console.WriteLine("===[ListenerDataSubscriber] Market Closed."); mgr.getSubscriber().DeleteDataReader(myListener.MsgDR); mgr.deleteSubscriber(); mgr.deleteTopic(); mgr.deleteParticipant(); }