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); }
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); }
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; }