view dstep/foundation/NSConnection.d @ 15:7ff919f595d5

Added the Foundation framework, again
author Jacob Carlborg <doob@me.com>
date Mon, 03 Aug 2009 15:31:48 +0200
parents 89f3c3ef1fd2
children 19885b43130e
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.NSConnection;

import dstep.foundation.NSArray;
import dstep.foundation.NSData;
import dstep.foundation.NSDate;
import dstep.foundation.NSDictionary;
import dstep.foundation.NSDistantObject;
import dstep.foundation.NSException;
import dstep.foundation.NSMutableData;
import dstep.foundation.NSObject;
import dstep.foundation.NSPort;
import dstep.foundation.NSPortNameServer;
import dstep.foundation.NSRunLoop;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc : id;

import bindings = dstep.foundation.NSConnection_bindings;

const NSString NSConnectionReplyMode;
const NSString NSConnectionDidDieNotification;
const NSString NSFailedAuthenticationException;
const NSString NSConnectionDidInitializeNotification;

static this ()
{
	NSConnectionReplyMode = new NSString(bindings.NSConnectionReplyMode);
	NSConnectionDidDieNotification = new NSString(bindings.NSConnectionDidDieNotification);
	NSFailedAuthenticationException = new NSString(bindings.NSFailedAuthenticationException);
	NSConnectionDidInitializeNotification = new NSString(bindings.NSConnectionDidInitializeNotification);
}

class NSDistantObjectRequest : NSObject
{
	mixin ObjcWrap;

	NSInvocation invocation ()
	{
		return invokeObjcSelf!(NSInvocation, "invocation");
	}

	NSConnection connection ()
	{
		return invokeObjcSelf!(NSConnection, "connection");
	}

	Object conversation ()
	{
		return invokeObjcSelf!(Object, "conversation");
	}

	void replyWithException (NSException exception)
	{
		return invokeObjcSelf!(void, "replyWithException:", NSException)(exception);
	}
}

class NSConnection : NSObject
{
	mixin ObjcWrap;

	NSDictionary statistics ()
	{
		return invokeObjcSelf!(NSDictionary, "statistics");
	}

	static NSArray allConnections ()
	{
		return invokeObjcSelfClass!(NSArray, "allConnections");
	}

	static NSConnection defaultConnection ()
	{
		return invokeObjcSelfClass!(NSConnection, "defaultConnection");
	}

	static Object connectionWithRegisteredName (NSString name, NSString hostName)
	{
		return invokeObjcSelfClass!(Object, "connectionWithRegisteredName:host:", NSString, NSString)(name, hostName);
	}

	static Object connectionWithRegisteredName (NSString name, NSString hostName, NSPortNameServer server)
	{
		return invokeObjcSelfClass!(Object, "connectionWithRegisteredName:host:usingNameServer:", NSString, NSString, NSPortNameServer)(name, hostName, server);
	}

	static NSDistantObject rootProxyForConnectionWithRegisteredName (NSString name, NSString hostName)
	{
		return invokeObjcSelfClass!(NSDistantObject, "rootProxyForConnectionWithRegisteredName:host:", NSString, NSString)(name, hostName);
	}

	static NSDistantObject rootProxyForConnectionWithRegisteredName (NSString name, NSString hostName, NSPortNameServer server)
	{
		return invokeObjcSelfClass!(NSDistantObject, "rootProxyForConnectionWithRegisteredName:host:usingNameServer:", NSString, NSString, NSPortNameServer)(name, hostName, server);
	}

	static Object serviceConnectionWithName (NSString name, Object root, NSPortNameServer server)
	{
		return invokeObjcSelfClass!(Object, "serviceConnectionWithName:rootObject:usingNameServer:", NSString, Object, NSPortNameServer)(name, root, server);
	}

	static Object serviceConnectionWithName (NSString name, Object root)
	{
		return invokeObjcSelfClass!(Object, "serviceConnectionWithName:rootObject:", NSString, Object)(name, root);
	}

	void setRequestTimeout (double ti)
	{
		return invokeObjcSelf!(void, "setRequestTimeout:", double)(ti);
	}

	double requestTimeout ()
	{
		return invokeObjcSelf!(double, "requestTimeout");
	}

	void setReplyTimeout (double ti)
	{
		return invokeObjcSelf!(void, "setReplyTimeout:", double)(ti);
	}

	double replyTimeout ()
	{
		return invokeObjcSelf!(double, "replyTimeout");
	}

	void setRootObject (Object anObject)
	{
		return invokeObjcSelf!(void, "setRootObject:", Object)(anObject);
	}

	Object rootObject ()
	{
		return invokeObjcSelf!(Object, "rootObject");
	}

	NSDistantObject rootProxy ()
	{
		return invokeObjcSelf!(NSDistantObject, "rootProxy");
	}

	void setDelegate (Object anObject)
	{
		return invokeObjcSelf!(void, "setDelegate:", Object)(anObject);
	}

	Object delegate_ ()
	{
		return invokeObjcSelf!(Object, "delegate");
	}

	void setIndependentConversationQueueing (bool yorn)
	{
		return invokeObjcSelf!(void, "setIndependentConversationQueueing:", bool)(yorn);
	}

	bool independentConversationQueueing ()
	{
		return invokeObjcSelf!(bool, "independentConversationQueueing");
	}

	bool isValid ()
	{
		return invokeObjcSelf!(bool, "isValid");
	}

	void invalidate ()
	{
		return invokeObjcSelf!(void, "invalidate");
	}

	void addRequestMode (NSString rmode)
	{
		return invokeObjcSelf!(void, "addRequestMode:", NSString)(rmode);
	}

	void removeRequestMode (NSString rmode)
	{
		return invokeObjcSelf!(void, "removeRequestMode:", NSString)(rmode);
	}

	NSArray requestModes ()
	{
		return invokeObjcSelf!(NSArray, "requestModes");
	}

	bool registerName (NSString name)
	{
		return invokeObjcSelf!(bool, "registerName:", NSString)(name);
	}

	bool registerName (NSString name, NSPortNameServer server)
	{
		return invokeObjcSelf!(bool, "registerName:withNameServer:", NSString, NSPortNameServer)(name, server);
	}

	static Object connectionWithReceivePort (NSPort receivePort, NSPort sendPort)
	{
		return invokeObjcSelfClass!(Object, "connectionWithReceivePort:sendPort:", NSPort, NSPort)(receivePort, sendPort);
	}

	static Object currentConversation ()
	{
		return invokeObjcSelfClass!(Object, "currentConversation");
	}

	Object initWithReceivePort (NSPort receivePort, NSPort sendPort)
	{
		return invokeObjcSelf!(Object, "initWithReceivePort:sendPort:", NSPort, NSPort)(receivePort, sendPort);
	}

	this (NSPort receivePort, NSPort sendPort)
	{
		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
		id result = Bridge.invokeObjcMethod!(id, "initWithReceivePort:sendPort:", NSPort, NSPort)(objcObject, receivePort, sendPort);

		if (result)
			objcObject = ret;

		dObject = this;
	}

	NSPort sendPort ()
	{
		return invokeObjcSelf!(NSPort, "sendPort");
	}

	NSPort receivePort ()
	{
		return invokeObjcSelf!(NSPort, "receivePort");
	}

	void enableMultipleThreads ()
	{
		return invokeObjcSelf!(void, "enableMultipleThreads");
	}

	bool multipleThreadsEnabled ()
	{
		return invokeObjcSelf!(bool, "multipleThreadsEnabled");
	}

	void addRunLoop (NSRunLoop runloop)
	{
		return invokeObjcSelf!(void, "addRunLoop:", NSRunLoop)(runloop);
	}

	void removeRunLoop (NSRunLoop runloop)
	{
		return invokeObjcSelf!(void, "removeRunLoop:", NSRunLoop)(runloop);
	}

	void runInNewThread ()
	{
		return invokeObjcSelf!(void, "runInNewThread");
	}

	NSArray remoteObjects ()
	{
		return invokeObjcSelf!(NSArray, "remoteObjects");
	}

	NSArray localObjects ()
	{
		return invokeObjcSelf!(NSArray, "localObjects");
	}
}

template TNSDistantObjectRequestMethods ()
{
	bool connection (NSConnection connection, NSDistantObjectRequest doreq);
}

template TNSConnectionDelegateMethods ()
{
	bool makeNewConnection (NSConnection conn, NSConnection ancestor);
	bool connection (NSConnection ancestor, NSConnection conn);
	NSData authenticationDataForComponents (NSArray components);
	bool authenticateComponents (NSArray components, NSData signature);
	Object createConversationForConnection (NSConnection conn);
}