Mercurial > projects > dstep
view dstep/foundation/NSStream.d @ 16:19885b43130e
Huge update, the bridge actually works now
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sun, 03 Jan 2010 22:06:11 +0100 |
parents | 89f3c3ef1fd2 |
children | b9de51448c6b |
line wrap: on
line source
/** * Copyright: Copyright (c) 2009 Jacob Carlborg. * Authors: Jacob Carlborg * Version: Initial created: Aug 3, 2009 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) */ module dstep.foundation.NSStream; import dstep.foundation.NSData; import dstep.foundation.NSDictionary; import dstep.foundation.NSError; import dstep.foundation.NSHost; import dstep.foundation.NSObjCRuntime; import dstep.foundation.NSObject; import dstep.foundation.NSRunLoop; import dstep.foundation.NSString; import dstep.objc.bridge.Bridge; import dstep.objc.objc; import bindings = dstep.foundation.NSStream_bindings; alias NSUInteger NSStreamStatus; alias NSUInteger NSStreamEvent; private { NSString NSStreamSocketSecurityLevelKey_; NSString NSStreamSocketSecurityLevelNone_; NSString NSStreamSocketSecurityLevelSSLv2_; NSString NSStreamSocketSecurityLevelSSLv3_; NSString NSStreamSocketSecurityLevelTLSv1_; NSString NSStreamSocketSecurityLevelNegotiatedSSL_; NSString NSStreamSOCKSProxyConfigurationKey_; NSString NSStreamSOCKSProxyHostKey_; NSString NSStreamSOCKSProxyPortKey_; NSString NSStreamSOCKSProxyVersionKey_; NSString NSStreamSOCKSProxyUserKey_; NSString NSStreamSOCKSProxyPasswordKey_; NSString NSStreamSOCKSProxyVersion4_; NSString NSStreamSOCKSProxyVersion5_; NSString NSStreamDataWrittenToMemoryStreamKey_; NSString NSStreamFileCurrentOffsetKey_; NSString NSStreamSocketSSLErrorDomain_; NSString NSStreamSOCKSErrorDomain_; } NSString NSStreamSocketSecurityLevelKey () { if (NSStreamSocketSecurityLevelKey_) return NSStreamSocketSecurityLevelKey_; return NSStreamSocketSecurityLevelKey_ = new NSString(bindings.NSStreamSocketSecurityLevelKey); } NSString NSStreamSocketSecurityLevelNone () { if (NSStreamSocketSecurityLevelNone_) return NSStreamSocketSecurityLevelNone_; return NSStreamSocketSecurityLevelNone_ = new NSString(bindings.NSStreamSocketSecurityLevelNone); } NSString NSStreamSocketSecurityLevelSSLv2 () { if (NSStreamSocketSecurityLevelSSLv2_) return NSStreamSocketSecurityLevelSSLv2_; return NSStreamSocketSecurityLevelSSLv2_ = new NSString(bindings.NSStreamSocketSecurityLevelSSLv2); } NSString NSStreamSocketSecurityLevelSSLv3 () { if (NSStreamSocketSecurityLevelSSLv3_) return NSStreamSocketSecurityLevelSSLv3_; return NSStreamSocketSecurityLevelSSLv3_ = new NSString(bindings.NSStreamSocketSecurityLevelSSLv3); } NSString NSStreamSocketSecurityLevelTLSv1 () { if (NSStreamSocketSecurityLevelTLSv1_) return NSStreamSocketSecurityLevelTLSv1_; return NSStreamSocketSecurityLevelTLSv1_ = new NSString(bindings.NSStreamSocketSecurityLevelTLSv1); } NSString NSStreamSocketSecurityLevelNegotiatedSSL () { if (NSStreamSocketSecurityLevelNegotiatedSSL_) return NSStreamSocketSecurityLevelNegotiatedSSL_; return NSStreamSocketSecurityLevelNegotiatedSSL_ = new NSString(bindings.NSStreamSocketSecurityLevelNegotiatedSSL); } NSString NSStreamSOCKSProxyConfigurationKey () { if (NSStreamSOCKSProxyConfigurationKey_) return NSStreamSOCKSProxyConfigurationKey_; return NSStreamSOCKSProxyConfigurationKey_ = new NSString(bindings.NSStreamSOCKSProxyConfigurationKey); } NSString NSStreamSOCKSProxyHostKey () { if (NSStreamSOCKSProxyHostKey_) return NSStreamSOCKSProxyHostKey_; return NSStreamSOCKSProxyHostKey_ = new NSString(bindings.NSStreamSOCKSProxyHostKey); } NSString NSStreamSOCKSProxyPortKey () { if (NSStreamSOCKSProxyPortKey_) return NSStreamSOCKSProxyPortKey_; return NSStreamSOCKSProxyPortKey_ = new NSString(bindings.NSStreamSOCKSProxyPortKey); } NSString NSStreamSOCKSProxyVersionKey () { if (NSStreamSOCKSProxyVersionKey_) return NSStreamSOCKSProxyVersionKey_; return NSStreamSOCKSProxyVersionKey_ = new NSString(bindings.NSStreamSOCKSProxyVersionKey); } NSString NSStreamSOCKSProxyUserKey () { if (NSStreamSOCKSProxyUserKey_) return NSStreamSOCKSProxyUserKey_; return NSStreamSOCKSProxyUserKey_ = new NSString(bindings.NSStreamSOCKSProxyUserKey); } NSString NSStreamSOCKSProxyPasswordKey () { if (NSStreamSOCKSProxyPasswordKey_) return NSStreamSOCKSProxyPasswordKey_; return NSStreamSOCKSProxyPasswordKey_ = new NSString(bindings.NSStreamSOCKSProxyPasswordKey); } NSString NSStreamSOCKSProxyVersion4 () { if (NSStreamSOCKSProxyVersion4_) return NSStreamSOCKSProxyVersion4_; return NSStreamSOCKSProxyVersion4_ = new NSString(bindings.NSStreamSOCKSProxyVersion4); } NSString NSStreamSOCKSProxyVersion5 () { if (NSStreamSOCKSProxyVersion5_) return NSStreamSOCKSProxyVersion5_; return NSStreamSOCKSProxyVersion5_ = new NSString(bindings.NSStreamSOCKSProxyVersion5); } NSString NSStreamDataWrittenToMemoryStreamKey () { if (NSStreamDataWrittenToMemoryStreamKey_) return NSStreamDataWrittenToMemoryStreamKey_; return NSStreamDataWrittenToMemoryStreamKey_ = new NSString(bindings.NSStreamDataWrittenToMemoryStreamKey); } NSString NSStreamFileCurrentOffsetKey () { if (NSStreamFileCurrentOffsetKey_) return NSStreamFileCurrentOffsetKey_; return NSStreamFileCurrentOffsetKey_ = new NSString(bindings.NSStreamFileCurrentOffsetKey); } NSString NSStreamSocketSSLErrorDomain () { if (NSStreamSocketSSLErrorDomain_) return NSStreamSocketSSLErrorDomain_; return NSStreamSocketSSLErrorDomain_ = new NSString(bindings.NSStreamSocketSSLErrorDomain); } NSString NSStreamSOCKSErrorDomain () { if (NSStreamSOCKSErrorDomain_) return NSStreamSOCKSErrorDomain_; return NSStreamSOCKSErrorDomain_ = new NSString(bindings.NSStreamSOCKSErrorDomain); } enum { NSStreamStatusNotOpen = 0, NSStreamStatusOpening = 1, NSStreamStatusOpen = 2, NSStreamStatusReading = 3, NSStreamStatusWriting = 4, NSStreamStatusAtEnd = 5, NSStreamStatusClosed = 6, NSStreamStatusError = 7 } enum { NSStreamEventNone = 0, NSStreamEventOpenCompleted = 1 << 0, NSStreamEventHasBytesAvailable = 1 << 1, NSStreamEventHasSpaceAvailable = 1 << 2, NSStreamEventErrorOccurred = 1 << 3, NSStreamEventEndEncountered = 1 << 4 } const TNSStreamDelegateEventExtensions = ` void stream (NSStream aStream, NSStreamEvent eventCode) { return invokeObjcSelf!(void, "stream:handleEvent:", NSStream, NSStreamEvent)(aStream, eventCode); } //mixin ObjcBindMethod!(stream, "stream:handleEvent:"); `; const TNSOutputStreamExtensions = ` Object initToMemory () { return invokeObjcSelf!(Object, "initToMemory"); } this () { typeof(this).alloc.initToMemory(); } Object initToBuffer (char* buffer, NSUInteger capacity) { return invokeObjcSelf!(Object, "initToBuffer:capacity:", char*, NSUInteger)(buffer, capacity); } this (char* buffer, NSUInteger capacity) { typeof(this).alloc.initToBuffer(buffer, capacity); } Object initToFileAtPath (NSString path, bool shouldAppend) { return invokeObjcSelf!(Object, "initToFileAtPath:append:", NSString, bool)(path, shouldAppend); } this (NSString path, bool shouldAppend) { typeof(this).alloc.initToFileAtPath(path, shouldAppend); } static Object outputStreamToMemory () { return invokeObjcSuperClass!(Object, "outputStreamToMemory"); } static Object outputStreamToBuffer (char* buffer, NSUInteger capacity) { return invokeObjcSuperClass!(Object, "outputStreamToBuffer:capacity:", char*, NSUInteger)(buffer, capacity); } static Object outputStreamToFileAtPath (NSString path, bool shouldAppend) { return invokeObjcSuperClass!(Object, "outputStreamToFileAtPath:append:", NSString, bool)(path, shouldAppend); } `; const TNSSocketStreamCreationExtensions = ` static void getStreamsToHost (NSHost host, NSInteger port, NSInputStream** inputStream, NSOutputStream** outputStream) { return invokeObjcSuperClass!(void, "getStreamsToHost:port:inputStream:outputStream:", NSHost, NSInteger, NSInputStream**, NSOutputStream**)(host, port, inputStream, outputStream); } `; const TNSInputStreamExtensions = ` Object initWithData (NSData data) { return invokeObjcSelf!(Object, "initWithData:", NSData)(data); } this (NSData data) { typeof(this).alloc.initWithData(data); } Object initWithFileAtPath (NSString path) { return invokeObjcSelf!(Object, "initWithFileAtPath:", NSString)(path); } this (NSString path) { typeof(this).alloc.initWithFileAtPath(path); } static Object inputStreamWithData (NSData data) { return invokeObjcSuperClass!(Object, "inputStreamWithData:", NSData)(data); } static Object inputStreamWithFileAtPath (NSString path) { return invokeObjcSuperClass!(Object, "inputStreamWithFileAtPath:", NSString)(path); } `; class NSStream : NSObject { mixin (ObjcWrap); this () { super(typeof(this).alloc.init.objcObject); } typeof(this) init () { return invokeObjcSelf!(typeof(this), "init"); } void open () { return invokeObjcSelf!(void, "open"); } void close () { return invokeObjcSelf!(void, "close"); } Object delegate_ () { return invokeObjcSelf!(Object, "delegate"); } void setDelegate (Object delegate_) { return invokeObjcSelf!(void, "setDelegate:", Object)(delegate_); } Object propertyForKey (NSString key) { return invokeObjcSelf!(Object, "propertyForKey:", NSString)(key); } bool setProperty (Object property, NSString key) { return invokeObjcSelf!(bool, "setProperty:forKey:", Object, NSString)(property, key); } void scheduleInRunLoop (NSRunLoop aRunLoop, NSString mode) { return invokeObjcSelf!(void, "scheduleInRunLoop:forMode:", NSRunLoop, NSString)(aRunLoop, mode); } void removeFromRunLoop (NSRunLoop aRunLoop, NSString mode) { return invokeObjcSelf!(void, "removeFromRunLoop:forMode:", NSRunLoop, NSString)(aRunLoop, mode); } uint streamStatus () { return invokeObjcSelf!(uint, "streamStatus"); } NSError streamError () { return invokeObjcSelf!(NSError, "streamError"); } // TNSSocketStreamCreationExtensions static void getStreamsToHost (NSHost host, NSInteger port, NSInputStream** inputStream, NSOutputStream** outputStream) { return invokeObjcSuperClass!(void, "getStreamsToHost:port:inputStream:outputStream:", NSHost, NSInteger, NSInputStream**, NSOutputStream**)(host, port, inputStream, outputStream); } } class NSOutputStream : NSStream { mixin (ObjcWrap); this () { super(typeof(this).alloc.init.objcObject); } typeof(this) init () { return invokeObjcSelf!(typeof(this), "init"); } NSInteger write (char* buffer, NSUInteger len) { return invokeObjcSelf!(NSInteger, "write:maxLength:", char*, NSUInteger)(buffer, len); } bool hasSpaceAvailable () { return invokeObjcSelf!(bool, "hasSpaceAvailable"); } // TNSOutputStreamExtensions Object initToMemory () { return invokeObjcSelf!(Object, "initToMemory"); } Object initToBuffer (char* buffer, NSUInteger capacity) { return invokeObjcSelf!(Object, "initToBuffer:capacity:", char*, NSUInteger)(buffer, capacity); } this (char* buffer, NSUInteger capacity) { typeof(this).alloc.initToBuffer(buffer, capacity); } Object initToFileAtPath (NSString path, bool shouldAppend) { return invokeObjcSelf!(Object, "initToFileAtPath:append:", NSString, bool)(path, shouldAppend); } this (NSString path, bool shouldAppend) { typeof(this).alloc.initToFileAtPath(path, shouldAppend); } static Object outputStreamToMemory () { return invokeObjcSuperClass!(Object, "outputStreamToMemory"); } static Object outputStreamToBuffer (char* buffer, NSUInteger capacity) { return invokeObjcSuperClass!(Object, "outputStreamToBuffer:capacity:", char*, NSUInteger)(buffer, capacity); } static Object outputStreamToFileAtPath (NSString path, bool shouldAppend) { return invokeObjcSuperClass!(Object, "outputStreamToFileAtPath:append:", NSString, bool)(path, shouldAppend); } } class NSInputStream : NSStream { mixin (ObjcWrap); this () { super(typeof(this).alloc.init.objcObject); } typeof(this) init () { return invokeObjcSelf!(typeof(this), "init"); } NSInteger read (char* buffer, NSUInteger len) { return invokeObjcSelf!(NSInteger, "read:maxLength:", char*, NSUInteger)(buffer, len); } bool getBuffer (ubyte** buffer, NSUInteger* len) { return invokeObjcSelf!(bool, "getBuffer:length:", ubyte**, NSUInteger*)(buffer, len); } bool hasBytesAvailable () { return invokeObjcSelf!(bool, "hasBytesAvailable"); } // TNSInputStreamExtensions Object initWithData (NSData data) { return invokeObjcSelf!(Object, "initWithData:", NSData)(data); } this (NSData data) { typeof(this).alloc.initWithData(data); } Object initWithFileAtPath (NSString path) { return invokeObjcSelf!(Object, "initWithFileAtPath:", NSString)(path); } this (NSString path) { typeof(this).alloc.initWithFileAtPath(path); } static Object inputStreamWithData (NSData data) { return invokeObjcSuperClass!(Object, "inputStreamWithData:", NSData)(data); } static Object inputStreamWithFileAtPath (NSString path) { return invokeObjcSuperClass!(Object, "inputStreamWithFileAtPath:", NSString)(path); } }