private void initPublisher(String pub, int strength) { mgr = new DDSEntityManager(); String partitionName = "Ownership example"; // create Domain Participant mgr.createParticipant(partitionName); // create Type StockTypeSupport stkTS = new StockTypeSupport(); mgr.registerType(stkTS); // create Topic mgr.createTopic("StockTrackerExclusive", "Ownership"); // create Publisher mgr.createPublisher(); // create DataWriter mgr.createWriter(); dwriter= mgr.getWriter(); OwnershipDataWriter = dwriter as StockDataWriter; msft = new Stock(); msft.ticker = "MSFT"; msft.publisher = pub; msft.strength = strength; msftHandle = OwnershipDataWriter.RegisterInstance(msft); }
private void initPublisher(String pub, int strength) { mgr = new DDSEntityManager("Ownership"); String partitionName = "Ownership example"; // create Domain Participant mgr.createParticipant(partitionName); // create Type StockTypeSupport stkTS = new StockTypeSupport(); mgr.registerType(stkTS); // create Topic mgr.createTopic("StockTrackerExclusive"); // create Publisher mgr.createPublisher(); // create DataWriter mgr.createWriter(); dwriter = mgr.getWriter(); OwnershipDataWriter = dwriter as StockDataWriter; msft = new Stock(); msft.ticker = "MSFT"; msft.publisher = pub; msft.strength = strength; msftHandle = OwnershipDataWriter.RegisterInstance(msft); }
static void Main(string[] args) { if (args.Length != 1) { Console.WriteLine("*** [ContentFilteredTopicDataSubscriber] Subscription string not specified"); Console.WriteLine("*** usage : ContentFilteredTopicDataSubscriber <subscription_string>"); Environment.Exit(-1); } ITopic topic; DDSEntityManager mgr = new DDSEntityManager(); String partitionName = "ContentFilteredTopic example"; // Create DomainParticipant mgr.createParticipant(partitionName); // Create Type StockTypeSupport msgTS = new StockTypeSupport(); mgr.registerType(msgTS); // Create Topic topic = mgr.createTopic("StockTrackerExclusive", "ContentFilteredTopic"); // ContentFilteredTopic mgr.createContentFilter("MyStockTopic", topic, args[0]); Console.WriteLine("=== [ContentFilteredTopicDataSubscriber] Subscription filter : ticker = '{0}'",args[0]); // create Subscriber mgr.createSubscriber(); // create DataReader mgr.createReader("ContentFilteredTopic", true); // Read Events IDataReader dreader = mgr.getReader(); StockDataReader WaitSetReader = dreader as StockDataReader; // Create WaitSet IWaitSet w = new WaitSet(); // Status Condition IStatusCondition status; status = dreader.StatusCondition; status.SetEnabledStatuses(StatusKind.DataAvailable); ReturnCode result = ReturnCode.Error; result = w.AttachCondition(status); ErrorHandler.checkHandle(status, "DataReader.StatusCondition"); ErrorHandler.checkStatus(result, "WaitSet.AttachCondition"); DDS.ICondition[] conditionList; DDS.SampleInfo[] infoSeq; Stock[] stockSeq; Console.WriteLine("=== [ContentFilteredTopicDataSubscriber] Ready ..."); bool terminate = false; int count = 0; while (!terminate && count < 1500) { /** * Wait until data will be available */ Duration wait_timeout = new Duration(Duration.InfiniteSec, Duration.InfiniteNanoSec); conditionList = null; result = w.Wait(ref conditionList, wait_timeout); ErrorHandler.checkStatus(result, "WaitSet.Wait"); stockSeq = null; infoSeq = null; /** * Read Data */ result = WaitSetReader.Take(ref stockSeq, ref infoSeq, Length.Unlimited, SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any); ErrorHandler.checkStatus(result, "StockDataReader.Take"); /** * Display Data */ for (int i=0; i < stockSeq.Length; i++) { if (infoSeq[i].ValidData) { if (stockSeq[i].price == -1) { // We read the last expected sample => exit terminate = true; break; } Console.WriteLine("=== [ContentFilteredTopicDataSubscriber] receives stockQuote : ( {0} , {1} )", stockSeq[i].ticker, stockSeq[i].price); } } result = WaitSetReader.ReturnLoan(ref stockSeq, ref infoSeq); ErrorHandler.checkStatus(result, "StockDataReader.ReturnLoan"); Thread.Sleep(200); ++count; } Console.WriteLine("=== [ContentFilteredTopicDataSubscriber] Market Closed"); // clean up mgr.getSubscriber().DeleteDataReader(WaitSetReader); mgr.deleteSubscriber(); mgr.deleteContentFilteredTopic(); mgr.deleteTopic(); mgr.deleteParticipant(); }
static void Main(string[] args) { DDSEntityManager mgr = new DDSEntityManager("ContentFilteredTopic"); String partitionName = "ContentFilteredTopic example"; // create Domain Participant mgr.createParticipant(partitionName); mgr.setAutoDispose(true); // create Type StockTypeSupport msgTS = new StockTypeSupport(); mgr.registerType(msgTS); // create Topic mgr.createTopic("StockTrackerExclusive"); // create Publisher mgr.createPublisher(); // create DataWriter mgr.createWriter(); // Publish Events IDataWriter dwriter = mgr.getWriter(); StockDataWriter ContentFilteredTopicDataWriter = dwriter as StockDataWriter; Stock geStock = new Stock(); Stock msftStock = new Stock(); ReturnCode writeStatus; geStock.ticker = "GE"; geStock.price = 12.00f; msftStock.ticker = "MSFT"; msftStock.price = 25.00f; InstanceHandle geHandle = ContentFilteredTopicDataWriter.RegisterInstance(geStock); InstanceHandle msHandle = ContentFilteredTopicDataWriter.RegisterInstance(msftStock); for (int i = 0; i < 20; i++) { geStock.price += 0.5f ; msftStock.price += 1.5f; Console.WriteLine("=== [ContentFilteredTopicDataPublisher] sends 2 stockQuotes : (GE, {0}) (MSFT, {1})", geStock.price, msftStock.price); writeStatus = ContentFilteredTopicDataWriter.Write(geStock, geHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write"); writeStatus = ContentFilteredTopicDataWriter.Write(msftStock, msHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write"); Thread.Sleep(100); } geStock.price = -1.0f; msftStock.price = -1.0f; writeStatus = ContentFilteredTopicDataWriter.Write(geStock, geHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write GE"); writeStatus = ContentFilteredTopicDataWriter.Write(msftStock, msHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write MSFT"); Console.WriteLine("Market Closed"); ContentFilteredTopicDataWriter.UnregisterInstance(geStock, geHandle); ContentFilteredTopicDataWriter.UnregisterInstance(msftStock, msHandle); mgr.getPublisher().DeleteDataWriter(ContentFilteredTopicDataWriter); mgr.deletePublisher(); mgr.deleteTopic(); mgr.deleteParticipant(); }
static void Main(string[] args) { DDSEntityManager mgr = new DDSEntityManager(); String partitionName = "Ownership example"; // create Domain Participant mgr.createParticipant(partitionName); // create Type StockTypeSupport msgTS = new StockTypeSupport(); mgr.registerType(msgTS); // create Topic mgr.createTopic("StockTrackerExclusive", "Ownership"); // create Subscriber mgr.createSubscriber(); // create DataReader mgr.createReader("Ownership", false); // Read Events IDataReader dreader = mgr.getReader(); StockDataReader OwnershipDataReader = dreader as StockDataReader; Stock[] msgSeq = null; DDS.SampleInfo[] infoSeq = null; Console.WriteLine("===[Subscriber] Ready ..."); Console.WriteLine(" Ticker Price Publisher ownership strength"); Boolean terminate = false; ReturnCode status = ReturnCode.Error; int count = 0; while (!terminate && count < 1500) { OwnershipDataReader.Take(ref msgSeq, ref infoSeq, Length.Unlimited, SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any); for (int i = 0; i < msgSeq.Length; i++) { if (infoSeq[i].ValidData) { if (msgSeq[i].price < -0.0f) { terminate = true; break; } Console.WriteLine(" {0} {1} {2} {3}", msgSeq[i].ticker, msgSeq[i].price, msgSeq[i].publisher, msgSeq[i].strength); } } status = OwnershipDataReader.ReturnLoan(ref msgSeq, ref infoSeq); ErrorHandler.checkStatus(status, "StockDataReader.ReturnLoan"); Thread.Sleep(2); ++count; Thread.Sleep(200); } Console.WriteLine("===[Subscriber] Market Closed"); // clean up mgr.getSubscriber().DeleteDataReader(OwnershipDataReader); mgr.deleteSubscriber(); mgr.deleteTopic(); mgr.deleteParticipant(); }
static void Main(string[] args) { if (args.Length != 1) { Console.WriteLine("*** [ContentFilteredTopicDataSubscriber] Subscription string not specified"); Console.WriteLine("*** usage : ContentFilteredTopicDataSubscriber <subscription_string>"); Environment.Exit(-1); } ITopic topic; DDSEntityManager mgr = new DDSEntityManager("ContentFilteredTopic"); String partitionName = "ContentFilteredTopic example"; // Create DomainParticipant mgr.createParticipant(partitionName); // Create Type StockTypeSupport msgTS = new StockTypeSupport(); mgr.registerType(msgTS); // Create Topic topic = mgr.createTopic("StockTrackerExclusive"); // ContentFilteredTopic mgr.createContentFilter("MyStockTopic", topic, args[0]); Console.WriteLine("=== [ContentFilteredTopicDataSubscriber] Subscription filter : ticker = '{0}'", args[0]); // create Subscriber mgr.createSubscriber(); // create DataReader mgr.createReader(true); // Read Events IDataReader dreader = mgr.getReader(); StockDataReader WaitSetReader = dreader as StockDataReader; // Create WaitSet IWaitSet w = new WaitSet(); // Status Condition IStatusCondition status; status = dreader.StatusCondition; status.SetEnabledStatuses(StatusKind.DataAvailable); ReturnCode result = ReturnCode.Error; result = w.AttachCondition(status); ErrorHandler.checkHandle(status, "DataReader.StatusCondition"); ErrorHandler.checkStatus(result, "WaitSet.AttachCondition"); DDS.ICondition[] conditionList; DDS.SampleInfo[] infoSeq; Stock[] stockSeq; Console.WriteLine("=== [ContentFilteredTopicDataSubscriber] Ready ..."); bool terminate = false; int count = 0; while (!terminate && count < 1500) { /** * Wait until data will be available */ Duration wait_timeout = new Duration(Duration.InfiniteSec, Duration.InfiniteNanoSec); conditionList = null; result = w.Wait(ref conditionList, wait_timeout); ErrorHandler.checkStatus(result, "WaitSet.Wait"); stockSeq = null; infoSeq = null; /** * Read Data */ result = WaitSetReader.Take(ref stockSeq, ref infoSeq, Length.Unlimited, SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any); ErrorHandler.checkStatus(result, "StockDataReader.Take"); /** * Display Data */ for (int i = 0; i < stockSeq.Length; i++) { if (infoSeq[i].ValidData) { if (stockSeq[i].price == -1) { // We read the last expected sample => exit terminate = true; break; } Console.WriteLine("=== [ContentFilteredTopicDataSubscriber] receives stockQuote : ( {0} , {1} )", stockSeq[i].ticker, stockSeq[i].price); } } result = WaitSetReader.ReturnLoan(ref stockSeq, ref infoSeq); ErrorHandler.checkStatus(result, "StockDataReader.ReturnLoan"); Thread.Sleep(200); ++count; } Console.WriteLine("=== [ContentFilteredTopicDataSubscriber] Market Closed"); // clean up mgr.getSubscriber().DeleteDataReader(WaitSetReader); mgr.deleteSubscriber(); mgr.deleteContentFilteredTopic(); mgr.deleteTopic(); mgr.deleteParticipant(); }
static void Main(string[] args) { if (args.Length != 1) { Console.WriteLine("Bad args number"); Console.WriteLine("*** [QueryConditionDataQuerySubscriber] Query string not specified"); Console.WriteLine("*** usage : QueryConditionDataQuerySubscriber <query_string>"); } else { ITopic topic; DDSEntityManager mgr = new DDSEntityManager("QueryCondition"); String partitionName = "QueryCondition example"; String QueryConditionDataToSubscribe = args[0]; // Create DomainParticipant mgr.createParticipant(partitionName); // Create Type StockTypeSupport msgTS = new StockTypeSupport(); mgr.registerType(msgTS); // Create Topic topic = mgr.createTopic("StockTrackerExclusive"); // create Subscriber mgr.createSubscriber(); // create DataReader mgr.createReader(false); // Read Events IDataReader dreader = mgr.getReader(); StockDataReader QueryConditionDataReader = dreader as StockDataReader; String[] queryStr = { QueryConditionDataToSubscribe }; Console.WriteLine("=== [QueryConditionDataQuerySubscriber] Query : ticker = {0}", QueryConditionDataToSubscribe); IQueryCondition qc = QueryConditionDataReader.CreateQueryCondition( SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any, "ticker=%0", queryStr); Console.WriteLine("=== [QueryConditionDataQuerySubscriber] Ready ..."); DDS.SampleInfo[] infoSeq = null; Stock[] stockSeq = null; ReturnCode status = ReturnCode.Error; bool terminate = false; int count = 0; Console.WriteLine("=== [QueryConditionDataQuerySubscriber] Ready ..."); while (!terminate && count < 1500) { // Take Sample with Condition status = QueryConditionDataReader.TakeWithCondition(ref stockSeq, ref infoSeq, Length.Unlimited, qc); ErrorHandler.checkStatus(status, "DataReader.TakeWithCondition"); /** * Display Data */ for (int i = 0; i < stockSeq.Length; i++) { if (infoSeq[i].ValidData) { if (stockSeq[i].price == -1.0f) { terminate = true; break; } Console.WriteLine("{0} : {1}", stockSeq[i].ticker, String.Format("{0:0.#}", stockSeq[i].price)); } } status = QueryConditionDataReader.ReturnLoan(ref stockSeq, ref infoSeq); ErrorHandler.checkStatus(status, "DataReader.ReturnLoan"); Thread.Sleep(200); ++count; } Console.WriteLine("=== [QueryConditionDataQuerySubscriber] Market Closed"); // clean up QueryConditionDataReader.DeleteReadCondition(qc); mgr.getSubscriber().DeleteDataReader(QueryConditionDataReader); mgr.deleteSubscriber(); mgr.deleteTopic(); mgr.deleteParticipant(); } }
static void Main(string[] args) { DDSEntityManager mgr = new DDSEntityManager("ContentFilteredTopic"); String partitionName = "ContentFilteredTopic example"; // create Domain Participant mgr.createParticipant(partitionName); mgr.setAutoDispose(true); // create Type StockTypeSupport msgTS = new StockTypeSupport(); mgr.registerType(msgTS); // create Topic mgr.createTopic("StockTrackerExclusive"); // create Publisher mgr.createPublisher(); // create DataWriter mgr.createWriter(); // Publish Events IDataWriter dwriter = mgr.getWriter(); StockDataWriter ContentFilteredTopicDataWriter = dwriter as StockDataWriter; Stock geStock = new Stock(); Stock msftStock = new Stock(); ReturnCode writeStatus; geStock.ticker = "GE"; geStock.price = 12.00f; msftStock.ticker = "MSFT"; msftStock.price = 25.00f; InstanceHandle geHandle = ContentFilteredTopicDataWriter.RegisterInstance(geStock); InstanceHandle msHandle = ContentFilteredTopicDataWriter.RegisterInstance(msftStock); for (int i = 0; i < 20; i++) { geStock.price += 0.5f; msftStock.price += 1.5f; Console.WriteLine("=== [ContentFilteredTopicDataPublisher] sends 2 stockQuotes : (GE, {0}) (MSFT, {1})", geStock.price, msftStock.price); writeStatus = ContentFilteredTopicDataWriter.Write(geStock, geHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write"); writeStatus = ContentFilteredTopicDataWriter.Write(msftStock, msHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write"); Thread.Sleep(100); } geStock.price = -1.0f; msftStock.price = -1.0f; writeStatus = ContentFilteredTopicDataWriter.Write(geStock, geHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write GE"); writeStatus = ContentFilteredTopicDataWriter.Write(msftStock, msHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write MSFT"); Console.WriteLine("Market Closed"); ContentFilteredTopicDataWriter.UnregisterInstance(geStock, geHandle); ContentFilteredTopicDataWriter.UnregisterInstance(msftStock, msHandle); mgr.getPublisher().DeleteDataWriter(ContentFilteredTopicDataWriter); mgr.deletePublisher(); mgr.deleteTopic(); mgr.deleteParticipant(); }
static void Main(string[] args) { DDSEntityManager mgr = new DDSEntityManager(); String partitionName = "QueryCondition example"; // create Domain Participant mgr.createParticipant(partitionName); // create Type StockTypeSupport msgTS = new StockTypeSupport(); mgr.registerType(msgTS); // create Topic mgr.createTopic("StockTrackerExclusive", "QueryCondition"); // create Publisher mgr.createPublisher(); // create DataWriter mgr.createWriter(); // Publish Events IDataWriter dwriter = mgr.getWriter(); StockDataWriter QueryConditionDataWriter = dwriter as StockDataWriter; Stock geStock = new Stock(); Stock msftStock = new Stock(); ReturnCode writeStatus; geStock.ticker = "GE"; geStock.price = 12.00f; msftStock.ticker = "MSFT"; msftStock.price = 25.00f; // Register Instances InstanceHandle geHandle = QueryConditionDataWriter.RegisterInstance(geStock); ErrorHandler.checkHandle(geHandle, "DataWriter.RegisterInstance (GE)"); InstanceHandle msHandle = QueryConditionDataWriter.RegisterInstance(msftStock); ErrorHandler.checkHandle(msHandle, "DataWriter.RegisterInstance (MSFT)"); for (int i = 0; i < 20; i++) { geStock.price += 0.5f; msftStock.ticker += 1.5f; writeStatus = QueryConditionDataWriter.Write(geStock, InstanceHandle.Nil); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write"); writeStatus = QueryConditionDataWriter.Write(msftStock, InstanceHandle.Nil); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write"); Thread.Sleep(100); Console.WriteLine("GE : {0} MSFT {1}",String.Format("{0:0.#}", geStock.price), String.Format("{0:0.#}", msftStock.price)); } geStock.price = -1.0f; msftStock.price = -1.0f; // Write samples writeStatus = QueryConditionDataWriter.Write(geStock, InstanceHandle.Nil); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write (GE)"); writeStatus = QueryConditionDataWriter.Write(msftStock, InstanceHandle.Nil); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write (MS)"); // Dispose Instances writeStatus = QueryConditionDataWriter.Dispose(geStock, geHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Dispose (GE)"); writeStatus = QueryConditionDataWriter.Dispose(msftStock, msHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Dispose (MS)"); // Unregister Instances writeStatus = QueryConditionDataWriter.UnregisterInstance(geStock, geHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.UnregisterInstance (GE)"); writeStatus = QueryConditionDataWriter.UnregisterInstance(msftStock, msHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.UnregisterInstance(MS)"); // Clean up mgr.getPublisher().DeleteDataWriter(QueryConditionDataWriter); mgr.deletePublisher(); mgr.deleteTopic(); mgr.deleteParticipant(); }
static void Main(string[] args) { DDSEntityManager mgr = new DDSEntityManager("Ownership"); String partitionName = "Ownership example"; // create Domain Participant mgr.createParticipant(partitionName); // create Type StockTypeSupport msgTS = new StockTypeSupport(); mgr.registerType(msgTS); // create Topic mgr.createTopic("StockTrackerExclusive"); // create Subscriber mgr.createSubscriber(); // create DataReader mgr.createReader(false); // Read Events IDataReader dreader = mgr.getReader(); StockDataReader OwnershipDataReader = dreader as StockDataReader; Stock[] msgSeq = null; DDS.SampleInfo[] infoSeq = null; Console.WriteLine("===[Subscriber] Ready ..."); Console.WriteLine(" Ticker Price Publisher ownership strength"); Boolean terminate = false; ReturnCode status = ReturnCode.Error; int count = 0; while (!terminate && count < 1500) { OwnershipDataReader.Take(ref msgSeq, ref infoSeq, Length.Unlimited, SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any); for (int i = 0; i < msgSeq.Length; i++) { if (infoSeq[i].ValidData) { if (msgSeq[i].price < -0.0f) { terminate = true; break; } Console.WriteLine(" {0} {1} {2} {3}", msgSeq[i].ticker, msgSeq[i].price, msgSeq[i].publisher, msgSeq[i].strength); } } status = OwnershipDataReader.ReturnLoan(ref msgSeq, ref infoSeq); ErrorHandler.checkStatus(status, "StockDataReader.ReturnLoan"); Thread.Sleep(2); ++count; Thread.Sleep(200); } Console.WriteLine("===[Subscriber] Market Closed"); // clean up mgr.getSubscriber().DeleteDataReader(OwnershipDataReader); mgr.deleteSubscriber(); mgr.deleteTopic(); mgr.deleteParticipant(); }
static void Main(string[] args) { if (args.Length != 1) { Console.WriteLine("Bad args number"); Console.WriteLine("*** [QueryConditionDataQuerySubscriber] Query string not specified"); Console.WriteLine("*** usage : QueryConditionDataQuerySubscriber <query_string>"); Environment.Exit(-1); } ITopic topic; DDSEntityManager mgr = new DDSEntityManager(); String partitionName = "QueryCondition example"; String QueryConditionDataToSubscribe = args[0]; // Create DomainParticipant mgr.createParticipant(partitionName); // Create Type StockTypeSupport msgTS = new StockTypeSupport(); mgr.registerType(msgTS); // Create Topic topic = mgr.createTopic("StockTrackerExclusive", "QueryCondition"); // create Subscriber mgr.createSubscriber(); // create DataReader mgr.createReader("QueryCondition", false); // Read Events IDataReader dreader = mgr.getReader(); StockDataReader QueryConditionDataReader = dreader as StockDataReader; String[] queryStr = { QueryConditionDataToSubscribe }; Console.WriteLine("=== [QueryConditionDataQuerySubscriber] Query : ticker = {0}", QueryConditionDataToSubscribe); IQueryCondition qc = QueryConditionDataReader.CreateQueryCondition( SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any, "ticker=%0", queryStr); Console.WriteLine("=== [QueryConditionDataQuerySubscriber] Ready ..."); DDS.SampleInfo[] infoSeq = null; Stock[] stockSeq = null; ReturnCode status = ReturnCode.Error; bool terminate = false; int count = 0; Console.WriteLine("=== [QueryConditionDataQuerySubscriber] Ready ..."); while (!terminate && count < 1500) { // Take Sample with Condition status = QueryConditionDataReader.TakeWithCondition(ref stockSeq, ref infoSeq, Length.Unlimited, qc); ErrorHandler.checkStatus(status, "DataReader.TakeWithCondition"); /** * Display Data */ for (int i=0; i<stockSeq.Length; i++) { if (infoSeq[i].ValidData) { if (stockSeq[i].price == -1.0f) { terminate = true; break; } Console.WriteLine("{0} : {1}", stockSeq[i].ticker, String.Format("{0:0.#}", stockSeq[i].price)); } } status = QueryConditionDataReader.ReturnLoan(ref stockSeq, ref infoSeq); ErrorHandler.checkStatus(status, "DataReader.ReturnLoan"); Thread.Sleep(200); ++count; } Console.WriteLine("=== [QueryConditionDataQuerySubscriber] Market Closed"); // clean up QueryConditionDataReader.DeleteReadCondition(qc); mgr.getSubscriber().DeleteDataReader(QueryConditionDataReader); mgr.deleteSubscriber(); mgr.deleteTopic(); mgr.deleteParticipant(); }
static void Main(string[] args) { DDSEntityManager mgr = new DDSEntityManager("QueryCondition"); String partitionName = "QueryCondition example"; // create Domain Participant mgr.createParticipant(partitionName); // create Type StockTypeSupport msgTS = new StockTypeSupport(); mgr.registerType(msgTS); // create Topic mgr.createTopic("StockTrackerExclusive"); // create Publisher mgr.createPublisher(); // create DataWriter mgr.createWriter(); // Publish Events IDataWriter dwriter = mgr.getWriter(); StockDataWriter QueryConditionDataWriter = dwriter as StockDataWriter; Stock geStock = new Stock(); Stock msftStock = new Stock(); ReturnCode writeStatus; geStock.ticker = "GE"; geStock.price = 12.00f; msftStock.ticker = "MSFT"; msftStock.price = 25.00f; // Register Instances InstanceHandle geHandle = QueryConditionDataWriter.RegisterInstance(geStock); ErrorHandler.checkHandle(geHandle, "DataWriter.RegisterInstance (GE)"); InstanceHandle msHandle = QueryConditionDataWriter.RegisterInstance(msftStock); ErrorHandler.checkHandle(msHandle, "DataWriter.RegisterInstance (MSFT)"); for (int i = 0; i < 20; i++) { geStock.price += 0.5f; msftStock.price += 1.5f; writeStatus = QueryConditionDataWriter.Write(geStock, InstanceHandle.Nil); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write"); writeStatus = QueryConditionDataWriter.Write(msftStock, InstanceHandle.Nil); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write"); Thread.Sleep(100); Console.WriteLine("GE : {0} MSFT {1}", String.Format("{0:0.#}", geStock.price), String.Format("{0:0.#}", msftStock.price)); } geStock.price = -1.0f; msftStock.price = -1.0f; // Write samples writeStatus = QueryConditionDataWriter.Write(geStock, InstanceHandle.Nil); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write (GE)"); writeStatus = QueryConditionDataWriter.Write(msftStock, InstanceHandle.Nil); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Write (MS)"); // Dispose Instances writeStatus = QueryConditionDataWriter.Dispose(geStock, geHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Dispose (GE)"); writeStatus = QueryConditionDataWriter.Dispose(msftStock, msHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.Dispose (MS)"); // Unregister Instances writeStatus = QueryConditionDataWriter.UnregisterInstance(geStock, geHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.UnregisterInstance (GE)"); writeStatus = QueryConditionDataWriter.UnregisterInstance(msftStock, msHandle); ErrorHandler.checkStatus(writeStatus, "StockDataWriter.UnregisterInstance(MS)"); // Clean up mgr.getPublisher().DeleteDataWriter(QueryConditionDataWriter); mgr.deletePublisher(); mgr.deleteTopic(); mgr.deleteParticipant(); }