7
8
public partial class NSInputStream : NSStream {
8
9
static IntPtr selReadMaxLength = Selector.sel_registerName ("read:maxLength:");
11
CFStreamEventType flags;
13
CFStreamClientContext context;
10
15
public int Read (byte [] buffer, uint len) {
11
16
return objc_msgSend (Handle, selReadMaxLength, buffer, len);
14
19
[DllImport ("/usr/lib/libobjc.dylib")]
15
20
static extern int objc_msgSend (IntPtr handle, IntPtr sel, [In, Out] byte [] buffer, uint len);
22
[Export ("read:maxLength:")]
23
public virtual int Read (IntPtr buffer, uint len)
25
if (buffer == IntPtr.Zero)
26
throw new ArgumentNullException ("buffer");
29
if (IsDirectBinding) {
30
ret = Messaging.int_objc_msgSend_IntPtr_UInt32 (this.Handle, selReadMaxLength, buffer, len);
32
ret = Messaging.int_objc_msgSendSuper_IntPtr_UInt32 (this.SuperHandle, selReadMaxLength, buffer, len);
38
protected override void Dispose (bool disposing)
41
context.Info = IntPtr.Zero;
43
base.Dispose (disposing);
46
[Export ("_setCFClientFlags:callback:context:")]
47
protected virtual bool SetCFClientFlags (CFStreamEventType inFlags, IntPtr inCallback, IntPtr inContextPtr)
49
CFStreamClientContext inContext;
51
if (inContextPtr == IntPtr.Zero)
54
inContext = (CFStreamClientContext) Marshal.PtrToStructure (inContextPtr, typeof (CFStreamClientContext));
55
if (inContext.Version != 0)
63
callback = inCallback;
68
[Export ("getBuffer:length:")]
69
protected unsafe virtual bool GetBuffer (out IntPtr buffer, out System.UInt32 len)
76
public void Notify (CFStreamEventType eventType)
78
if ((flags & eventType) == 0)
81
context.Invoke (callback, Handle, eventType);