// copies the dispatch data to a managed array public byte [] ToArray() { IntPtr bufferAddress = IntPtr.Zero; nuint bufferSize = 0; using DispatchData dataCopy = CreateMap(out bufferAddress, out bufferSize); byte[] managedArray = new byte[(int)bufferSize]; Marshal.Copy(bufferAddress, managedArray, 0, (int)bufferSize); return(managedArray); }
public static DispatchData Concat(DispatchData data1, DispatchData data2) { if (data1 == null) { throw new ArgumentNullException(nameof(data1)); } if (data2 == null) { throw new ArgumentNullException(nameof(data2)); } return(new DispatchData(dispatch_data_create_concat(data1.Handle, data2.Handle), owns: true)); }
public static void Write(int fd, DispatchData dispatchData, DispatchQueue dispatchQueue, DispatchIOHandler handler) { if (dispatchData == null) { throw new ArgumentNullException(nameof(dispatchData)); } if (handler == null) { throw new ArgumentNullException(nameof(handler)); } if (dispatchQueue == null) { throw new ArgumentNullException(nameof(dispatchQueue)); } BlockLiteral block_handler = new BlockLiteral(); block_handler.SetupBlockUnsafe(static_DispatchReadWriteHandler, handler); dispatch_write(fd, dispatchData.Handle, dispatchQueue.Handle, ref block_handler); block_handler.CleanupBlock(); }