예제 #1
0
        private string getExistingProfileName(profiles profile)
        {
            switch (profile)
            {
            case profiles.one:
                if (profileOneExists)
                {
                    return(profileOne);
                }
                else
                {
                    return(null);
                }

            case profiles.two:
                if (profileTwoExists)
                {
                    return(profileTwo);
                }
                else
                {
                    return(null);
                }

            default:
                if (profileThreeExists)
                {
                    return(profileThree);
                }
                else
                {
                    return(null);
                }
            }
        }
예제 #2
0
        public String getProfileName(profiles profile)
        {
            switch (profile)
            {
            case profiles.one: if (profileOneExists)
                {
                    return(profileOne);
                }
                else
                {
                    return("New...");
                }

            case profiles.two: if (profileTwoExists)
                {
                    return(profileTwo);
                }
                else
                {
                    return("New...");
                }

            default: if (profileThreeExists)
                {
                    return(profileThree);
                }
                else
                {
                    return("New...");
                }
            }
        }
예제 #3
0
 public ManageProfiles(String profileName, profiles profile)
 {
     if (File.Exists(getProfileName(profile)))
     {
         File.Delete("Assets/" + getProfileName(profile));
     }
     setProfile(profileName, profile);
 }
예제 #4
0
        public bool ProfileExists(profiles profile)
        {
            switch (profile)
            {
            case profiles.one: return(profileOneExists);

            case profiles.two: return(profileTwoExists);

            case profiles.three: return(profileThreeExists);
            }
            return(false);
        }
예제 #5
0
        public void setProfile(String newName, profiles profile)
        {
            ProfileConstants.activeProfile = profile;
            if (File.Exists("Assets/" + getProfileName(profile)))
            {
                File.Delete("Assets/" + getProfileName(profile));
            }
            switch (profile)
            {
            case profiles.one: profileOne = newName;
                profileOneExists          = true;
                break;

            case profiles.two: profileTwo = newName;
                profileTwoExists          = true;
                break;

            case profiles.three: profileThree = newName;
                profileThreeExists            = true;
                break;
            }
            saveManageProfiles();
        }
예제 #6
0
        public void deleteProfile(profiles profile)
        {
            if (File.Exists("Assets/" + getProfileName(profile)))
            {
                File.Delete("Assets/" + getProfileName(profile));
            }
            switch (profile)
            {
            case profiles.one:
                profileOne       = "";
                profileOneExists = false;
                break;

            case profiles.two:
                profileTwo       = "";
                profileTwoExists = false;
                break;

            case profiles.three:
                profileThree       = "";
                profileThreeExists = false;
                break;
            }
        }
예제 #7
0
    static void publish(int domain_id, int sample_count)
    {
        /* There are several different approaches for loading QoS profiles from
         * XML files (see Configuring QoS with XML chapter in the RTI Connext
         * Core Libraries and Utilities User's Manual). In this example we
         * illustrate two of them:
         *
         * 1) Creating a file named USER_QOS_PROFILES.xml, which is loaded,
         * automatically by the DomainParticipantFactory. In this case, the file
         * defines a QoS profile named volatile_profile that configures reliable,
         * volatile DataWriters and DataReaders.
         *
         * 2) Adding XML documents to the DomainParticipantFactory using its
         * Profile QoSPolicy (DDS Extension). In this case, we add
         * my_custom_qos_profiles.xml to the url_profile sequence, which stores
         * the URLs of all the XML documents with QoS policies that are loaded
         * by the DomainParticipantFactory aside from the ones that are
         * automatically loaded.
         * my_custom_qos_profiles.xml defines a QoS profile named
         * transient_local_profile that configures reliable, transient local
         * DataWriters and DataReaders.
         */

        /* To load my_custom_qos_profiles.xml, as explained above, we need to
         * modify the  DDSTheParticipantFactory Profile QoSPolicy */

        DDS.DomainParticipantFactoryQos factory_qos =
            new DDS.DomainParticipantFactoryQos();
        DDS.DomainParticipantFactory.get_instance().get_qos(factory_qos);

        /* We are only going to add one XML file to the url_profile sequence,
         * so we ensure a length of 1,1. */
        factory_qos.profile.url_profile.ensure_length(1, 1);

        /* The XML file will be loaded from the working directory. That means,
         * you need to run the example like this:
         * ./objs/<architecture>/profiles_publisher
         * (see README.txt for more information on how to run the example).
         *
         * Note that you can specify the absolute path of the XML QoS file to
         * avoid this problem.
         */

        factory_qos.profile.url_profile.set_at(0,
                                               "file://my_custom_qos_profiles.xml");
        DDS.DomainParticipantFactory.get_instance().set_qos(factory_qos);


        // --- Create participant --- //

        /* Our default Qos profile, volatile_profile, sets the participant name.
         * This is the only participant_qos policy that we change in our
         * example. As this is done in the default QoS profile, we don't need
         * to specify its name, so we can create the participant using the
         * create_participant() method rather than using
         * create_participant_with_profile().  */
        DDS.DomainParticipant participant =
            DDS.DomainParticipantFactory.get_instance().create_participant(
                domain_id,
                DDS.DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT,
                null /* listener */,
                DDS.StatusMask.STATUS_MASK_NONE);
        if (participant == null)
        {
            shutdown(participant);
            throw new ApplicationException("create_participant error");
        }

        // --- Create publisher --- //

        /* We haven't changed the publisher_qos in any of QoS profiles we use in
         * this example, so we can just use the create_publisher() method. If
         * you want to load an specific profile in which you may have changed
         * the publisher_qos, use the create_publisher_with_profile() method. */
        DDS.Publisher publisher = participant.create_publisher(
            DDS.DomainParticipant.PUBLISHER_QOS_DEFAULT,
            null /* listener */,
            DDS.StatusMask.STATUS_MASK_NONE);
        if (publisher == null)
        {
            shutdown(participant);
            throw new ApplicationException("create_publisher error");
        }

        // --- Create topic --- //

        /* Register type before creating topic */
        System.String type_name = profilesTypeSupport.get_type_name();
        try {
            profilesTypeSupport.register_type(
                participant, type_name);
        }
        catch (DDS.Exception e) {
            Console.WriteLine("register_type error {0}", e);
            shutdown(participant);
            throw e;
        }

        /* We haven't changed the topic_qos in any of QoS profiles we use in
         * this example, so we can just use the create_topic() method. If you
         * want to load an specific profile in which you may have changed the
         * topic_qos, use the create_topic_with_profile() method. */
        DDS.Topic topic = participant.create_topic(
            "Example profiles",
            type_name,
            DDS.DomainParticipant.TOPIC_QOS_DEFAULT,
            null /* listener */,
            DDS.StatusMask.STATUS_MASK_NONE);
        if (topic == null)
        {
            shutdown(participant);
            throw new ApplicationException("create_topic error");
        }

        // --- Create writers --- //

        /* Volatile writer -- As volatile_profile is the default qos profile
        * we don't need to specify the profile we are going to use, we can
        * just call create_datawriter passing DDS_DATAWRITER_QOS_DEFAULT. */
        DDS.DataWriter writer_volatile = publisher.create_datawriter(
            topic,
            DDS.Publisher.DATAWRITER_QOS_DEFAULT,
            null /* listener */,
            DDS.StatusMask.STATUS_MASK_NONE);
        if (writer_volatile == null)
        {
            shutdown(participant);
            throw new ApplicationException("create_datawriter error");
        }

        /* Transient Local writer -- In this case we use
         * create_datawriter_with_profile, because we have to use a profile
         * other than the default one. This profile has been defined in
         * my_custom_qos_profiles.xml, but since we already loaded the XML file
         * we don't need to specify anything else. */

        DDS.DataWriter writer_transient_local = publisher.create_datawriter(
            topic,
            DDS.Publisher.DATAWRITER_QOS_DEFAULT,
            null /* listener */,
            DDS.StatusMask.STATUS_MASK_NONE);
        if (writer_transient_local == null)
        {
            shutdown(participant);
            throw new ApplicationException("create_datawriter error");
        }

        profilesDataWriter profiles_writer_volatile =
            (profilesDataWriter)writer_volatile;

        profilesDataWriter profiles_writer_transient_local =
            (profilesDataWriter)writer_transient_local;

        // --- Write --- //

        /* Create data sample for writing */
        profiles instance = profilesTypeSupport.create_data();

        if (instance == null)
        {
            shutdown(participant);
            throw new ApplicationException(
                      "profilesTypeSupport.create_data error");
        }

        /* For a data type that has a key, if the same instance is going to be
         * written multiple times, initialize the key here
         * and register the keyed instance prior to writing */
        DDS.InstanceHandle_t instance_handle = DDS.InstanceHandle_t.HANDLE_NIL;

        /*
         * instance_handle = profiles_writer.register_instance(instance);
         */

        /* Main loop */
        const System.Int32 send_period = 1000; // milliseconds

        for (int count = 0;
             (sample_count == 0) || (count < sample_count);
             ++count)
        {
            Console.WriteLine("Writing profiles, count {0}", count);

            /* Modify the data to be sent here */
            instance.profile_name = "volatile_profile";
            instance.x            = count;

            Console.WriteLine("Writing profile_name = " + instance.profile_name
                              + "\t x = " + instance.x);
            try {
                profiles_writer_volatile.write(instance, ref instance_handle);
            }
            catch (DDS.Exception e) {
                Console.WriteLine("write volatile error {0}", e);
            }

            instance.profile_name = "transient_local_profile";
            instance.x            = count;

            Console.WriteLine("Writing profile_name = " + instance.profile_name
                              + "\t x = " + instance.x + "\n");

            try
            {
                profiles_writer_transient_local.write(instance,
                                                      ref instance_handle);
            }
            catch (DDS.Exception e)
            {
                Console.WriteLine("write transient local error {0}", e);
            }

            System.Threading.Thread.Sleep(send_period);
        }

        /*
         * try {
         *  profiles_writer.unregister_instance(
         *      instance, ref instance_handle);
         * } catch(DDS.Exception e) {
         *  Console.WriteLine("unregister instance error: {0}", e);
         * }
         */

        // --- Shutdown --- //

        /* Delete data sample */
        try {
            profilesTypeSupport.delete_data(instance);
        } catch (DDS.Exception e) {
            Console.WriteLine(
                "profilesTypeSupport.delete_data error: {0}", e);
        }

        /* Delete all entities */
        shutdown(participant);
    }
예제 #8
0
 var(profiles, err) = ParseProfiles(profile);
예제 #9
0
 set => this.RaiseAndSetIfChanged(ref profiles, value);
예제 #10
0
    static void publish(int domain_id, int sample_count)
    {
        // --- Create participant --- //

        /*
         * This example uses a built-in QoS profile to enable monitoring on the
         * DomainParticipant.  The code below loads the XML QoS from the
         * USER_QOS_PROFILES.xml file, which is inheriting from the
         * "BuiltinQoSLib::Generic.Monitoring.Common" profile to enable monitoring.
         *
         * !!!! NOTE: This example will only work when dynamically linking !!!
         * In Visual Studio, change the target to "Debug DLL" or "Release DLL"
         * to build.
         */

        /* To customize participant QoS, use
         * the configuration file USER_QOS_PROFILES.xml */
        DDS.DomainParticipant participant =
            DDS.DomainParticipantFactory.get_instance().create_participant(
                domain_id,
                DDS.DomainParticipantFactory.PARTICIPANT_QOS_DEFAULT,
                null,
                DDS.StatusMask.STATUS_MASK_NONE);

        /* If you want to change the DomainParticipant's QoS
         * programmatically rather than using the XML file, you will need
         * to add the following lines to your code and comment out the
         * create_participant call above.
         *
         * This example uses a built-in QoS profile to enable
         * monitoring on the DomainParticipant.
         */
        /*
         *  DDS.DomainParticipant participant = DDS.DomainParticipantFactory.get_instance().
         *  create_participant_with_profile(domain_id, "BuiltinQosLib",
         *  "Generic.Monitoring.Common", null,
         *  DDS.StatusMask.STATUS_MASK_NONE);
         */
        if (participant == null)
        {
            shutdown(participant);
            throw new ApplicationException("create_participant error");
        }

        // --- Create publisher --- //

        /* To customize publisher QoS, use
         * the configuration file USER_QOS_PROFILES.xml */
        DDS.Publisher publisher = participant.create_publisher(
            DDS.DomainParticipant.PUBLISHER_QOS_DEFAULT,
            null /* listener */,
            DDS.StatusMask.STATUS_MASK_NONE);
        if (publisher == null)
        {
            shutdown(participant);
            throw new ApplicationException("create_publisher error");
        }

        // --- Create topic --- //

        /* Register type before creating topic */
        System.String type_name = profilesTypeSupport.get_type_name();
        try {
            profilesTypeSupport.register_type(
                participant, type_name);
        }
        catch (DDS.Exception e) {
            Console.WriteLine("register_type error {0}", e);
            shutdown(participant);
            throw e;
        }

        /* To customize topic QoS, use
         * the configuration file USER_QOS_PROFILES.xml */
        DDS.Topic topic = participant.create_topic(
            "Example profiles",
            type_name,
            DDS.DomainParticipant.TOPIC_QOS_DEFAULT,
            null /* listener */,
            DDS.StatusMask.STATUS_MASK_NONE);
        if (topic == null)
        {
            shutdown(participant);
            throw new ApplicationException("create_topic error");
        }

        // --- Create writer --- //

        /* To customize data writer QoS, use
         * the configuration file USER_QOS_PROFILES.xml */
        DDS.DataWriter writer = publisher.create_datawriter(
            topic,
            DDS.Publisher.DATAWRITER_QOS_DEFAULT,
            null,
            DDS.StatusMask.STATUS_MASK_NONE);

        /* If you want to change the DataWriter's QoS programatically rather
         * than using the XML file, you will need to add the following lines to
         * your code and comment out the create_datawriter call above.
         *
         * This example uses a built-in QoS profile to tune the QoS for
         * reliable streaming data. */
        /*DDS.DataWriter writer = publisher.create_datawriter_with_profile(
         *  topic, DDS.BuiltinQosProfiles.BUILTIN_QOS_LIB_EXP,
         *  DDS.BuiltinQosProfiles.PROFILE_PATTERN_RELIABLE_STREAMING,
         *  null, DDS.StatusMask.STATUS_MASK_NONE);
         */
        if (writer == null)
        {
            shutdown(participant);
            throw new ApplicationException("create_datawriter error");
        }
        profilesDataWriter profiles_writer =
            (profilesDataWriter)writer;

        // --- Write --- //

        /* Create data sample for writing */
        profiles instance = profilesTypeSupport.create_data();

        if (instance == null)
        {
            shutdown(participant);
            throw new ApplicationException(
                      "profilesTypeSupport.create_data error");
        }

        /* For a data type that has a key, if the same instance is going to be
         * written multiple times, initialize the key here
         * and register the keyed instance prior to writing */
        DDS.InstanceHandle_t instance_handle = DDS.InstanceHandle_t.HANDLE_NIL;

        /*
         * instance_handle = profiles_writer.register_instance(instance);
         */

        /* Main loop */
        const System.Int32 send_period = 1000; // milliseconds

        for (int count = 0;
             (sample_count == 0) || (count < sample_count);
             ++count)
        {
            Console.WriteLine("Writing profiles, count {0}", count);

            /* Modify the data to be sent here */

            try {
                profiles_writer.write(instance, ref instance_handle);
            }
            catch (DDS.Exception e) {
                Console.WriteLine("write error {0}", e);
            }

            System.Threading.Thread.Sleep(send_period);
        }

        /*
         * try {
         *  profiles_writer.unregister_instance(
         *      instance, ref instance_handle);
         * } catch(DDS.Exception e) {
         *  Console.WriteLine("unregister instance error: {0}", e);
         * }
         */

        // --- Shutdown --- //

        /* Delete data sample */
        try {
            profilesTypeSupport.delete_data(instance);
        } catch (DDS.Exception e) {
            Console.WriteLine(
                "profilesTypeSupport.delete_data error: {0}", e);
        }

        /* Delete all entities */
        shutdown(participant);
    }