Пример #1
0
        CopyInstanceHandle(IntPtr instance, IntPtr arg)
        {
            bool                   result = true;
            InstanceHandle         ghandle;
            uint                   length;
            GCHandle               tmpGCHandleData = GCHandle.FromIntPtr(arg);
            InstanceHandleUserData a = tmpGCHandleData.Target as InstanceHandleUserData;

            if (a.Index == 0)
            {
                length = Kernel.DataReaderInstance.GetNotEmptyInstanceCount(instance);
                if (a.Seq == null || length != a.Seq.Length)
                {
                    a.Seq = new InstanceHandle[length]; /* potentially reallocate */
                }
            }

            ghandle = Kernel.InstanceHandle.New(instance);
            if (a.Index < a.Seq.Length)
            {
                a.Seq[a.Index++] = ghandle;
            }
            else
            {
                /* error index out of bounds */
            }

            return(result);
        }
Пример #2
0
        public ReturnCode GetDiscoveredTopics(ref InstanceHandle[] topicHandles)
        {
            ReturnCode             result;
            InstanceHandleUserData a  = new InstanceHandleUserData(0, topicHandles);
            GCHandle iHUserDataHandle = GCHandle.Alloc(a, GCHandleType.Normal);

            result = (ReturnCode)Gapi.DomainParticipant.get_discovered_topics(
                GapiPeer,
                CopyInstanceHandleAttr,
                GCHandle.ToIntPtr(iHUserDataHandle));

            topicHandles = a.Seq;
            iHUserDataHandle.Free();

            return(result);
        }
Пример #3
0
        public ReturnCode GetDiscoveredTopics(ref InstanceHandle[] topicHandles)
        {
            ReturnCode result;
            InstanceHandleUserData a = new InstanceHandleUserData(0, topicHandles);
            GCHandle iHUserDataHandle = GCHandle.Alloc(a, GCHandleType.Normal);

            result = (ReturnCode)  Gapi.DomainParticipant.get_discovered_topics(
                    GapiPeer,
                    CopyInstanceHandleAttr,
                    GCHandle.ToIntPtr(iHUserDataHandle));

            topicHandles = a.Seq;
            iHUserDataHandle.Free();

            return result;
        }