static void Main(string[] args)
        {
            DDSEntityManager mgr = new DDSEntityManager("HelloWorld");
            String partitionName = "HelloWorld example";

            // create Domain Participant
            mgr.createParticipant(partitionName);

            // create Type
            MsgTypeSupport msgTS = new MsgTypeSupport();
            mgr.registerType(msgTS);

            // create Topic
            mgr.createTopic("HelloWorldData_Msg");

            // create Subscriber
            mgr.createSubscriber();

            // create DataReader
            mgr.createReader(false);

            IDataReader dreader = mgr.getReader();
            MsgDataReader HelloWorldDataReader = dreader as MsgDataReader;

            Msg[] msgSeq = null;
            DDS.SampleInfo[] infoSeq = null;
            Boolean terminate = false;
            ReturnCode status;

            Console.WriteLine("=== [Subscriber] Ready ...");
            int count = 0;
            while (!terminate && count < 1500)
            {
                status = HelloWorldDataReader.Take(ref msgSeq, ref infoSeq, Length.Unlimited, SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any);
                ErrorHandler.checkStatus(status, "DataReader.Take");
                for (int i = 0; i < msgSeq.Length; i++)
                {
                    if (infoSeq[i].ValidData)
                    {
                        Console.WriteLine("=== [Subscriber] message received :");
                        Console.WriteLine("    userID  : {0}", msgSeq[i].userID);
                        Console.WriteLine("    Message : \"" + msgSeq[i].message + "\"");

                        terminate = true;
                    }                                        
                }
                status = HelloWorldDataReader.ReturnLoan(ref msgSeq, ref infoSeq);
                ErrorHandler.checkStatus(status, "DataReader.ReturnLoan");
                Thread.Sleep(200);
                ++count;
            }

            Thread.Sleep(2);

            // clean up
            mgr.getSubscriber().DeleteDataReader(HelloWorldDataReader);
            mgr.deleteSubscriber();       
            mgr.deleteTopic();
            mgr.deleteParticipant();
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            DDSEntityManager mgr           = new DDSEntityManager("WaitSet");
            String           partitionName = "WaitSet example";

            // create Domain Participant
            mgr.createParticipant(partitionName);

            // create Type
            MsgTypeSupport msgTS = new MsgTypeSupport();

            mgr.registerType(msgTS);

            // create Topic
            mgr.createTopic("WaitSetData_Msg");

            // create Publisher
            mgr.createPublisher();

            // create DataWriter
            mgr.createWriter();

            // Publish Events

            IDataWriter   dwriter       = mgr.getWriter();
            MsgDataWriter WaitSetWriter = dwriter as MsgDataWriter;

            // Write the first message
            Msg msgInstance = new Msg();

            msgInstance.userID  = 1;
            msgInstance.message = "First hello";

            Console.WriteLine("=== [Publisher] writing a message containing :");
            Console.WriteLine("    userID  : {0}", msgInstance.userID);
            Console.WriteLine("    Message : \" {0} ", msgInstance.message);

            ReturnCode status = WaitSetWriter.Write(msgInstance, InstanceHandle.Nil);

            ErrorHandler.checkStatus(status, "MsgDataWriter.Write");

            Thread.Sleep(500);

            // Write another message
            msgInstance.message = "Hello again";
            status = WaitSetWriter.Write(msgInstance, InstanceHandle.Nil);
            ErrorHandler.checkStatus(status, "MsgDataWriter.Write");

            Console.WriteLine("=== [Publisher] writing a message containing :");
            Console.WriteLine("    userID  : {0}", msgInstance.userID);
            Console.WriteLine("    Message : {0}", msgInstance.message);
            Thread.Sleep(500);

            // Clean up
            mgr.getPublisher().DeleteDataWriter(WaitSetWriter);
            mgr.deletePublisher();
            mgr.deleteTopic();
            mgr.deleteParticipant();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            DDSEntityManager mgr = new DDSEntityManager();
            String partitionName = "HelloWorld example";

            // create Domain Participant
            mgr.createParticipant(partitionName);
            mgr.setAutoDispose(true);

            // create Type
            MsgTypeSupport msgTS = new MsgTypeSupport();
            mgr.registerType(msgTS);

            // create Topic
            mgr.createTopic("HelloWorldData_Msg", "HelloWorld");

            // create Publisher
            mgr.createPublisher();

            // create DataWriter
            mgr.createWriter();

            // Publish Events
            IDataWriter dwriter = mgr.getWriter();
            MsgDataWriter helloWorldWriter = dwriter as MsgDataWriter;

            Msg msgInstance = new Msg();
            msgInstance.userID = 1;
            msgInstance.message = "Hello World";

            InstanceHandle handle = helloWorldWriter.RegisterInstance(msgInstance);
            ErrorHandler.checkHandle(handle, "MsgDataWriter.RegisterInstance");

            Console.WriteLine("=== [Publisher] writing a message containing :");
            Console.WriteLine("    userID  : {0}", msgInstance.userID);
            Console.WriteLine("    Message : \" {0} \"", msgInstance.message);
            ReturnCode status = helloWorldWriter.Write(msgInstance, handle);
            ErrorHandler.checkStatus(status, "MsgDataWriter.Write");

            try
            {
                Thread.Sleep(2);
            }
            catch (ArgumentOutOfRangeException ex)
            {
                Console.WriteLine(ex.ToString());
                Console.WriteLine(ex.StackTrace);
            }

            status = helloWorldWriter.UnregisterInstance(msgInstance, handle);

            // Clean up
            mgr.getPublisher().DeleteDataWriter(helloWorldWriter);
            mgr.deletePublisher();
            mgr.deleteTopic();
            mgr.deleteParticipant();
        }
Ejemplo n.º 6
0
        static void Main(string[] args)
        {
            DDSEntityManager mgr = new DDSEntityManager("WaitSet");
            String partitionName = "WaitSet example";

            // create Domain Participant
            mgr.createParticipant(partitionName);

            // create Type
            MsgTypeSupport msgTS = new MsgTypeSupport();
            mgr.registerType(msgTS);

            // create Topic
            mgr.createTopic("WaitSetData_Msg");

            // create Publisher
            mgr.createPublisher();

            // create DataWriter
            mgr.createWriter();

            // Publish Events

            IDataWriter dwriter = mgr.getWriter();
            MsgDataWriter WaitSetWriter = dwriter as MsgDataWriter;

            // Write the first message
            Msg msgInstance = new Msg();
            msgInstance.userID = 1;
            msgInstance.message = "First hello";

            Console.WriteLine("=== [Publisher] writing a message containing :");
            Console.WriteLine("    userID  : {0}", msgInstance.userID);
            Console.WriteLine("    Message : \" {0} ", msgInstance.message);

            ReturnCode status = WaitSetWriter.Write(msgInstance, InstanceHandle.Nil);
            ErrorHandler.checkStatus(status, "MsgDataWriter.Write");

            Thread.Sleep(500);

            // Write another message
            msgInstance.message = "Hello again";
            status = WaitSetWriter.Write(msgInstance, InstanceHandle.Nil);
            ErrorHandler.checkStatus(status, "MsgDataWriter.Write");

            Console.WriteLine("=== [Publisher] writing a message containing :");
            Console.WriteLine("    userID  : {0}", msgInstance.userID);
            Console.WriteLine("    Message : {0}", msgInstance.message);
            Thread.Sleep(500);

            // Clean up
            mgr.getPublisher().DeleteDataWriter(WaitSetWriter);
            mgr.deletePublisher();
            mgr.deleteTopic();
            mgr.deleteParticipant();
        }
Ejemplo n.º 7
0
        static void Main(string[] args)
        {
            DDSEntityManager mgr           = new DDSEntityManager("Listener");
            String           partitionName = "Listener Example";

            // create Domain Participant
            mgr.createParticipant(partitionName);

            // create Type
            MsgTypeSupport msgTS = new MsgTypeSupport();

            mgr.registerType(msgTS);

            // create Topic
            mgr.createTopic("ListenerData_Msg");

            // create Publisher
            mgr.createPublisher();

            // create DataWriter
            mgr.createWriter();

            // Publish Events
            IDataWriter   dwriter        = mgr.getWriter();
            MsgDataWriter listenerWriter = dwriter as MsgDataWriter;

            ReturnCode status      = ReturnCode.Error;
            Msg        msgInstance = new Msg();

            msgInstance.userID  = 1;
            msgInstance.message = "Hello World";

            Console.WriteLine("=== [ListenerDataPublisher] writing a message containing :");
            Console.WriteLine("    userID  : {0}", msgInstance.userID);
            Console.WriteLine("    Message : \"" + msgInstance.message + "\"");

            InstanceHandle msgHandle = listenerWriter.RegisterInstance(msgInstance);

            ErrorHandler.checkHandle(msgHandle, "DataWriter.RegisterInstance");
            status = listenerWriter.Write(msgInstance, InstanceHandle.Nil);
            ErrorHandler.checkStatus(status, "DataWriter.Write");

            Thread.Sleep(2);

            // clean up

            status = listenerWriter.Dispose(msgInstance, msgHandle);
            ErrorHandler.checkStatus(status, "DataWriter.Dispose");
            status = listenerWriter.UnregisterInstance(msgInstance, msgHandle);
            ErrorHandler.checkStatus(status, "DataWriter.UnregisterInstance");

            mgr.getPublisher().DeleteDataWriter(listenerWriter);
            mgr.deletePublisher();
            mgr.deleteTopic();
            mgr.deleteParticipant();
        }
Ejemplo n.º 8
0
        static void Main(string[] args)
        {
            DDSEntityManager mgr = new DDSEntityManager("Listener");
            String partitionName = "Listener Example";

            // create Domain Participant
            mgr.createParticipant(partitionName);

            // create Type
            MsgTypeSupport msgTS = new MsgTypeSupport();
            mgr.registerType(msgTS);

            // create Topic
            mgr.createTopic("ListenerData_Msg");

            // create Publisher
            mgr.createPublisher();

            // create DataWriter
            mgr.createWriter();

            // Publish Events
            IDataWriter dwriter = mgr.getWriter();
            MsgDataWriter listenerWriter = dwriter as MsgDataWriter;

            ReturnCode status = ReturnCode.Error;
            Msg msgInstance = new Msg();
            msgInstance.userID = 1;
            msgInstance.message = "Hello World";

            Console.WriteLine("=== [ListenerDataPublisher] writing a message containing :");
            Console.WriteLine("    userID  : {0}", msgInstance.userID);
            Console.WriteLine("    Message : \"" + msgInstance.message + "\"");

            InstanceHandle msgHandle = listenerWriter.RegisterInstance(msgInstance);
            ErrorHandler.checkHandle(msgHandle, "DataWriter.RegisterInstance");
            status = listenerWriter.Write(msgInstance, InstanceHandle.Nil);
            ErrorHandler.checkStatus(status, "DataWriter.Write");

            Thread.Sleep(2);

            // clean up

            status = listenerWriter.Dispose(msgInstance, msgHandle);
            ErrorHandler.checkStatus(status, "DataWriter.Dispose");
            status = listenerWriter.UnregisterInstance(msgInstance, msgHandle);
            ErrorHandler.checkStatus(status, "DataWriter.UnregisterInstance");

            mgr.getPublisher().DeleteDataWriter(listenerWriter);
            mgr.deletePublisher();
            mgr.deleteTopic();
            mgr.deleteParticipant();
        }
Ejemplo n.º 9
0
        static void Main(string[] args)
        {
            bool autodispose_flag = false;
            String writer_action;
            ReturnCode status = ReturnCode.Error;

            if (args.Length < 2)
            {
                usage();
            }
            else if ((!args[0].Equals("true")) &&
                (!args[0].Equals("false")) &&
                (!args[1].Equals("dispose")) &&
                (!args[1].Equals("unregister")) &&
                (!args[1].Equals("stoppub")))
            {
                usage();
            }
            else
            {
                autodispose_flag = Boolean.Parse(args[0]);
                writer_action = args[1];

                // DDS Helper class instance for Msg Topic
                DDSEntityManager mgr = new DDSEntityManager("Lifecycle");

                // Create domain participant
                String partitionName = "Lifecycle example";
                mgr.createParticipant(partitionName);

                // Set AutoDispose Flag
                mgr.setAutoDispose(autodispose_flag);

                // Create type
                MsgTypeSupport mt = new MsgTypeSupport();
                mgr.registerType(mt);

                // Create Topic
                String topicName = "Lifecycle_Msg";
                mgr.createTopic(topicName);

                // Create Publisher
                mgr.createPublisher();

                // Create DataWriter(s)
                mgr.createWriter();

                // Publish Samples
                IDataWriter dwriter = mgr.getWriter();
                MsgDataWriter LifecycleWriter = dwriter as MsgDataWriter;
                IDataWriter dwriter_stopper = mgr.getWriterStopper();
                MsgDataWriter LifecycleWriter_stopper = dwriter_stopper as MsgDataWriter;

                if (writer_action.Equals("dispose"))
                {
                    // Send Msg (topic to monitor)
                    Msg msgInstance = new Msg();
                    msgInstance.userID = 1;
                    msgInstance.message = "Lifecycle_1";
                    msgInstance.writerStates = "SAMPLE_SENT -> INSTANCE_DISPOSED -> DATAWRITER_DELETED";
                    Console.WriteLine("=== [Publisher]  :");
                    Console.WriteLine("    userID   : {0}", msgInstance.userID);
                    Console.WriteLine("    Message  : \"{0}\"", msgInstance.message);
                    Console.WriteLine("    writerStates  : \"{0}\"", msgInstance.writerStates);
                    status = LifecycleWriter.Write(msgInstance, InstanceHandle.Nil);
                    ErrorHandler.checkStatus(status, "MsDataWriter.Write");
                    Thread.Sleep(500);
                    Console.WriteLine("=== [Publisher]  : SAMPLE_SENT");

                    // Dispose instance
                    status = LifecycleWriter.Dispose(msgInstance, InstanceHandle.Nil);
                    ErrorHandler.checkStatus(status, "MsDataWriter.Dispose");
                    Console.WriteLine("=== [Publisher]  : INSTANCE_DISPOSED");
                }
                else if (writer_action.Equals("unregister"))
                {
                    // Send Msg (topic to monitor)
                    Msg msgInstance = new Msg();
                    msgInstance.userID = 2;
                    msgInstance.message = "Lifecycle_2";
                    msgInstance.writerStates = "SAMPLE_SENT -> INSTANCE_UNREGISTERED -> DATAWRITER_DELETED";
                    Console.WriteLine("=== [Publisher]  :");
                    Console.WriteLine("    userID   : {0}", msgInstance.userID);
                    Console.WriteLine("    Message  : \"{0}\"", msgInstance.message);
                    Console.WriteLine("    writerStates  : \"{0}\"", msgInstance.writerStates);
                    status = LifecycleWriter.Write(msgInstance, InstanceHandle.Nil);
                    ErrorHandler.checkStatus(status, "MsDataWriter.Write");
                    Thread.Sleep(500);
                    Console.WriteLine("=== [Publisher]  : SAMPLE_SENT");

                    // Unregister instance : the auto_dispose_unregistered_instances flag
                    // is currently ignored and the instance is never disposed automatically
                    status = LifecycleWriter.UnregisterInstance(msgInstance, InstanceHandle.Nil);
                    ErrorHandler.checkStatus(status, "MsDataWriter.UnregisterInstance");
                    Console.WriteLine("=== [Publisher]  : INSTANCE_UNREGISTERED");
                }
                else if (writer_action.Equals("stoppub"))
                {
                    Msg msgInstance = new Msg();
                    msgInstance.userID = 3;
                    msgInstance.message = "Lifecycle_3";
                    msgInstance.writerStates = "SAMPLE_SENT -> DATAWRITER_DELETED";
                    Console.WriteLine("=== [Publisher]  :");
                    Console.WriteLine("    userID   : {0}", msgInstance.userID);
                    Console.WriteLine("    Message  : \"{0}\"", msgInstance.message);
                    Console.WriteLine("    writerStates  : \"{0}\"", msgInstance.writerStates);
                    status = LifecycleWriter.Write(msgInstance, InstanceHandle.Nil);
                    ErrorHandler.checkStatus(status, "MsDataWriter.Write");
                    Thread.Sleep(500);
                    Console.WriteLine("=== [Publisher]  : SAMPLE_SENT");
                }

                // Let the subscriber treat the previous writer state !!!
                Console.WriteLine("=== [Publisher] waiting 500ms to let the subscriber treat the previous write state ...");
                Thread.Sleep(500);

                // Remove the DataWriter
                mgr.deleteWriter(LifecycleWriter);
                Thread.Sleep(500);
                Console.WriteLine("=== [Publisher]  : DATAWRITER_DELETED");

                // Stop the subscriber
                Msg stopMsg = new Msg();
                stopMsg.userID = 4;
                stopMsg.message = "Lifecycle_4";
                stopMsg.writerStates = "STOPPING_SUBSCRIBER";
                Console.WriteLine("=== [Publisher]  :");
                Console.WriteLine("    userID   : {0}", stopMsg.userID);
                Console.WriteLine("    Message  : \"{0}\"", stopMsg.message);
                Console.WriteLine("    writerStates  : \"{0}\"", stopMsg.writerStates);
                status = LifecycleWriter_stopper.Write(stopMsg, InstanceHandle.Nil);
                ErrorHandler.checkStatus(status, "MsDataWriter.Write");
                Thread.Sleep(500);

                // Remove the DataWriter stopper
                mgr.deleteWriter(LifecycleWriter_stopper);

                // Remove the Publisher
                mgr.deletePublisher();

                // Remove the Topic
                mgr.deleteTopic();

                // Remove the participant
                mgr.deleteParticipant();
            }
        }
Ejemplo n.º 10
0
        static void Main(string[] args)
        {
            DDSEntityManager mgr           = new DDSEntityManager("WaitSet");
            String           partitionName = "WaitSet example";

            // create Domain Participant
            mgr.createParticipant(partitionName);

            // create Type
            MsgTypeSupport msgTS = new MsgTypeSupport();

            mgr.registerType(msgTS);

            // create Topic
            mgr.createTopic("WaitSetData_Msg");

            // create Subscriber
            mgr.createSubscriber();

            // create DataReader
            mgr.createReader(false);

            // Read Events

            IDataReader   dreader       = mgr.getReader();
            MsgDataReader WaitSetReader = dreader as MsgDataReader;

            // Create a WaitSet
            WaitSet w = new WaitSet();

            // Create a ReadCondition
            IReadCondition readCond = WaitSetReader.CreateReadCondition(SampleStateKind.NotRead, ViewStateKind.New, InstanceStateKind.Alive);

            ErrorHandler.checkHandle(readCond, "DataReader.CreateReadCondition");

            // Create a QueryCondition
            String[] queryStr = { "Hello again" };
            Console.WriteLine("=== [WaitSetDataSubscriber] Query : message = \"Hello again");
            IQueryCondition queryCond = WaitSetReader.CreateQueryCondition("message=%0", queryStr);

            ErrorHandler.checkHandle(queryCond, "DataReader.CreateQueryCondition");

            // Obtain a StatusCondition
            IStatusCondition statusCond;

            statusCond = dreader.StatusCondition;
            statusCond.SetEnabledStatuses(StatusKind.LivelinessChanged);
            ErrorHandler.checkHandle(statusCond, "DataReader.StatusCondition");

            GuardCondition escape;

            escape = new GuardCondition();

            ReturnCode result;

            result = w.AttachCondition(statusCond);
            ErrorHandler.checkStatus(result, "WaitSet.AttachCondition (status)");
            result = w.AttachCondition(readCond);
            ErrorHandler.checkStatus(result, "WaitSet.AttachCondition (read)");
            result = w.AttachCondition(queryCond);
            ErrorHandler.checkStatus(result, "WaitSet.AttachCondition (query)");
            result = w.AttachCondition(escape);
            ErrorHandler.checkStatus(result, "WaitSet.AttachCondition (guard)");

            /* Initialize and pre-allocate the GuardList used to obtain
             * the triggered Conditions. */
            ICondition[] guardList = new ICondition[4];

            DDS.SampleInfo[] infoSeq = null;
            Msg[]            msgSeq  = null;

            bool escaped    = false;
            bool writerLeft = false;
            int  prevCount  = 0;
            int  count      = 0;

            Console.WriteLine("=== [WaitSetDataSubscriber] Ready ...");
            while (!escaped && count < 20)
            {
                /**
                 * Wait until data will be available
                 */
                Duration wait_timeout = new Duration(Duration.InfiniteSec, Duration.InfiniteNanoSec);
                result = w.Wait(ref guardList, wait_timeout);
                ErrorHandler.checkStatus(result, "WaitSet.Wait");

                /* Walk over all guards to display information */
                foreach (ICondition guard in guardList)
                {
                    if (guard == readCond)
                    {
                        result = WaitSetReader.ReadWithCondition(ref msgSeq, ref infoSeq,
                                                                 Length.Unlimited, readCond);
                        ErrorHandler.checkStatus(result, "WaitSetReader.ReadWithCondition");
                        foreach (Msg msg in msgSeq)
                        {
                            Console.WriteLine("   --- New message received ---   ");
                            Console.WriteLine("   userID: {0}", msg.userID);
                            Console.WriteLine("   Message :  \"{0}", msg.message);
                        }
                        result = WaitSetReader.ReturnLoan(ref msgSeq, ref infoSeq);
                        ErrorHandler.checkStatus(result, "WaitSet.ReturnLoan");
                    }
                    else if (guard == queryCond)
                    {
                        result = WaitSetReader.TakeWithCondition(ref msgSeq, ref infoSeq,
                                                                 Length.Unlimited, queryCond);
                        ErrorHandler.checkStatus(result, "WaitSetReader.TakeWithCondition");
                        foreach (Msg msg in msgSeq)
                        {
                            Console.WriteLine("   --- New message received with QueryCondition ---   ");
                            Console.WriteLine("   userID: {0}", msg.userID);
                            Console.WriteLine("   Message : \" {0}", msg.message);
                        }
                        result = WaitSetReader.ReturnLoan(ref msgSeq, ref infoSeq);
                        ErrorHandler.checkStatus(result, "WaitSet.ReturnLoan");
                    }
                    else if (guard == statusCond)
                    {
                        LivelinessChangedStatus livelinessStatus = new LivelinessChangedStatus();
                        result = WaitSetReader.GetLivelinessChangedStatus(ref livelinessStatus);
                        ErrorHandler.checkStatus(result, "DataReader.getLivelinessChangedStatus");
                        if (livelinessStatus.AliveCount < prevCount)
                        {
                            Console.WriteLine("!!! A WaitSetDataWriter lost its liveliness");
                            writerLeft = true;
                            Console.WriteLine("Triggering escape condition.");
                            ReturnCode status = escape.SetTriggerValue(true);
                        }
                        else
                        {
                            Console.WriteLine("!!! A WaitSetDataWriter joined");
                        }
                        prevCount = livelinessStatus.AliveCount;
                    }
                    else if (guard == escape)
                    {
                        Console.WriteLine("WaitSetSubscriber has terminated.");
                        escaped = true;
                        ReturnCode status = escape.SetTriggerValue(false);
                    }
                    else
                    {
                        // Unknown Condition
                    }
                }
                ++count;
            }

            // Detach all Conditions from the WaitSet
            result = w.DetachCondition(escape);
            ErrorHandler.checkStatus(result, "WaitSet.DetachCondition (escape)");
            result = w.DetachCondition(readCond);
            ErrorHandler.checkStatus(result, "WaitSet.DetachCondition (readCond)");
            result = w.DetachCondition(queryCond);
            ErrorHandler.checkStatus(result, "WaitSet.DetachCondition (queryCond)");
            result = w.DetachCondition(statusCond);
            ErrorHandler.checkStatus(result, "WaitSet.DetachCondition (statusCond)");

            Console.WriteLine("=== [Subscriber] Closed");
            // clean up
            WaitSetReader.DeleteReadCondition(readCond);
            WaitSetReader.DeleteReadCondition(queryCond);
            mgr.getSubscriber().DeleteDataReader(WaitSetReader);
            mgr.deleteSubscriber();
            mgr.deleteTopic();
            mgr.deleteParticipant();
        }
Ejemplo n.º 11
0
        static void Main(string[] args)
        {
            OsplConfiguration.SetOsplConfiguration();

            DDSEntityManager mgr           = new DDSEntityManager("HelloWorld");
            String           partitionName = "HelloWorld example";

            // create Domain Participant
            mgr.createParticipant(partitionName);

            // create Type
            MsgTypeSupport msgTS = new MsgTypeSupport();

            mgr.registerType(msgTS);

            // create Topic
            mgr.createTopic("HelloWorldData_Msg");

            // create Subscriber
            mgr.createSubscriber();

            // create DataReader
            mgr.createReader(false);

            IDataReader   dreader = mgr.getReader();
            MsgDataReader HelloWorldDataReader = dreader as MsgDataReader;

            Msg[]            msgSeq    = null;
            DDS.SampleInfo[] infoSeq   = null;
            Boolean          terminate = false;
            ReturnCode       status;

            Console.WriteLine("=== [Subscriber] Ready ...");
            int count = 0;

            while (!terminate && count < 1500)
            {
                status = HelloWorldDataReader.Take(ref msgSeq, ref infoSeq, Length.Unlimited, SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any);
                ErrorHandler.checkStatus(status, "DataReader.Take");
                for (int i = 0; i < msgSeq.Length; i++)
                {
                    if (infoSeq[i].ValidData)
                    {
                        Console.WriteLine("=== [Subscriber] message received :");
                        Console.WriteLine("    userID  : {0}", msgSeq[i].userID);
                        Console.WriteLine("    Message : \"" + msgSeq[i].message + "\"");

                        terminate = true;
                    }
                }
                status = HelloWorldDataReader.ReturnLoan(ref msgSeq, ref infoSeq);
                ErrorHandler.checkStatus(status, "DataReader.ReturnLoan");
                Thread.Sleep(200);
                ++count;
            }

            Thread.Sleep(2);

            // clean up
            mgr.getSubscriber().DeleteDataReader(HelloWorldDataReader);
            mgr.deleteSubscriber();
            mgr.deleteTopic();
            mgr.deleteParticipant();
        }
Ejemplo n.º 12
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("Insufficient number of arguments.");
                usage();
            }
            else
            {
                DDSEntityManager mgr           = new DDSEntityManager("Durability");
                String           partitionName = "Durability Example";
                DDS.Duration     timeout       = new DDS.Duration(40, 0);
                ReturnCode       status;

                String durabilityKind = args[0];

                // create Domain Participant
                mgr.createParticipant(partitionName);

                // set the durability kind
                mgr.setDurabilityKind(durabilityKind);

                // create Type
                MsgTypeSupport msgTS = new MsgTypeSupport();
                mgr.registerType(msgTS);

                // create Topic
                if (args[0].Equals("persistent"))
                {
                    mgr.createTopic("PersistentCSDurabilityData_Msg");
                }
                else
                {
                    mgr.createTopic("CSDurabilityData_Msg");
                }

                // create Subscriber
                mgr.createSubscriber();
                mgr.createReader(false);

                IDataReader   dreader = mgr.getReader();
                MsgDataReader DurabilityDataReader = dreader as MsgDataReader;

                status = DurabilityDataReader.WaitForHistoricalData(timeout);
                ErrorHandler.checkStatus(status, "DurabilityDataReader.WaitForHistoricalData");

                Msg[]            msgSeq    = null;
                DDS.SampleInfo[] infoSeq   = null;
                Boolean          terminate = false;
                Console.WriteLine("=== [Subscriber] Ready ...");
                while (!terminate)
                {
                    status = DurabilityDataReader.Take(ref msgSeq, ref infoSeq, Length.Unlimited, SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any);
                    ErrorHandler.checkStatus(status, "DataReader.Take");
                    for (int i = 0; i < msgSeq.Length; i++)
                    {
                        if (infoSeq[i].ValidData)
                        {
                            Console.WriteLine(msgSeq[i].content);
                            if (msgSeq[i].content.Equals("9"))
                            {
                                terminate = true;
                                break;
                            }
                        }
                    }
                    status = DurabilityDataReader.ReturnLoan(ref msgSeq, ref infoSeq);
                    ErrorHandler.checkStatus(status, "MsgDataReader.ReturnLoan");
                }

                // For single process mode wait some time to ensure persistent data is stored to disk
                Thread.Sleep(2000);

                // clean up
                mgr.getSubscriber().DeleteDataReader(DurabilityDataReader);
                mgr.deleteSubscriber();
                mgr.deleteTopic();
                mgr.deleteParticipant();
            }
        }
Ejemplo n.º 13
0
        static void Main(string[] args)
        {
            if (args.Length != 3)
            {
                Console.WriteLine("Insufficient number of arguments.");
                usage();
                Environment.Exit(-1);
            }
            else
            {
                String  durabilityKind  = args[0];
                Boolean autodisposeFlag = Boolean.Parse(args[1].ToString());
                Boolean automaticFlag   = Boolean.Parse(args[2].ToString());

                DDSEntityManager mgr           = new DDSEntityManager("Durability");
                String           partitionName = "Durability example";

                // Set the Durability Kind
                mgr.setDurabilityKind(durabilityKind);

                // Set the auto dispose flag
                mgr.setAutoDispose(autodisposeFlag);

                Thread.Sleep(1000);

                // create Domain Participant
                mgr.createParticipant(partitionName);

                // create Type
                MsgTypeSupport stkTS = new MsgTypeSupport();
                mgr.registerType(stkTS);

                // create Topic
                mgr.createTopic("DurabilityData_Msg");

                // create Publisher
                mgr.createPublisher();

                // create DataWriter
                mgr.createWriter();

                // Publish Events
                IDataWriter   dwriter   = mgr.getWriter();
                MsgDataWriter msgWriter = dwriter as MsgDataWriter;

                Msg []            DurabilityDataMsg = new Msg[10];
                InstanceHandle [] handle            = new InstanceHandle [10];

                ReturnCode status = ReturnCode.Error;

                for (int x = 0; x < 10; x++)
                {
                    DurabilityDataMsg[x]         = new Msg();
                    DurabilityDataMsg[x].id      = x;
                    DurabilityDataMsg[x].content = x.ToString();

                    Console.WriteLine("Storing {0}", DurabilityDataMsg[x].content);

                    handle[x] = msgWriter.RegisterInstance(DurabilityDataMsg[x]);
                    ErrorHandler.checkHandle(handle[x], "DataWriter.RegisterInstance");
                    status = msgWriter.Write(DurabilityDataMsg[x], handle[x]);
                    ErrorHandler.checkStatus(status, "DataWriter.Write");
                }

                if (!automaticFlag)
                {
                    char c = (char)0;
                    Console.WriteLine("Enter E to exit");
                    while (c != 'E')
                    {
                        c = (char)Console.Read();
                    }
                }
                else
                {
                    Console.WriteLine("=== sleeping 10s...");
                    Thread.Sleep(10000);
                }


                // Clean up
                status = mgr.getPublisher().DeleteDataWriter(msgWriter);
                ErrorHandler.checkStatus(status, "Publisher.DeleteDatWriter");
                mgr.deletePublisher();
                mgr.deleteTopic();
                mgr.deleteParticipant();
            }
        }
Ejemplo n.º 14
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("Insufficient number of arguments.");
                usage();
                Environment.Exit(-1);
            }
            else
            {
                DDSEntityManager mgr           = new DDSEntityManager("Durability");
                String           partitionName = "Durability Example";

                String durabilityKind = args[0];

                // create Domain Participant
                mgr.createParticipant(partitionName);

                // set the durability kind
                mgr.setDurabilityKind(durabilityKind);

                // create Type
                MsgTypeSupport msgTS = new MsgTypeSupport();
                mgr.registerType(msgTS);

                // create Topic
                mgr.createTopic("DurabilityData_Msg");

                // create Subscriber
                mgr.createSubscriber();
                mgr.createReader(false);

                IDataReader   dreader = mgr.getReader();
                MsgDataReader DurabilityDataReader = dreader as MsgDataReader;

                Msg[]            msgSeq    = null;
                DDS.SampleInfo[] infoSeq   = null;
                Boolean          terminate = false;
                ReturnCode       status;
                Console.WriteLine("=== [Subscriber] Ready ...");
                while (!terminate)
                {
                    status = DurabilityDataReader.Take(ref msgSeq, ref infoSeq, Length.Unlimited, SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any);
                    ErrorHandler.checkStatus(status, "DataReader.Take");
                    for (int i = 0; i < msgSeq.Length; i++)
                    {
                        if (infoSeq[i].ValidData)
                        {
                            Console.WriteLine("{0} : {1}", msgSeq[i].id, msgSeq[i].content);
                            if (msgSeq[i].content.Equals("9"))
                            {
                                terminate = true;
                                break;
                            }
                        }
                    }
                    status = DurabilityDataReader.ReturnLoan(ref msgSeq, ref infoSeq);
                    ErrorHandler.checkStatus(status, "MsgDataReader.ReturnLoan");
                }
                // clean up
                mgr.getSubscriber().DeleteDataReader(DurabilityDataReader);
                mgr.deleteSubscriber();
                mgr.deleteTopic();
                mgr.deleteParticipant();
            }
        }
Ejemplo n.º 15
0
        static void Main(string[] args)
        {
            DDSEntityManager mgr = new DDSEntityManager("WaitSet");
            String partitionName = "WaitSet example";

            // create Domain Participant
            mgr.createParticipant(partitionName);

            // create Type
            MsgTypeSupport msgTS = new MsgTypeSupport();
            mgr.registerType(msgTS);

            // create Topic
            mgr.createTopic("WaitSetData_Msg");

            // create Subscriber
            mgr.createSubscriber();

            // create DataReader
            mgr.createReader(false);

            // Read Events

            IDataReader dreader = mgr.getReader();
            MsgDataReader WaitSetReader = dreader as MsgDataReader;

            // Create a WaitSet
            WaitSet w = new WaitSet();

            // Create a ReadCondition
            IReadCondition readCond = WaitSetReader.CreateReadCondition(SampleStateKind.NotRead, ViewStateKind.New, InstanceStateKind.Alive);
            ErrorHandler.checkHandle(readCond, "DataReader.CreateReadCondition");

            // Create a QueryCondition
            String[] queryStr = { "Hello again" };
            Console.WriteLine("=== [WaitSetDataSubscriber] Query : message = \"Hello again");
            IQueryCondition queryCond = WaitSetReader.CreateQueryCondition("message=%0", queryStr);
            ErrorHandler.checkHandle(queryCond, "DataReader.CreateQueryCondition");

            // Obtain a StatusCondition
            IStatusCondition statusCond;
            statusCond = dreader.StatusCondition;
            statusCond.SetEnabledStatuses(StatusKind.LivelinessChanged);
            ErrorHandler.checkHandle(statusCond, "DataReader.StatusCondition");

            GuardCondition escape;
            escape = new GuardCondition();

            ReturnCode result;
            result = w.AttachCondition(statusCond);
            ErrorHandler.checkStatus(result, "WaitSet.AttachCondition (status)");
            result = w.AttachCondition(readCond);
            ErrorHandler.checkStatus(result, "WaitSet.AttachCondition (read)");
            result = w.AttachCondition(queryCond);
            ErrorHandler.checkStatus(result, "WaitSet.AttachCondition (query)");
            result = w.AttachCondition(escape);
            ErrorHandler.checkStatus(result, "WaitSet.AttachCondition (guard)");

            /* Initialize and pre-allocate the GuardList used to obtain
               the triggered Conditions. */
            ICondition[] guardList = new ICondition[4];

            DDS.SampleInfo[] infoSeq = null;
            Msg[] msgSeq = null;

            bool escaped = false;
            bool writerLeft = false;
            int prevCount = 0;
            int count = 0;
            Console.WriteLine("=== [WaitSetDataSubscriber] Ready ...");
            while (!escaped && count < 20 )
            {
                /**
                 * Wait until data will be available
                 */
                Duration wait_timeout = new Duration(Duration.InfiniteSec, Duration.InfiniteNanoSec);
                result = w.Wait(ref guardList, wait_timeout);
                ErrorHandler.checkStatus(result, "WaitSet.Wait");

                /* Walk over all guards to display information */
                foreach (ICondition guard in guardList)
                {
                    if (guard == readCond)
                    {
                        result = WaitSetReader.ReadWithCondition(ref msgSeq, ref infoSeq,
                                                                 Length.Unlimited, readCond);
                        ErrorHandler.checkStatus(result, "WaitSetReader.ReadWithCondition");
                        foreach (Msg msg in msgSeq)
                        {
                            Console.WriteLine("   --- New message received ---   ");
                            Console.WriteLine("   userID: {0}", msg.userID);
                            Console.WriteLine("   Message :  \"{0}", msg.message);
                        }
                        result = WaitSetReader.ReturnLoan(ref msgSeq, ref infoSeq);
                        ErrorHandler.checkStatus(result, "WaitSet.ReturnLoan");
                    }
                    else if (guard == queryCond)
                    {
                        result = WaitSetReader.TakeWithCondition(ref msgSeq, ref infoSeq,
                                                                 Length.Unlimited, queryCond);
                        ErrorHandler.checkStatus(result, "WaitSetReader.TakeWithCondition");
                        foreach (Msg msg in msgSeq)
                        {
                            Console.WriteLine("   --- New message received with QueryCondition ---   ");
                            Console.WriteLine("   userID: {0}", msg.userID);
                            Console.WriteLine("   Message : \" {0}", msg.message);
                        }
                        result = WaitSetReader.ReturnLoan(ref msgSeq, ref infoSeq);
                        ErrorHandler.checkStatus(result, "WaitSet.ReturnLoan");
                    }
                    else if (guard == statusCond)
                    {
                        LivelinessChangedStatus livelinessStatus = new LivelinessChangedStatus();
                        result = WaitSetReader.GetLivelinessChangedStatus(ref livelinessStatus);
                        ErrorHandler.checkStatus(result, "DataReader.getLivelinessChangedStatus");
                        if (livelinessStatus.AliveCount < prevCount)
                        {
                            Console.WriteLine("!!! A WaitSetDataWriter lost its liveliness");
                            writerLeft = true;
                            Console.WriteLine("Triggering escape condition.");
                            ReturnCode status = escape.SetTriggerValue(true);
                        }
                        else
                        {
                            Console.WriteLine("!!! A WaitSetDataWriter joined");
                        }
                        prevCount = livelinessStatus.AliveCount;
                    }
                    else if (guard == escape)
                    {
                        Console.WriteLine("WaitSetSubscriber has terminated.");
                        escaped = true;
                        ReturnCode status = escape.SetTriggerValue(false);
                    }
                    else
                    {
                        // Unknown Condition
                    }
                }
                ++count;
            }

            // Detach all Conditions from the WaitSet
            result = w.DetachCondition(escape);
            ErrorHandler.checkStatus(result, "WaitSet.DetachCondition (escape)");
            result = w.DetachCondition(readCond);
            ErrorHandler.checkStatus(result, "WaitSet.DetachCondition (readCond)");
            result = w.DetachCondition(queryCond);
            ErrorHandler.checkStatus(result, "WaitSet.DetachCondition (queryCond)");
            result = w.DetachCondition(statusCond);
            ErrorHandler.checkStatus(result, "WaitSet.DetachCondition (statusCond)");

            Console.WriteLine("=== [Subscriber] Closed");
            // clean up
            WaitSetReader.DeleteReadCondition(readCond);
            WaitSetReader.DeleteReadCondition(queryCond);
            mgr.getSubscriber().DeleteDataReader(WaitSetReader);
            mgr.deleteSubscriber();
            mgr.deleteTopic();
            mgr.deleteParticipant();
        }
Ejemplo n.º 16
0
        static void Main(string[] args)
        {
            char choice = ' ';
            bool interactive = true;
            bool autodispose_flag = false;

            if (args.Length < 1)
                usage();
            autodispose_flag = Boolean.Parse(args[0]);

            if (args.Length > 1)
            {
                if (!(args[1].Equals("-action")))
                    usage();
                if (args.Length < 2)
                    usage();
                choice = Char.Parse(args[2]);
                if ((!choice.Equals('1')) && (!choice.Equals('2')) && (!choice.Equals('3')) && (!choice.Equals('4')))
                    usage();
                interactive = false;
                Console.WriteLine("Choice : {0}", choice);
            }

            // DDS Helper class instances for WriterState & Msg Topic
            DDSEntityManager mgrWs = new DDSEntityManager();
            DDSEntityManager mgr = new DDSEntityManager();

            // Create domain participant
            String partitionName = "Lifecycle";
            mgrWs.createParticipant(partitionName);

            // Create Type
            WriterStateTypeSupport wst = new WriterStateTypeSupport();
            mgrWs.registerType(wst);

            // Create Topic
            String wsTopicName = "WriterState_Msg";
            mgrWs.createTopic(wsTopicName, "Lifecycle");

            // Create Publisher
            mgrWs.createPublisher();

            // Create DataWriter
            mgrWs.createWriter();

            // Publish Samples
            IDataWriter dws_writer = mgrWs.getWriter();
            WriterStateDataWriter WriterStateWriter = dws_writer as WriterStateDataWriter;

            //-------------------Msg Topic-------------------------//

            // Set AutoDispose Flag
            mgr.setAutoDispose(autodispose_flag);

            // Create Participant
            mgr.createParticipant(partitionName);

            // Create type
            MsgTypeSupport mt = new MsgTypeSupport();
            mgr.registerType(mt);

            // Create Topic
            String topicName = "Lifecycle_Msg";
            mgr.createTopic(topicName, "Lifecycle");

            // Create Publisher
            mgr.createPublisher();

            // Create DataWriter
            mgr.createWriter();

            // Publish Samples
            IDataWriter dwriter = mgr.getWriter();
            MsgDataWriter LifecycleWriter = dwriter as MsgDataWriter;

            // Send MsgDataWriter state
            WriterState wsInstance = new WriterState();
            wsInstance.state = "SENDING SAMPLE";
            Console.WriteLine("===[Publisher] : ");
            Console.WriteLine("   Writer state: \" {0}", wsInstance.state, "\"");
            ReturnCode status = WriterStateWriter.Write(wsInstance, InstanceHandle.Nil);
            ErrorHandler.checkStatus(status, "WriterStateDataWriter.Write");

            // Send Msg (topic to monitor)
            Msg msgInstance = new Msg();
            msgInstance.userID = 1;
            msgInstance.message = "Hello";
            Console.WriteLine("=== [Publisher]  :");
            Console.WriteLine("    userID   : {0}", msgInstance.userID);
            Console.WriteLine("    Message  : \" {0}", msgInstance.message);
            status = LifecycleWriter.Write(msgInstance, InstanceHandle.Nil);
            ErrorHandler.checkStatus(status, "MsDataWriter.Write");

            Thread.Sleep(2000);

            // Send MsgDataWriter state
            wsInstance.state = "SAMPLE SENT";
            Console.WriteLine("===[Publisher] : ");
            Console.WriteLine("   Writer state: \" {0}", wsInstance.state, "\"");
            status = WriterStateWriter.Write(wsInstance, InstanceHandle.Nil);
            ErrorHandler.checkStatus(status, "WriterStateDataWriter.Write");

            if (interactive)
            {
                while ((choice != '1') && (choice != '2') && (choice != '3') && (choice != '4'))
                {
                    Console.WriteLine("=== Choose a character to continue : ");
                    Console.WriteLine("    1  Dispose the instance");
                    Console.WriteLine("    2  Unregister the instance");
                    Console.WriteLine("    3  Stop the Publisher");
                    Console.WriteLine("    4  Stop the Subscriber");
                    choice = Char.Parse(Console.In.ReadLine());
                }
            }

            switch (choice)
            {
                case '1' :
                    {
                        // Dispose instance
                        status = LifecycleWriter.Dispose(msgInstance, InstanceHandle.Nil);
                        ErrorHandler.checkStatus(status, "MsDataWriter.Dispose");
                        // Send MsgDataWriter state
                        wsInstance.state = "INSTANCE DISPOSED";
                        Console.WriteLine("===[Publisher] : ");
                        Console.WriteLine("   Writer state: \" {0}", wsInstance.state, "\"");
                        status = WriterStateWriter.Write(wsInstance, InstanceHandle.Nil);
                        ErrorHandler.checkStatus(status, "WriterStateDataWriter.Write");

                        if (interactive)
                        {
                            Console.Write("\n=== enter a character to continue : ");
                            choice = Char.Parse(Console.In.ReadLine());
                        }
                        break;
                    }
                case '2':
                    {
                        // Unregister instance : the autoDispose_flag is currently
                        // ignored and the instance is never disposed automatically
                        status = LifecycleWriter.UnregisterInstance(msgInstance, InstanceHandle.Nil);
                        ErrorHandler.checkStatus(status, "MsgDataWriter.UnregisterInstance");

                        // send MsgDataWriter state
                        wsInstance.state = "INSTANCE UNREGISTERED";
                        Console.WriteLine("===[Publisher] : ");
                        Console.WriteLine("   Writer state: \" {0}", wsInstance.state, "\"");
                        status = WriterStateWriter.Write(wsInstance, InstanceHandle.Nil);
                        ErrorHandler.checkStatus(status, "WriterStateDataWriter.Write");

                        if (interactive)
                        {
                            Console.Write("\n=== enter a character to continue : ");
                            choice = Char.Parse(Console.In.ReadLine());
                        }
                        break;
                    }
                case '3':
                    {
                        break;
                    }
                case '4':
                    {
                        // send MsgDataWriter state
                        wsInstance.state = "STOPPING SUBSCRIBER";
                        Console.WriteLine("===[Publisher] : ");
                        Console.WriteLine("   Writer state: \" {0}", wsInstance.state, "\"");
                        status = WriterStateWriter.Write(wsInstance, InstanceHandle.Nil);
                        ErrorHandler.checkStatus(status, "WriterStateDataWriter.Write");
                        break;
                    }
            }

            // Clean-up entities for Msg topic
            // Remove the DataWriters
            mgr.getPublisher().DeleteDataWriter(LifecycleWriter);

            // send MsgDataWriter state
            wsInstance.state = "DATAWRITER DELETED";
            Console.WriteLine("===[Publisher] : ");
            Console.WriteLine("   Writer state: \" {0}", wsInstance.state, "\"");
            status = WriterStateWriter.Write(wsInstance, InstanceHandle.Nil);
            ErrorHandler.checkStatus(status, "WriterStateDataWriter.Write");

            // Remove the Publisher
            mgr.deletePublisher();

            // Remove the Topic
            mgr.deleteTopic();

            // Remove the Participant
            mgr.deleteParticipant();

            // Clean-up entities fpr WriterState topic
            // Dispose the instance
            status = WriterStateWriter.Dispose(wsInstance, InstanceHandle.Nil);
            ErrorHandler.checkStatus(status, "WriterStateWriter.Dispose");

            // Remove the DataWriter
            mgrWs.getPublisher().DeleteDataWriter(WriterStateWriter);

            // Remove the Publisher
            mgrWs.deletePublisher();

            // Remove the Topic
            mgrWs.deleteTopic();

            // Remove Participant
            mgrWs.deleteParticipant();
        }
Ejemplo n.º 17
0
        // Create the DDS worker thread here.
        public static void OpenSpliceWorker(Form mainForm)
        {// Initialize the DDS Code first
            bool             done = false;
            DDSEntityManager mgr  = new DDSEntityManager("HelloWorld");

//            String partitionName = "";
//            if (GlobalData.DDSPartitionName.Length > 0)
//            {// Use the glbal name
//                partitionName = GlobalData.DDSPartitionName;
//            } else
//            {
//                partitionName = "ADLINK";
//            }
            //
            // create default Hello World Topic
            //
            // create Domain Participant
            // set QOS for entity manager...
            mgr.setDurabilityKind("transient");
            mgr.createParticipant(GlobalData.DDSPartitionName);
            mgr.setAutoDispose(false);
            // create Type
            MsgTypeSupport msgTS = new MsgTypeSupport();

            mgr.registerType(msgTS);
            // create Topic
            mgr.createTopic("HelloWorldData_Msg");
            // create Publisher
            mgr.createPublisher();
            // create DataWriter
            mgr.createWriter();
            //
            // NOW CREATE NEW DDS DATA RECEIVER
            //
            // NOW Create another HelloWorld.Msg with a different topic name.
            //
            DDSEntityManager ADSBDatamgr = new DDSEntityManager("ADSBLinesData");

            // create Domain Participant
            ADSBDatamgr.createParticipant(GlobalData.DDSPartitionName);
            // create Type DM::Aircraft_Config
            Aircraft_ConfigTypeSupport AircraftConfigMsg = new DM.Aircraft_ConfigTypeSupport();

            //MsgTypeSupport msgTS2 = new MsgTypeSupport();
            ADSBDatamgr.registerType(AircraftConfigMsg);
            //ADSBDatamgr.registerType(msgTS2);
            // create Topic
            ADSBDatamgr.createTopic("ADSBLinesData");
            // create Subscriber
            ADSBDatamgr.createSubscriber();
            //            ADSBDatamgr.createPublisher();
            // create DataReader
            ADSBDatamgr.createReader(false);
            IDataReader ADSBLinesReader = ADSBDatamgr.getReader();
            Aircraft_ConfigDataReader ADSBLinesDataReader = ADSBLinesReader as Aircraft_ConfigDataReader;
            Aircraft_Config           ADSBLinesmsg        = null;

            Aircraft_Config[] ADSBLinesmsgSeq  = null;
            DDS.SampleInfo[]  ADSBLinesinfoSeq = null;

            // Publish Events
            IDataWriter   dwriter          = mgr.getWriter();
            MsgDataWriter helloWorldWriter = dwriter as MsgDataWriter;

            Msg msgInstance = new Msg();

            msgInstance.userID  = 1;
            msgInstance.message = "Update Locations"; // "Hello World";

            InstanceHandle handle = helloWorldWriter.RegisterInstance(msgInstance);

            ErrorHandler.checkHandle(handle, "MsgDataWriter.RegisterInstance");

            Console.WriteLine("=== [Publisher] writing a message containing :");
            Console.WriteLine("    userID  : {0}", msgInstance.userID);
            Console.WriteLine("    Message : \" {0} \"", msgInstance.message);
            ReturnCode status = helloWorldWriter.Write(msgInstance, handle);

            ErrorHandler.checkStatus(status, "MsgDataWriter.Write");

            // main write loop here...
            //try
            //{
            //    Thread.Sleep(2);
            //}
            //catch (ArgumentOutOfRangeException ex)
            //{
            //    Console.WriteLine(ex.ToString());
            //    Console.WriteLine(ex.StackTrace);
            //}
            while (!done)
            {// sleep and write samples from the main screen.
                Thread.Sleep(500);

                if (GlobalData.ischanged == true)
                {// main thread has written data values, so update data
                    Console.WriteLine("GLOBAL DATA HAS CHANGED!!!");
                    msgInstance.lattitued_ul = GlobalData.upleft_lat;
                    msgInstance.longitude_ul = GlobalData.upleft_lng;
                    msgInstance.lattitude_lr = GlobalData.btmright_lat;
                    msgInstance.longitude_lr = GlobalData.btmright_lng;
                    Console.WriteLine("Upper left Lat" + msgInstance.lattitued_ul.ToString());
                    Console.WriteLine("Upper left Lng" + msgInstance.longitude_ul.ToString());
                    Console.WriteLine("Lower Right Lat" + msgInstance.lattitude_lr.ToString());
                    Console.WriteLine("Lower Right Lng" + msgInstance.longitude_lr.ToString());
                    ReturnCode dds_status = helloWorldWriter.Write(msgInstance, handle);
                    Console.WriteLine("HELLO WORLD DDS WRITE ERROR = " + dds_status.ToString());
                    ErrorHandler.checkStatus(dds_status, "MsgDataWriter.Write");

                    GlobalData.ischanged = false;
                } // globaldata.ischange = true
                // now read DDS Data lines topic.
                //
                // get new DDS Values here...
                status = ADSBLinesDataReader.Take(ref ADSBLinesmsgSeq, ref ADSBLinesinfoSeq, Length.Unlimited, SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any);
                ErrorHandler.checkStatus(status, "DataReader.Take");
                if (ADSBLinesmsgSeq.Length > 0)
                {
                    for (int x = 0; x < ADSBLinesmsgSeq.Length; x++)
                    {
                        if (ADSBLinesinfoSeq[x].ValidData)
                        {// read the data!
                            ADSBLinesmsg                 = ADSBLinesmsgSeq[x];
                            GlobalData.DDS_Lines         = ADSBLinesmsg.tailNumber;
                            GlobalData.DDS_Data_Received = true;

/*                            Console.WriteLine("=== [Subscriber] message received : " + x.ToString());
 *                          Console.WriteLine("    lattitued_ul  : " + msgSeq[x].lattitued_ul.ToString());
 *                          Console.WriteLine("    longitude_ul  : " + msgSeq[x].longitude_ul.ToString());
 *                          Console.WriteLine("    lattitued_lr  : " + msgSeq[x].lattitude_lr.ToString());
 *                          Console.WriteLine("    longitude_lr  : " + msgSeq[x].longitude_lr.ToString());
 *                          Console.WriteLine("    Message : \"" + msgSeq[x].message + "\"");
 */
                            //                        status = HelloWorldDataReader.ReturnLoan(ref msgSeq, ref infoSeq);
                            //ErrorHandler.checkStatus(status, "DataReader.ReturnLoan");
                            //                            System.Threading.Thread.Sleep(2000);

/*                            lamin = msgSeq[x].lattitude_lr;  //32.3382F;
 *                          lomin = msgSeq[x].longitude_ul;  //- 121.8863F;
 *                          lamax = msgSeq[x].lattitued_ul;  //35.3382F;
 *                          lomax = msgSeq[x].longitude_lr;  // - 116.8863F;  */}
                    }
                }

                if (GlobalData.WorkerThreadIsRunning == false)
                {// signal thread to shut down...
                    done = true;
                }
            }

            // end of main write loop

            // Clean up
            status = helloWorldWriter.UnregisterInstance(msgInstance, handle);

            mgr.getPublisher().DeleteDataWriter(helloWorldWriter);
            mgr.deletePublisher();
            mgr.deleteTopic();
            mgr.deleteParticipant();

            return;
        }
Ejemplo n.º 18
0
        static void Main(string[] args)
        {
            String[] sSampleState   = { "READ_SAMPLE_STATE", "NOT_READ_SAMPLE_STATE" };
            String[] sViewState     = { "NEW_VIEW_STATE", "NOT_NEW_VIEW_STATE" };
            String[] sInstanceState = { "ALIVE_INSTANCE_STATE", "NOT_ALIVE_DISPOSED_INSTANCE_STATE", "NOT_ALIVE_NO_WRITERS_INSTANCE_STATE" };

            bool closed    = false;
            int  nbIter    = 1;
            int  nbIterMax = 100;

            ReturnCode status = ReturnCode.Error;

            Msg[]        msgList = null;
            SampleInfo[] infoSeq = null;

            DDSEntityManager mgr = new DDSEntityManager("Lifecycle");

            // Create domain participant
            String partitionName = "Lifecycle example";

            mgr.createParticipant(partitionName);

            // Create type
            MsgTypeSupport mt = new MsgTypeSupport();

            mgr.registerType(mt);

            // Create Topic
            String topicName = "Lifecycle_Msg";

            mgr.createTopic(topicName);

            // Create Subscriber
            mgr.createSubscriber();
            mgr.createReader(false);

            IDataReader   dreader         = mgr.getReader();
            MsgDataReader LifecycleReader = dreader as MsgDataReader;

            ErrorHandler.checkHandle(LifecycleReader, "MsgDataReader narrow");

            Console.WriteLine("=== [Subscriber] Ready ...");

            while (!closed && (nbIter < nbIterMax))
            {
                status = LifecycleReader.Read(ref msgList, ref infoSeq, Length.Unlimited, SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any);
                ErrorHandler.checkStatus(status, "MsgDataReader.Read");

                for (int j = 0; j < msgList.Length; j++)
                {
                    Console.WriteLine(" Message        : {0}", msgList[j].message);
                    Console.WriteLine(" writerStates   : {0}", msgList[j].writerStates);
                    Console.WriteLine(" valida data    : {0}", infoSeq[j].ValidData);
                    Console.WriteLine(" sample_state   : {0}", sSampleState[index((int)infoSeq[j].SampleState)]);
                    Console.WriteLine(" instance_state : {0}", sInstanceState[index((int)infoSeq[j].InstanceState)]);
                    Thread.Sleep(200);
                    closed = msgList[j].writerStates.Equals("STOPPING_SUBSCRIBER");
                }
                status = LifecycleReader.ReturnLoan(ref msgList, ref infoSeq);
                ErrorHandler.checkStatus(status, "MsgDataReader.ReturnLoan");
                Thread.Sleep(20);
                nbIter++;
            }

            Console.WriteLine("=== [Subscriber] stopping after {0} iterations - closed={1}", nbIter, closed.ToString());
            if (nbIter == nbIterMax)
            {
                Console.WriteLine("*** Error : max {0} iterations reached", nbIterMax);
            }

            // Clean-up
            mgr.getSubscriber().DeleteDataReader(LifecycleReader);
            mgr.deleteSubscriber();
            mgr.deleteTopic();
            mgr.deleteParticipant();
        }
        static void Main(string[] args)
        {
            DDSEntityManager mgr           = new DDSEntityManager("HelloWorld");
            String           partitionName = "HelloWorld example";

            // create Domain Participant
            mgr.createParticipant(partitionName);
            mgr.setAutoDispose(false);

            // create Type
            MsgTypeSupport msgTS = new MsgTypeSupport();

            mgr.registerType(msgTS);

            // create Topic
            mgr.createTopic("HelloWorldData_Msg");

            // create Publisher
            mgr.createPublisher();

            // create DataWriter
            mgr.createWriter();

            // Publish Events
            IDataWriter   dwriter          = mgr.getWriter();
            MsgDataWriter helloWorldWriter = dwriter as MsgDataWriter;

            Msg msgInstance = new Msg();

            msgInstance.userID  = 1;
            msgInstance.message = "Hello World";

            InstanceHandle handle = helloWorldWriter.RegisterInstance(msgInstance);

            ErrorHandler.checkHandle(handle, "MsgDataWriter.RegisterInstance");

            Console.WriteLine("=== [Publisher] writing a message containing :");
            Console.WriteLine("    userID  : {0}", msgInstance.userID);
            Console.WriteLine("    Message : \" {0} \"", msgInstance.message);
            ReturnCode status = helloWorldWriter.Write(msgInstance, handle);

            ErrorHandler.checkStatus(status, "MsgDataWriter.Write");

            try
            {
                Thread.Sleep(2);
            }
            catch (ArgumentOutOfRangeException ex)
            {
                Console.WriteLine(ex.ToString());
                Console.WriteLine(ex.StackTrace);
            }

            status = helloWorldWriter.UnregisterInstance(msgInstance, handle);

            // Clean up
            mgr.getPublisher().DeleteDataWriter(helloWorldWriter);
            mgr.deletePublisher();
            mgr.deleteTopic();
            mgr.deleteParticipant();
        }
Ejemplo n.º 20
0
        static void Main(string[] args)
        {
            String[] sSampleState = { "READ_SAMPLE_STATE", "NOT_READ_SAMPLE_STATE" };
            String[] sViewState = { "NEW_VIEW_STATE", "NOT_NEW_VIEW_STATE" };
            String[] sInstanceState = { "ALIVE_INSTANCE_STATE", "NOT_ALIVE_DISPOSED_INSTANCE_STATE", "NOT_ALIVE_NO_WRITERS_INSTANCE_STATE" };

            WriterState[] WriterStateList = null;
            SampleInfo[] ws_infoSeq = null;
            Msg[] msgList = null;
            SampleInfo[] infoSeq = null;

            //------------------ WriterState topic --------------------//
            DDSEntityManager mgrWs = new DDSEntityManager();

            // Create domain participant
            String partitionName = "Lifecycle";
            mgrWs.createParticipant(partitionName);

            // Create Type
            WriterStateTypeSupport wst = new WriterStateTypeSupport();
            mgrWs.registerType(wst);

            // Create Topic
            String wsTopicName = "WriterState_Msg";
            mgrWs.createTopic(wsTopicName, "Lifecycle");

            // Create Subscriber
            mgrWs.createSubscriber();

            // Create DataReader
            mgrWs.createReader("Lifecycle", false);

            IDataReader dwsReader = mgrWs.getReader();
            WriterStateDataReader WriterStateReader = dwsReader as WriterStateDataReader;
            ErrorHandler.checkHandle(WriterStateReader, "WriterStateDataReader narrow");

            //------------------ Msg topic --------------------//
            DDSEntityManager mgr = new DDSEntityManager();

            // Create domain participant
            mgr.createParticipant(partitionName);

            // Create type
            MsgTypeSupport mt = new MsgTypeSupport();
            mgr.registerType(mt);

            // Create Topic
            String topicName = "Lifecycle_Msg";
            mgr.createTopic(topicName, "Lifecycle");

            // Create Subscriber
            mgr.createSubscriber();
            mgr.createReader("Lifecycle", false);

            IDataReader dreader = mgr.getReader();
            MsgDataReader LifecycleReader = dreader as MsgDataReader;
            ErrorHandler.checkHandle(WriterStateReader, "MsgDataReader narrow");

            Console.WriteLine("=== [Subscriber] Ready ...");

            bool closed = false;
            bool writerStateChg = true;
            String sWriterState = "";
            ReturnCode status = ReturnCode.Error;

            while (!closed)
            {
                // WriterState topic
                status = WriterStateReader.Take(ref WriterStateList, ref ws_infoSeq, Length.Unlimited, SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any);
                ErrorHandler.checkStatus(status, "WriterStateReader.Take");

                for (int j = 0; j < WriterStateList.Length; j++)
                {
                    if (ws_infoSeq[j].ValidData)
                    {
                        Console.WriteLine("--- WriterState : {0}", WriterStateList[j].state);
                        closed = WriterStateList[j].state.Equals("STOPPING SUBSCRIBER");
                        writerStateChg = sWriterState.Equals(WriterStateList[j].state);
                        sWriterState = WriterStateList[j].state;
                        Thread.Sleep(200);
                    }
                }
                status = WriterStateReader.ReturnLoan(ref WriterStateList, ref ws_infoSeq);
                ErrorHandler.checkStatus(status, "WriterStateDataReader.ReturnLoan");
                Thread.Sleep(2);

                // Lifecycle Topic
                if (writerStateChg)
                {
                    status = LifecycleReader.Read(ref msgList, ref infoSeq, Length.Unlimited, SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any);
                    ErrorHandler.checkStatus(status, "MsgDataReader.Read");

                    for (int j = 0; j < msgList.Length; j++)
                    {
                        Console.WriteLine(" Message        : {0}", msgList[j].message);
                        Console.WriteLine(" valida data    : {0}", infoSeq[j].ValidData);
                        Console.WriteLine(" sample_state   : {0}", sSampleState[index((int)infoSeq[j].SampleState)]);
                        Console.WriteLine(" view_state     : {0}", sViewState[index((int)infoSeq[j].ViewState)]);
                        Console.WriteLine(" instance_state : {0}", sInstanceState[index((int)infoSeq[j].InstanceState)]);
                        Thread.Sleep(200);
                    }
                    status = LifecycleReader.ReturnLoan(ref msgList, ref infoSeq);
                    ErrorHandler.checkStatus(status, "MsgDataReader.ReturnLoan");
                    Thread.Sleep (2);
                    writerStateChg = false;
                }
            }

            // Clean-up Msg Entities
            mgr.getSubscriber().DeleteDataReader(LifecycleReader);
            mgr.deleteSubscriber();
            mgr.deleteTopic();
            mgr.deleteParticipant();

            // Clean-up WriterState Entities
            mgrWs.getSubscriber().DeleteDataReader(WriterStateReader);
            mgrWs.deleteSubscriber();
            mgrWs.deleteTopic();
            mgrWs.deleteParticipant();
        }
Ejemplo n.º 21
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("Insufficient number of arguments.");
                usage();
                Environment.Exit(-1);
            }
            else
            {
                DDSEntityManager mgr = new DDSEntityManager();
                String partitionName = "Durability Example";

                String durabilityKind = args[0];

                // create Domain Participant
                mgr.createParticipant(partitionName);

                // set the durability kind
                mgr.setDurabilityKind(durabilityKind);

                // create Type
                MsgTypeSupport msgTS = new MsgTypeSupport();
                mgr.registerType(msgTS);

                // create Topic
                mgr.createTopic("DurabilityData_Msg", "Durability");

                // create Subscriber
                mgr.createSubscriber();
                mgr.createReader("Durability", false);

                IDataReader dreader = mgr.getReader();
                MsgDataReader DurabilityDataReader = dreader as MsgDataReader;

                Msg[] msgSeq = null;
                DDS.SampleInfo[] infoSeq = null;
                Boolean terminate = false;
                ReturnCode status;
                Console.WriteLine("=== [Subscriber] Ready ...");
                while (!terminate)
                {
                    status = DurabilityDataReader.Take(ref msgSeq, ref infoSeq, Length.Unlimited, SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any);
                    ErrorHandler.checkStatus(status, "DataReader.Take");
                    for (int i = 0; i < msgSeq.Length; i++)
                    {
                        if (infoSeq[i].ValidData)
                        {
                            Console.WriteLine("{0} : {1}", msgSeq[i].id, msgSeq[i].content);
                            if (msgSeq[i].content.Equals("9"))
                            {
                                terminate = true;
                                break;
                            }
                        }
                    }
                    status = DurabilityDataReader.ReturnLoan(ref msgSeq, ref infoSeq);
                    ErrorHandler.checkStatus(status, "MsgDataReader.ReturnLoan");
                }
                // clean up
                mgr.getSubscriber().DeleteDataReader(DurabilityDataReader);
                mgr.deleteSubscriber();
                mgr.deleteTopic();
                mgr.deleteParticipant();
            }
        }
        static void Main(string[] args)
        {
            bool       autodispose_flag = false;
            String     writer_action;
            ReturnCode status = ReturnCode.Error;

            if (args.Length < 2)
            {
                usage();
            }
            else if ((!args[0].Equals("true")) &&
                     (!args[0].Equals("false")) &&
                     (!args[1].Equals("dispose")) &&
                     (!args[1].Equals("unregister")) &&
                     (!args[1].Equals("stoppub")))
            {
                usage();
            }
            else
            {
                autodispose_flag = Boolean.Parse(args[0]);
                writer_action    = args[1];

                // DDS Helper class instance for Msg Topic
                DDSEntityManager mgr = new DDSEntityManager("Lifecycle");

                // Create domain participant
                String partitionName = "Lifecycle example";
                mgr.createParticipant(partitionName);

                // Set AutoDispose Flag
                mgr.setAutoDispose(autodispose_flag);

                // Create type
                MsgTypeSupport mt = new MsgTypeSupport();
                mgr.registerType(mt);

                // Create Topic
                String topicName = "Lifecycle_Msg";
                mgr.createTopic(topicName);

                // Create Publisher
                mgr.createPublisher();

                // Create DataWriter(s)
                mgr.createWriter();

                // Publish Samples
                IDataWriter   dwriter                 = mgr.getWriter();
                MsgDataWriter LifecycleWriter         = dwriter as MsgDataWriter;
                IDataWriter   dwriter_stopper         = mgr.getWriterStopper();
                MsgDataWriter LifecycleWriter_stopper = dwriter_stopper as MsgDataWriter;

                if (writer_action.Equals("dispose"))
                {
                    // Send Msg (topic to monitor)
                    Msg msgInstance = new Msg();
                    msgInstance.userID       = 1;
                    msgInstance.message      = "Lifecycle_1";
                    msgInstance.writerStates = "SAMPLE_SENT -> INSTANCE_DISPOSED -> DATAWRITER_DELETED";
                    Console.WriteLine("=== [Publisher]  :");
                    Console.WriteLine("    userID   : {0}", msgInstance.userID);
                    Console.WriteLine("    Message  : \"{0}\"", msgInstance.message);
                    Console.WriteLine("    writerStates  : \"{0}\"", msgInstance.writerStates);
                    status = LifecycleWriter.Write(msgInstance, InstanceHandle.Nil);
                    ErrorHandler.checkStatus(status, "MsDataWriter.Write");
                    Thread.Sleep(500);
                    Console.WriteLine("=== [Publisher]  : SAMPLE_SENT");

                    // Dispose instance
                    status = LifecycleWriter.Dispose(msgInstance, InstanceHandle.Nil);
                    ErrorHandler.checkStatus(status, "MsDataWriter.Dispose");
                    Console.WriteLine("=== [Publisher]  : INSTANCE_DISPOSED");
                }
                else if (writer_action.Equals("unregister"))
                {
                    // Send Msg (topic to monitor)
                    Msg msgInstance = new Msg();
                    msgInstance.userID       = 2;
                    msgInstance.message      = "Lifecycle_2";
                    msgInstance.writerStates = "SAMPLE_SENT -> INSTANCE_UNREGISTERED -> DATAWRITER_DELETED";
                    Console.WriteLine("=== [Publisher]  :");
                    Console.WriteLine("    userID   : {0}", msgInstance.userID);
                    Console.WriteLine("    Message  : \"{0}\"", msgInstance.message);
                    Console.WriteLine("    writerStates  : \"{0}\"", msgInstance.writerStates);
                    status = LifecycleWriter.Write(msgInstance, InstanceHandle.Nil);
                    ErrorHandler.checkStatus(status, "MsDataWriter.Write");
                    Thread.Sleep(500);
                    Console.WriteLine("=== [Publisher]  : SAMPLE_SENT");

                    // Unregister instance : the auto_dispose_unregistered_instances flag
                    // is currently ignored and the instance is never disposed automatically
                    status = LifecycleWriter.UnregisterInstance(msgInstance, InstanceHandle.Nil);
                    ErrorHandler.checkStatus(status, "MsDataWriter.UnregisterInstance");
                    Console.WriteLine("=== [Publisher]  : INSTANCE_UNREGISTERED");
                }
                else if (writer_action.Equals("stoppub"))
                {
                    Msg msgInstance = new Msg();
                    msgInstance.userID       = 3;
                    msgInstance.message      = "Lifecycle_3";
                    msgInstance.writerStates = "SAMPLE_SENT -> DATAWRITER_DELETED";
                    Console.WriteLine("=== [Publisher]  :");
                    Console.WriteLine("    userID   : {0}", msgInstance.userID);
                    Console.WriteLine("    Message  : \"{0}\"", msgInstance.message);
                    Console.WriteLine("    writerStates  : \"{0}\"", msgInstance.writerStates);
                    status = LifecycleWriter.Write(msgInstance, InstanceHandle.Nil);
                    ErrorHandler.checkStatus(status, "MsDataWriter.Write");
                    Thread.Sleep(500);
                    Console.WriteLine("=== [Publisher]  : SAMPLE_SENT");
                }

                // Let the subscriber treat the previous writer state !!!
                Console.WriteLine("=== [Publisher] waiting 500ms to let the subscriber treat the previous write state ...");
                Thread.Sleep(500);

                // Remove the DataWriter
                mgr.deleteWriter(LifecycleWriter);
                Thread.Sleep(500);
                Console.WriteLine("=== [Publisher]  : DATAWRITER_DELETED");

                // Stop the subscriber
                Msg stopMsg = new Msg();
                stopMsg.userID       = 4;
                stopMsg.message      = "Lifecycle_4";
                stopMsg.writerStates = "STOPPING_SUBSCRIBER";
                Console.WriteLine("=== [Publisher]  :");
                Console.WriteLine("    userID   : {0}", stopMsg.userID);
                Console.WriteLine("    Message  : \"{0}\"", stopMsg.message);
                Console.WriteLine("    writerStates  : \"{0}\"", stopMsg.writerStates);
                status = LifecycleWriter_stopper.Write(stopMsg, InstanceHandle.Nil);
                ErrorHandler.checkStatus(status, "MsDataWriter.Write");
                Thread.Sleep(500);

                // Remove the DataWriter stopper
                mgr.deleteWriter(LifecycleWriter_stopper);

                // Remove the Publisher
                mgr.deletePublisher();

                // Remove the Topic
                mgr.deleteTopic();

                // Remove the participant
                mgr.deleteParticipant();
            }
        }
Ejemplo n.º 23
0
        static void Main(string[] args)
        {
            String[] sSampleState = { "READ_SAMPLE_STATE", "NOT_READ_SAMPLE_STATE" };
            String[] sViewState = { "NEW_VIEW_STATE", "NOT_NEW_VIEW_STATE" };
            String[] sInstanceState = { "ALIVE_INSTANCE_STATE", "NOT_ALIVE_DISPOSED_INSTANCE_STATE", "NOT_ALIVE_NO_WRITERS_INSTANCE_STATE" };

            bool closed = false;
            int nbIter = 1;
            int nbIterMax = 100;

            ReturnCode status = ReturnCode.Error;
            
            Msg[] msgList = null;
            SampleInfo[] infoSeq = null;
            
            DDSEntityManager mgr = new DDSEntityManager("Lifecycle");

            // Create domain participant
            String partitionName = "Lifecycle example";
            mgr.createParticipant(partitionName);          

            // Create type
            MsgTypeSupport mt = new MsgTypeSupport();
            mgr.registerType(mt);

            // Create Topic
            String topicName = "Lifecycle_Msg";
            mgr.createTopic(topicName);

            // Create Subscriber
            mgr.createSubscriber();
            mgr.createReader(false);

            IDataReader dreader = mgr.getReader();
            MsgDataReader LifecycleReader = dreader as MsgDataReader;
            ErrorHandler.checkHandle(LifecycleReader, "MsgDataReader narrow");

            Console.WriteLine("=== [Subscriber] Ready ...");

            while (!closed && (nbIter < nbIterMax))
            {
                status = LifecycleReader.Read(ref msgList, ref infoSeq, Length.Unlimited, SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any);
                ErrorHandler.checkStatus(status, "MsgDataReader.Read");

                for (int j = 0; j < msgList.Length; j++)
                {
                    Console.WriteLine(" Message        : {0}", msgList[j].message);
                    Console.WriteLine(" writerStates   : {0}", msgList[j].writerStates);
                    Console.WriteLine(" valida data    : {0}", infoSeq[j].ValidData);
                    string str = "sample_state:" + sSampleState[index((int)infoSeq[j].SampleState)] + "-view_state:" + sViewState[index((int)infoSeq[j].ViewState)] + "-instance_state:" + sInstanceState[index((int)infoSeq[j].InstanceState)];
                    Console.WriteLine(str);
                    Thread.Sleep(200);
                    closed = msgList[j].writerStates.Equals("STOPPING_SUBSCRIBER");
                }
                status = LifecycleReader.ReturnLoan(ref msgList, ref infoSeq);
                ErrorHandler.checkStatus(status, "MsgDataReader.ReturnLoan");
                Thread.Sleep(20);
                nbIter++;
            }

            Console.WriteLine("=== [Subscriber] stopping after {0} iterations - closed={1}", nbIter, closed.ToString());
            if (nbIter == nbIterMax)
                Console.WriteLine("*** Error : max {0} iterations reached", nbIterMax);

            // Clean-up         
            mgr.getSubscriber().DeleteDataReader(LifecycleReader);
            mgr.deleteSubscriber();
            mgr.deleteTopic();
            mgr.deleteParticipant();
        }
Ejemplo n.º 24
0
        static void Main(string[] args)
        {
            if(args.Length != 3)
            {
                Console.WriteLine("Insufficient number of arguments.");
                usage();
                Environment.Exit(-1);
            }
            else
            {
                String durabilityKind = args[0];
                Boolean autodisposeFlag = Boolean.Parse(args[1].ToString());
                Boolean automaticFlag = Boolean.Parse(args[2].ToString());

                DDSEntityManager mgr = new DDSEntityManager();
                String partitionName = "Durability example";

                // Set the Durability Kind
                mgr.setDurabilityKind(durabilityKind);

                // Set the auto dispose flag
                mgr.setAutoDispose(autodisposeFlag);

                Thread.Sleep(1000);

                // create Domain Participant
                mgr.createParticipant(partitionName);

                // create Type
                MsgTypeSupport stkTS = new MsgTypeSupport();
                mgr.registerType(stkTS);

                // create Topic
                mgr.createTopic("DurabilityData_Msg", "Durability");

                // create Publisher
                mgr.createPublisher();

                // create DataWriter
                mgr.createWriter();

                // Publish Events
                IDataWriter dwriter = mgr.getWriter();
                MsgDataWriter msgWriter = dwriter as MsgDataWriter;

                Msg [] DurabilityDataMsg = new Msg[10];
                InstanceHandle [] handle = new InstanceHandle [10];

                ReturnCode status = ReturnCode.Error;

                for (int x = 0; x < 10; x++)
                {
                    DurabilityDataMsg[x] = new Msg();
                    DurabilityDataMsg[x].id = x;
                    DurabilityDataMsg[x].content = x.ToString();

                    Console.WriteLine("Storing {0}", DurabilityDataMsg[x].content);

                    handle[x] = msgWriter.RegisterInstance(DurabilityDataMsg[x]);
                    ErrorHandler.checkHandle(handle[x], "DataWriter.RegisterInstance");
                    status = msgWriter.Write(DurabilityDataMsg[x], handle[x]);
                    ErrorHandler.checkStatus(status, "DataWriter.Write");
                }

                if (!automaticFlag)
                {
                    char c = (char)0;
                    Console.WriteLine("Enter E to exit");
                    while (c != 'E')
                    {
                        c = (char)Console.Read();
                    }
                }
                else
                {
                    Console.WriteLine("=== sleeping 10s...");
                    Thread.Sleep(10000);
                }

                // Clean up
                status = mgr.getPublisher().DeleteDataWriter(msgWriter);
                ErrorHandler.checkStatus(status, "Publisher.DeleteDatWriter");
                mgr.deletePublisher();
                mgr.deleteTopic();
                mgr.deleteParticipant();
            }
        }