Beispiel #1
0
        // 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);
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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();
        }