private static Antilatency.DeviceNetwork.NodeHandle WaitForCompatibleNode( Antilatency.Alt.Tracking.ITrackingCotaskConstructor cotaskConstructor, Antilatency.DeviceNetwork.INetwork network) { uint prevUpdateId = 0; while (true) { uint updateId = network.getUpdateId(); if (updateId == prevUpdateId) { Thread.Yield(); continue; } Console.WriteLine($"Network ID changed: {prevUpdateId} -> {updateId}"); var node = cotaskConstructor .findSupportedNodes(network) .FirstOrDefault( n => network.nodeGetStatus(n) == Antilatency.DeviceNetwork.NodeStatus.Idle); if (node != Antilatency.DeviceNetwork.NodeHandle.Null) { return(node); } prevUpdateId = updateId; } }
public Antilatency.RadioMetrics.ICotask startTask(Antilatency.DeviceNetwork.INetwork network, Antilatency.DeviceNetwork.NodeHandle node) { Antilatency.RadioMetrics.ICotask result; System.IntPtr resultMarshaler; var networkMarshaler = Antilatency.InterfaceContract.Details.InterfaceMarshaler.ManagedToNative <Antilatency.DeviceNetwork.INetwork>(network); HandleExceptionCode(_VMT.startTask(_object, networkMarshaler, node, out resultMarshaler)); result = (resultMarshaler == System.IntPtr.Zero) ? null : new Antilatency.RadioMetrics.Details.ICotaskWrapper(resultMarshaler); return(result); }
public Antilatency.Alt.Tracking.ITrackingCotask startTask(Antilatency.DeviceNetwork.INetwork network, Antilatency.DeviceNetwork.NodeHandle node, Antilatency.Alt.Tracking.IEnvironment environment) { Antilatency.Alt.Tracking.ITrackingCotask result; System.IntPtr resultMarshaler; var networkMarshaler = Antilatency.InterfaceContract.Details.InterfaceMarshaler.ManagedToNative <Antilatency.DeviceNetwork.INetwork>(network); var environmentMarshaler = Antilatency.InterfaceContract.Details.InterfaceMarshaler.ManagedToNative <Antilatency.Alt.Tracking.IEnvironment>(environment); HandleExceptionCode(_VMT.startTask(_object, networkMarshaler, node, environmentMarshaler, out resultMarshaler)); result = (resultMarshaler == System.IntPtr.Zero) ? null : new Antilatency.Alt.Tracking.Details.ITrackingCotaskWrapper(resultMarshaler); return(result); }