Exemple #1
0
        public NatNetServerDiscovery(IEnumerable <string> knownServerAddresses = null)
        {
            m_nativeCallbackHandler = ServerDiscoveredNativeThunk;

            if (knownServerAddresses == null)
            {
                NatNetError result = NatNetLib.NativeMethods.NatNet_CreateAsyncServerDiscovery(out m_discoveryHandle, m_nativeCallbackHandler);
                NatNetException.ThrowIfNotOK(result, "NatNet_CreateAsyncServerDiscovery failed.");
                if (m_discoveryHandle == IntPtr.Zero)
                {
                    throw new NatNetException("NatNet_CreateAsyncServerDiscovery returned null handle.");
                }
            }
            else
            {
                NatNetError result = NatNetLib.NativeMethods.NatNet_CreateAsyncServerDiscovery(out m_discoveryHandle, m_nativeCallbackHandler, IntPtr.Zero, false);
                NatNetException.ThrowIfNotOK(result, "NatNet_CreateAsyncServerDiscovery failed.");

                foreach (string serverAddress in knownServerAddresses)
                {
                    result = NatNetLib.NativeMethods.NatNet_AddDirectServerToAsyncDiscovery(m_discoveryHandle, serverAddress);
                    NatNetException.ThrowIfNotOK(result, "NatNet_AddDirectServerToAsyncDiscovery failed.");
                }

                result = NatNetLib.NativeMethods.NatNet_StartAsyncDiscovery(m_discoveryHandle);
                NatNetException.ThrowIfNotOK(result, "NatNet_StartAsyncDiscovery failed.");
            }
        }
Exemple #2
0
 public static extern NatNetError NatNet_CreateAsyncServerDiscovery(out IntPtr discoveryHandle, NatNetServerDiscoveryCallback pfnCallback, IntPtr pUserContext = default(IntPtr), [MarshalAs(UnmanagedType.U1)] bool startImmediately = true);