public PeerId[] GetConnectedPeers() { #if !UNITY_EDITOR || UNITY_EDITOR_OSX || UNITY_EDITOR_OVERRIDE IntPtr nativePeersArrayPtr = IntPtr.Zero; try { int nativePeerCount; IntPtr error; bool success = NativeMethods.UMCMediatorFacade.GetConnectedPeers( -1, out nativePeersArrayPtr, out nativePeerCount, out error); AssertNativeError(success, error); if (nativePeerCount == 0) { return(kEmptyPeerIdArray); } PeerId[] peers = MarshalUtility.MarshalNativeArray(nativePeersArrayPtr, nativePeerCount, ptr => new PeerId(ptr)); return(peers); } finally { NativeMethods.free(nativePeersArrayPtr); } #else return(kEmptyPeerIdArray); #endif }
public int GetConnectedPeers(PeerId[] results) { if (results == null) { throw new ArgumentNullException("results"); } #if !UNITY_EDITOR || UNITY_EDITOR_OSX || UNITY_EDITOR_OVERRIDE IntPtr nativePeersArrayPtr = IntPtr.Zero; try { int nativePeerCount; IntPtr error; bool success = NativeMethods.UMCMediatorFacade.GetConnectedPeers( results.Length, out nativePeersArrayPtr, out nativePeerCount, out error); AssertNativeError(success, error); if (nativePeerCount == 0) { return(0); } MarshalUtility.MarshalNativeArray(nativePeersArrayPtr, nativePeerCount, results, ptr => new PeerId(ptr)); return(nativePeerCount); } finally { NativeMethods.free(nativePeersArrayPtr); } #else return(0); #endif }