static void TrampolineScheduleHandler (IntPtr block) { var del = BlockLiteral.GetTarget<Action> (block); if (del != null) { del (); } }
static void TrampolineReceiveCompletion(IntPtr block, IntPtr dispatchDataPtr, IntPtr contentContext, bool isComplete, IntPtr error) { var del = BlockLiteral.GetTarget <NWConnectionReceiveCompletion> (block); if (del != null) { DispatchData?dispatchData = null, dataCopy = null; IntPtr bufferAddress = IntPtr.Zero; nuint bufferSize = 0; if (dispatchDataPtr != IntPtr.Zero) { dispatchData = new DispatchData(dispatchDataPtr, owns: false); dataCopy = dispatchData.CreateMap(out bufferAddress, out bufferSize); } del(bufferAddress, bufferSize, contentContext == IntPtr.Zero ? null : new NWContentContext(contentContext, owns: false), isComplete, error == IntPtr.Zero ? null : new NWError(error, owns: false)); if (dispatchData != null) { dataCopy?.Dispose(); dispatchData?.Dispose(); } } }
static void TrampolineSignatureAlgorithmsForPeer (IntPtr block, ushort signatureAlgorithm) { var del = BlockLiteral.GetTarget<Action<ushort>> (block); if (del != null) { del (signatureAlgorithm); } }
unsafe static bool TrampolineApplyHandler(IntPtr block, string key, NWTxtRecordFindKey found, IntPtr value, nuint valueLen) { #if XAMCORE_4_0 var del = BlockLiteral.GetTarget <NWTxtRecordApplyDelegate> (block); #else var del = BlockLiteral.GetTarget <MulticastDelegate> (block); #endif if (del == null) { return(false); } var mValue = new ReadOnlySpan <byte> ((void *)value, (int)valueLen); #if XAMCORE_4_0 return(del(key, found, mValue)); #else if (del is NWTxtRecordApplyDelegate apply) { apply(key, found, mValue); return(true); } if (del is NWTxtRecordApplyDelegate2 apply2) { return(apply2(key, found, mValue)); } return(false); #endif }
static void TrampolineReceiveCompletionData(IntPtr block, IntPtr dispatchDataPtr, IntPtr contentContext, bool isComplete, IntPtr error) { var del = BlockLiteral.GetTarget <NWConnectionReceiveDispatchDataCompletion> (block); if (del != null) { DispatchData dispatchData = null; IntPtr bufferAddress = IntPtr.Zero; if (dispatchDataPtr != IntPtr.Zero) { dispatchData = new DispatchData(dispatchDataPtr, owns: false); } del(dispatchData, contentContext == IntPtr.Zero ? null : new NWContentContext(contentContext, owns: false), isComplete, error == IntPtr.Zero ? null : new NWError(error, owns: false)); if (dispatchData != null) { dispatchData.Dispose(); } } }
static void TrampolineReceiveCompletionReadOnlyData(IntPtr block, IntPtr dispatchDataPtr, IntPtr contentContext, bool isComplete, IntPtr error) { var del = BlockLiteral.GetTarget <NWConnectionReceiveReadOnlySpanCompletion> (block); if (del != null) { DispatchData dispatchData = null, dataCopy = null; IntPtr bufferAddress = IntPtr.Zero; nuint bufferSize = 0; if (dispatchDataPtr != IntPtr.Zero) { dispatchData = new DispatchData(dispatchDataPtr, owns: false); dataCopy = dispatchData.CreateMap(out bufferAddress, out bufferSize); } unsafe { var spanData = new ReadOnlySpan <byte> ((void *)bufferAddress, (int)bufferSize); del(spanData, contentContext == IntPtr.Zero ? null : new NWContentContext(contentContext, owns: false), isComplete, error == IntPtr.Zero ? null : new NWError(error, owns: false)); } if (dispatchData != null) { dataCopy.Dispose(); dispatchData.Dispose(); } } }
static void TrampolineDistinguishedNamesForPeer (IntPtr block, IntPtr data) { var del = BlockLiteral.GetTarget<Action<DispatchData>> (block); if (del != null) { var dispatchData = new DispatchData (data, owns: false); del (dispatchData); } }
static void TrampolineCertificateChainForPeer (IntPtr block, IntPtr certificate) { var del = BlockLiteral.GetTarget<Action<SecCertificate>> (block); if (del != null) { var secCertificate = new SecCertificate (certificate, owns: false); del (secCertificate); } }
static void TrampolineWakeupHandler (IntPtr block, OS_nw_framer framer) { var del = BlockLiteral.GetTarget<Action<NWFramer>> (block); if (del != null) { var nwFramer = new NWFramer (framer, owns: true); del (nwFramer); } }
static void ScheduleBlockWrapper(IntPtr blockptr, IntPtr callback) { var completion = (CompletionHandler)((Result result) => { InvokeNativeCompletionBlock(callback, (int)result); }); BlockLiteral.GetTarget <ScheduleBlock>(blockptr)?.Invoke(completion); }
static void TrampolineEnumerator(IntPtr block, IntPtr iface) { var del = BlockLiteral.GetTarget <Action <NWInterface> > (block); if (del != null) { del(new NWInterface(iface, owns: false)); } }
static void TrampolineMonitorCanceled(IntPtr block) { var del = BlockLiteral.GetTarget <Action> (block); if (del != null) { del(); } }
static void TrampolineOutputHandler (IntPtr block, OS_nw_framer framer, OS_nw_protocol_metadata message, nuint message_length, bool is_complete) { var del = BlockLiteral.GetTarget<Action<NWFramer, NWProtocolMetadata, nuint, bool>> (block); if (del != null) { var nwFramer = new NWFramer (framer, owns: true); var nwProtocolMetadata = new NWFramerMessage (message, owns: true); del (nwFramer, nwProtocolMetadata, message_length, is_complete); } }
static void TrampolineAccessPreSharedKeys(IntPtr block, IntPtr psk, IntPtr psk_identity) { var del = BlockLiteral.GetTarget <Action <DispatchData, DispatchData> > (block); if (del != null) { del(CreateDispatchData(psk), CreateDispatchData(psk_identity)); } }
static nuint TrampolineInputHandler (IntPtr block, OS_nw_framer framer) { var del = BlockLiteral.GetTarget<NWFramerInputDelegate> (block); if (del != null) { var nwFramer = new NWFramer (framer, owns: true); return del (nwFramer); } return 0; }
static void TrampolineEnumerateSubprotocolHandler(IntPtr block, string subprotocol) { var del = BlockLiteral.GetTarget <Action <string> > (block); if (del != null) { del(subprotocol); } }
static void TrampolineEnumerateHeaderHandler(IntPtr block, string header, string value) { var del = BlockLiteral.GetTarget <Action <string, string> > (block); if (del != null) { del(header, value); } }
static void TrampolineAccessCertificates(IntPtr block, IntPtr cert) { var del = BlockLiteral.GetTarget <Action <SecCertificate2> > (block); if (del != null) { del(new SecCertificate2(cert, false)); } }
static void TrampolineAction(IntPtr blockPtr) { var del = BlockLiteral.GetTarget <Action> (blockPtr); if (del is not null) { del(); } }
static unsafe void TrampolineRequestFonts(IntPtr block, /* CFArray */ IntPtr fontDescriptors) { var del = BlockLiteral.GetTarget <CTFontManagerRequestFontsHandler> (block); if (del != null) { del(NSArray.ArrayFromHandle <CTFontDescriptor> (fontDescriptors)); } }
static void TrampolineEnumerate(IntPtr blockPtr, double offset, nint charIndex, bool leadingEdge, ref bool stop) { var del = BlockLiteral.GetTarget <CaretEdgeEnumerator> (blockPtr); if (del is not null) { del(offset, charIndex, leadingEdge, ref stop); } }
static void TrampolineBooleanChangeHandler(IntPtr block, bool value) { var del = BlockLiteral.GetTarget <Action <bool> > (block); if (del != null) { del(value); } }
static void TrampolineSetDataHandler(IntPtr block, IntPtr data) { // get and call, this is internal and we are trying to do all the magic in the call var del = BlockLiteral.GetTarget <Action <IntPtr> > (block); if (del != null) { del(data); } }
static void TrampolinePathChanged(IntPtr block, IntPtr path) { var del = BlockLiteral.GetTarget <Action <NWPath> > (block); if (del != null) { var x = new NWPath(path, owns: false); del(x); } }
static void Trampoline_StateChangeCallback(IntPtr block, NWConnectionState state, IntPtr error) { var del = BlockLiteral.GetTarget <Action <NWConnectionState, NWError> > (block); if (del != null) { NWError err = error != IntPtr.Zero ? new NWError(error, owns: false) : null; del(state, err); } }
static void TrampolineCollectHandler(IntPtr block, IntPtr report) { var del = BlockLiteral.GetTarget <Action <NWDataTransferReport> > (block); if (del != null) { using (var nwReport = new NWDataTransferReport(report, owns: false)) del(nwReport); } }
static void Trampoline_DispatchReadWriteHandler(IntPtr block, IntPtr dispatchData, int error) { var del = BlockLiteral.GetTarget <DispatchIOHandler> (block); if (del != null) { var dd = dispatchData == IntPtr.Zero ? null : new DispatchData(dispatchData, owns: false); del(dd, error); } }
static void TrampolineStateChangesHandler(IntPtr block, NWEthernetChannelState state, IntPtr error) { var del = BlockLiteral.GetTarget <Action <NWEthernetChannelState, NWError?> > (block); if (del != null) { NWError?nwError = (error == IntPtr.Zero) ? null : new NWError(error, owns: false); del(state, nwError); } }
static void TrampolineSendCompletion(IntPtr block, IntPtr error) { var del = BlockLiteral.GetTarget <Action <NWError?> > (block); if (del != null) { using NWError? err = error == IntPtr.Zero ? null : new NWError(error, owns: false); del(err); } }
static void TrampolineUpdatedSnapshot(IntPtr block, IntPtr path) { var del = BlockLiteral.GetTarget <Action <NWPath> > (block); if (del != null) { var nwPath = new NWPath(path, owns: false); del(nwPath); } }