view dstep/coreservices/osservices/OpenTransport.d @ 11:07194b026fa4

Added bindings to a couple of frameworks, new license + some other things
author Jacob Carlborg <doob@me.com>
date Sat, 01 Aug 2009 15:03:28 +0200
parents
children
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Jul 22, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.coreservices.osservices.OpenTransport;

//import dstep.AvailabilityMacros;
import dstep.coreservices.carboncore.MacErrors;
import dstep.coreservices.carboncore.MacTypes;
import dstep.coreservices.carboncore.MixedMode;
import dstep.internal.Version;
import dstep.objc.bridge.TypeEncoding;
//import dstep.stddef;

struct OTConfiguration;
struct OpaqueOTClientContextPtr;

struct TOptionHeader
{
	uint len;
	uint level;
	uint name;
	uint status;
}

alias ubyte OTUInt8Param;
alias ushort OTUInt16Param;
alias short OTSInt16Param;
alias byte OTSInt8Param;
alias ubyte OTBooleanParam;
alias ubyte uchar_p;
alias ushort ushort_p;
alias short short_p;
alias byte char_p;
alias ubyte boolean_p;
alias uint OTByteCount;
alias uint OTItemCount;
alias int OTInt32;
alias uint OTUInt32;
alias int int_t;
alias uint uint_t;
alias uint OTTimeout;
alias int OTSequence;
alias int OTNameID;
alias int OTReason;
alias uint OTQLen;
alias char* OTClientName;
alias int OTCommand;
alias void* OTClient;
alias uint OTOpenFlags;
alias ushort OTUnixErr;
alias ushort OTXTIErr;
alias int OTResult;
alias ushort OTAddressType;
alias uint OTStructType;
alias uint OTFieldsType;
alias uint OTFlags;
alias uint OTBand;
alias void* ProviderRef;
alias void* EndpointRef;
alias void* MapperRef;
alias uint OTEventCode;
alias OTNotifyProcPtr OTNotifyUPP;
alias uint OTXTILevel;
alias uint OTXTIName;
alias uint OTXTIStates;
alias OTConfiguration* OTConfigurationRef;
alias uint OTServiceType;
alias int OTDataSize;
alias uint OTPortRef;
alias OTPortRef* OTPortRefPtr;
alias ubyte OTBusType;
alias ushort OTDeviceType;
alias ushort OTSlotNumber;
alias OpaqueOTClientContextPtr* OTClientContextPtr;
alias uint OTInitializationFlags;
alias OTProcessProcPtr OTProcessUPP;
alias int OTDeferredTaskRef;
alias int OTSystemTaskRef;
alias UnsignedWide OTTimeStamp;
alias OTListSearchProcPtr OTListSearchUPP;
alias ubyte OTLock;

extern (C)
{
	alias ubyte function (void*, OTLink*) OTListSearchProcPtr;
	alias void function (void*) OTProcessProcPtr;
	alias void function (void*, uint, int, void*) OTNotifyProcPtr;
}

// This is needed otherwise the enums will fail compiling with gdc
version (GNU)
{
	private
	{
		const __kOTCFMClass = getOSType!("otan");
	}
}

enum
{
	kOTCFMClass = getOSType!("otan")
}

enum
{
	kO_ASYNC = 0x01,
	kO_NDELAY = 0x04,
	kO_NONBLOCK = 0x04
}

enum
{
	TSUCCESS = 0,
	TBADADDR = 1,
	TBADOPT = 2,
	TACCES = 3,
	TBADF = 4,
	TNOADDR = 5,
	TOUTSTATE = 6,
	TBADSEQ = 7,
	TSYSERR = 8,
	TLOOK = 9,
	TBADDATA = 10,
	TBUFOVFLW = 11,
	TFLOW = 12,
	TNODATA = 13,
	TNODIS = 14,
	TNOUDERR = 15,
	TBADFLAG = 16,
	TNOREL = 17,
	TNOTSUPPORT = 18,
	TSTATECHNG = 19,
	TNOSTRUCTYPE = 20,
	TBADNAME = 21,
	TBADQLEN = 22,
	TADDRBUSY = 23,
	TINDOUT = 24,
	TPROVMISMATCH = 25,
	TRESQLEN = 26,
	TRESADDR = 27,
	TQFULL = 28,
	TPROTO = 29,
	TBADSYNC = 30,
	TCANCELED = 31,
	TLASTXTIERROR = 31
}

enum
{
	kOTGenericName = 0
}

enum
{
	T_BIND = 1,
	T_OPTMGMT = 2,
	T_CALL = 3,
	T_DIS = 4,
	T_UNITDATA = 5,
	T_UDERROR = 6,
	T_INFO = 7,
	T_REPLYDATA = 8,
	T_REQUESTDATA = 9,
	T_UNITREQUEST = 10,
	T_UNITREPLY = 11
}

enum
{
	T_ADDR = 0x01,
	T_OPT = 0x02,
	T_UDATA = 0x04,
	T_ALL = 0xFFFF
}

enum
{
	T_MORE = 0x0001,
	T_EXPEDITED = 0x0002,
	T_ACKNOWLEDGED = 0x0004,
	T_PARTIALDATA = 0x0008,
	T_NORECEIPT = 0x0010,
	T_TIMEDOUT = 0x0020
}

enum
{
	T_NEGOTIATE = 0x0004,
	T_CHECK = 0x0008,
	T_DEFAULT = 0x0010,
	T_CURRENT = 0x0080
}

enum
{
	T_SUCCESS = 0x0020,
	T_FAILURE = 0x0040,
	T_PARTSUCCESS = 0x0100,
	T_READONLY = 0x0200,
	T_NOTSUPPORT = 0x0400
}

enum
{
	T_LISTEN = 0x0001,
	T_CONNECT = 0x0002,
	T_DATA = 0x0004,
	T_EXDATA = 0x0008,
	T_DISCONNECT = 0x0010,
	T_ERROR = 0x0020,
	T_UDERR = 0x0040,
	T_ORDREL = 0x0080,
	T_GODATA = 0x0100,
	T_GOEXDATA = 0x0200,
	T_REQUEST = 0x0400,
	T_REPLY = 0x0800,
	T_PASSCON = 0x1000,
	T_RESET = 0x2000,
	kPRIVATEEVENT = 0x10000000,
	kCOMPLETEEVENT = 0x20000000,
	T_BINDCOMPLETE = 0x20000001,
	T_UNBINDCOMPLETE = 0x20000002,
	T_ACCEPTCOMPLETE = 0x20000003,
	T_REPLYCOMPLETE = 0x20000004,
	T_DISCONNECTCOMPLETE = 0x20000005,
	T_OPTMGMTCOMPLETE = 0x20000006,
	T_OPENCOMPLETE = 0x20000007,
	T_GETPROTADDRCOMPLETE = 0x20000008,
	T_RESOLVEADDRCOMPLETE = 0x20000009,
	T_GETINFOCOMPLETE = 0x2000000A,
	T_SYNCCOMPLETE = 0x2000000B,
	T_MEMORYRELEASED = 0x2000000C,
	T_REGNAMECOMPLETE = 0x2000000D,
	T_DELNAMECOMPLETE = 0x2000000E,
	T_LKUPNAMECOMPLETE = 0x2000000F,
	T_LKUPNAMERESULT = 0x20000010,
	kOTSyncIdleEvent = 0x20000011,
	kSTREAMEVENT = 0x21000000,
	kOTReservedEvent1 = 0x21000001,
	kGetmsgEvent = 0x21000002,
	kStreamReadEvent = 0x21000003,
	kStreamWriteEvent = 0x21000004,
	kStreamIoctlEvent = 0x21000005,
	kOTReservedEvent2 = 0x21000006,
	kStreamOpenEvent = 0x21000007,
	kPollEvent = 0x21000008,
	kOTReservedEvent3 = 0x21000009,
	kOTReservedEvent4 = 0x2100000A,
	kOTReservedEvent5 = 0x2100000B,
	kOTReservedEvent6 = 0x2100000C,
	kOTReservedEvent7 = 0x2100000D,
	kOTReservedEvent8 = 0x2100000E,
	kSIGNALEVENT = 0x22000000,
	kPROTOCOLEVENT = 0x23000000,
	kOTProviderIsDisconnected = 0x23000001,
	kOTProviderIsReconnected = 0x23000002,
	kOTProviderWillClose = 0x24000001,
	kOTProviderIsClosed = 0x24000002,
	kOTPortDisabled = 0x25000001,
	kOTPortEnabled = 0x25000002,
	kOTPortOffline = 0x25000003,
	kOTPortOnline = 0x25000004,
	kOTClosePortRequest = 0x25000005,
	kOTYieldPortRequest = 0x25000005,
	kOTNewPortRegistered = 0x25000006,
	kOTPortNetworkChange = 0x25000007,
	kOTConfigurationChanged = 0x26000001,
	kOTSystemSleep = 0x26000002,
	kOTSystemShutdown = 0x26000003,
	kOTSystemAwaken = 0x26000004,
	kOTSystemIdle = 0x26000005,
	kOTSystemSleepPrep = 0x26000006,
	kOTSystemShutdownPrep = 0x26000007,
	kOTSystemAwakenPrep = 0x26000008,
	kOTStackIsLoading = 0x27000001,
	kOTStackWasLoaded = 0x27000002,
	kOTStackIsUnloading = 0x27000003
}

enum
{
	kOTDisablePortEvent = 0x21000001,
	kStreamCloseEvent = 0x21000006,
	kBackgroundStreamEvent = 0x21000009,
	kIoctlRecvFdEvent = 0x2100000A,
	kOTTryShutdownEvent = 0x2100000B,
	kOTScheduleTerminationEvent = 0x2100000C,
	kOTEnablePortEvent = 0x2100000D,
	kOTNewPortRegisteredEvent = 0x2100000E,
	kOTPortOfflineEvent = 0x2100000F,
	kOTPortOnlineEvent = 0x21000010,
	kOTPortNetworkChangeEvent = 0x21000011
}

enum
{
	kSIGHUP = 1,
	kSIGURG = 16,
	kSIGPOLL = 30
}

enum
{
	XTI_GENERIC = 0xFFFF
}

enum
{
	XTI_DEBUG = 0x0001,
	XTI_LINGER = 0x0080,
	XTI_RCVBUF = 0x1002,
	XTI_RCVLOWAT = 0x1004,
	XTI_SNDBUF = 0x1001,
	XTI_SNDLOWAT = 0x1003,
	XTI_PROTOTYPE = 0x1005,
	OPT_CHECKSUM = 0x0600,
	OPT_RETRYCNT = 0x0601,
	OPT_INTERVAL = 0x0602,
	OPT_ENABLEEOM = 0x0603,
	OPT_SELFSEND = 0x0604,
	OPT_SERVERSTATUS = 0x0605,
	OPT_ALERTENABLE = 0x0606,
	OPT_KEEPALIVE = 0x0008
}

enum
{
	MIOC_STREAMIO = 'A',
	MIOC_TMOD = 'a',
	MIOC_STRLOG = 'b',
	MIOC_ND = 'c',
	MIOC_ECHO = 'd',
	MIOC_TLI = 'e',
	MIOC_RESERVEDf = 'f',
	MIOC_SAD = 'g',
	MIOC_ARP = 'h',
	MIOC_HAVOC = 'H',
	MIOC_RESERVEDi = 'i',
	MIOC_SIOC = 'j',
	MIOC_TCP = 'k',
	MIOC_DLPI = 'l',
	MIOC_SOCKETS = 'm',
	MIOC_IPX = 'o',
	MIOC_OT = 'O',
	MIOC_ATALK = 'T',
	MIOC_SRL = 'U',
	MIOC_RESERVEDp = 'p',
	MIOC_RESERVEDr = 'r',
	MIOC_RESERVEDs = 's',
	MIOC_CFIG = 'z'
}

enum
{
	I_OTGetMiscellaneousEvents = ((MIOC_OT << 8) | 1),
	I_OTSetFramingType = ((MIOC_OT << 8) | 2),
	kOTGetFramingValue = cast(uint)0xFFFFFFFF,
	I_OTSetRawMode = ((MIOC_OT << 8) | 3),
	kOTSetRecvMode = 0x01,
	kOTSendErrorPacket = 0x02,
	I_OTConnect = ((MIOC_OT << 8) | 4),
	I_OTDisconnect = ((MIOC_OT << 8) | 5),
	I_OTScript = ((MIOC_OT << 8) | 6)
}

enum
{
	T_UNINIT = 0,
	T_UNBND = 1,
	T_IDLE = 2,
	T_OUTCON = 3,
	T_INCON = 4,
	T_DATAXFER = 5,
	T_OUTREL = 6,
	T_INREL = 7
}

static if (D_LP64)
{
	enum : ulong
	{
		T_YES = 1,
		T_NO = 0,
		T_UNUSED = -1,
		kT_NULL = 0,
		T_ABSREQ = 0x8000
	}
}

else
{
	enum : uint
	{
		T_YES = 1,
		T_NO = 0,
		T_UNUSED = -1,
		kT_NULL = 0,
		T_ABSREQ = 0x8000
	}
}

enum
{
	kT_UNSPEC = cast(uint)0xFFFFFFFD,
	T_ALLOPT = 0
}

enum
{
	kOTOptionHeaderSize = TOptionHeader.sizeof,
	kOTBooleanOptionDataSize = uint.sizeof,
	kOTBooleanOptionSize = kOTOptionHeaderSize + kOTBooleanOptionDataSize,
	kOTOneByteOptionSize = kOTOptionHeaderSize + 1,
	kOTTwoByteOptionSize = kOTOptionHeaderSize + 2,
	kOTFourByteOptionSize = kOTOptionHeaderSize + uint.sizeof
}

enum
{
	T_COTS = 1,
	T_COTS_ORD = 2,
	T_CLTS = 3,
	T_TRANS = 5,
	T_TRANS_ORD = 6,
	T_TRANS_CLTS = 7
}

enum
{
	T_SENDZERO = 0x0001,
	T_XPG4_1 = 0x0002,
	T_CAN_SUPPORT_MDATA = 0x10000000,
	T_CAN_RESOLVE_ADDR = 0x40000000,
	T_CAN_SUPPLY_MIB = 0x20000000
}

enum
{
	T_INFINITE = -1,
	T_INVALID = -2
}

enum
{
	kOTInvalidPortRef = 0
}

enum
{
	kOTUnknownBusPort = 0,
	kOTMotherboardBus = 1,
	kOTNuBus = 2,
	kOTPCIBus = 3,
	kOTGeoPort = 4,
	kOTPCCardBus = 5,
	kOTFireWireBus = 6,
	kOTLastBusIndex = 15
}

enum
{
	kOTNoDeviceType = 0,
	kOTADEVDevice = 1,
	kOTMDEVDevice = 2,
	kOTLocalTalkDevice = 3,
	kOTIRTalkDevice = 4,
	kOTTokenRingDevice = 5,
	kOTISDNDevice = 6,
	kOTATMDevice = 7,
	kOTSMDSDevice = 8,
	kOTSerialDevice = 9,
	kOTEthernetDevice = 10,
	kOTSLIPDevice = 11,
	kOTPPPDevice = 12,
	kOTModemDevice = 13,
	kOTFastEthernetDevice = 14,
	kOTFDDIDevice = 15,
	kOTIrDADevice = 16,
	kOTATMSNAPDevice = 17,
	kOTFibreChannelDevice = 18,
	kOTFireWireDevice = 19,
	kOTPseudoDevice = 1023,
	kOTLastDeviceIndex = 1022
}

enum
{
	kOTLastSlotNumber = 255,
	kOTLastOtherNumber = 255
}

enum
{
	kMaxModuleNameLength = 31,
	kMaxModuleNameSize = kMaxModuleNameLength + 1,
	kMaxProviderNameLength = kMaxModuleNameLength + 4,
	kMaxProviderNameSize = kMaxProviderNameLength + 1,
	kMaxSlotIDLength = 7,
	kMaxSlotIDSize = kMaxSlotIDLength + 1,
	kMaxResourceInfoLength = 31,
	kMaxResourceInfoSize = 32,
	kMaxPortNameLength = kMaxModuleNameLength + 4,
	kMaxPortNameSize = kMaxPortNameLength + 1
}

enum
{
	kOTPortIsActive = 0x00000001,
	kOTPortIsDisabled = 0x00000002,
	kOTPortIsUnavailable = 0x00000004,
	kOTPortIsOffline = 0x00000008
}

enum
{
	kOTPortIsDLPI = 0x00000001,
	kOTPortIsTPI = 0x00000002,
	kOTPortCanYield = 0x00000004,
	kOTPortCanArbitrate = 0x00000008,
	kOTPortIsTransitory = 0x00000010,
	kOTPortAutoConnects = 0x00000020,
	kOTPortIsSystemRegistered = 0x00004000,
	kOTPortIsPrivate = 0x00008000,
	kOTPortIsAlias = cast(uint)0x80000000
}

enum : uint
{
	kNetbufDataIsOTData = 0xFFFFFFFE
}

enum : uint
{
	kOTNetbufDataIsOTBufferStar = 0xFFFFFFFD
}

enum : uint
{
	kOTNetbufIsRawMode = 0xFFFFFFFF
}

enum
{
	kInitOTForApplicationMask = 1,
	kInitOTForExtensionMask = 2
}

struct OTAddress
{
	ushort fAddressType;
	char* fAddress;
}


struct OTScriptInfo
{
	uint fScriptType;
	void* fTheScript;
	uint fScriptLength;
}

struct TOption
{
	uint len;
	uint level;
	uint name;
	uint status;
	UInt32* value;
}


struct t_kpalive
{
	int kp_onoff;
	int kp_timeout;
}


struct t_linger
{
	int l_onoff;
	int l_linger;
}


struct TEndpointInfo
{
	int addr;
	int options;
	int tsdu;
	int etsdu;
	int connect;
	int discon;
	uint servtype;
	uint flags;
}


struct OTPortRecord
{
	uint fRef;
	uint fPortFlags;
	uint fInfoFlags;
	uint fCapabilities;
	uint fNumChildPorts;
	OTPortRef* fChildPorts;
	char* fPortName;
	char* fModuleName;
	char* fSlotID;
	char* fResourceInfo;
	char* fReserved;
}


struct TNetbuf
{
	uint maxlen;
	uint len;
	char* buf;
}


struct strbuf
{
	int maxlen;
	int len;
	char* buf;
}


struct OTData
{
	void* fNext;
	void* fData;
	uint fLen;
}


struct OTBuffer
{
	void* fLink;
	void* fLink2;
	OTBuffer* fNext;
	char* fData;
	uint fLen;
	void* fSave;
	ubyte fBand;
	ubyte fType;
	ubyte fPad1;
	ubyte fFlags;
}


struct OTBufferInfo
{
	OTBuffer* fBuffer;
	uint fOffset;
	ubyte fPad;
}


struct TBind
{
	TNetbuf addr;
	uint qlen;
}


struct TDiscon
{
	TNetbuf udata;
	int reason;
	int sequence;
}


struct TCall
{
	TNetbuf addr;
	TNetbuf opt;
	TNetbuf udata;
	int sequence;
}


struct TUnitData
{
	TNetbuf addr;
	TNetbuf opt;
	TNetbuf udata;
}


struct TUDErr
{
	TNetbuf addr;
	TNetbuf opt;
	int error;
}


struct TOptMgmt
{
	TNetbuf opt;
	uint flags;
}


struct TRequest
{
	TNetbuf data;
	TNetbuf opt;
	int sequence;
}


struct TReply
{
	TNetbuf data;
	TNetbuf opt;
	int sequence;
}


struct TUnitRequest
{
	TNetbuf addr;
	TNetbuf opt;
	TNetbuf udata;
	int sequence;
}


struct TUnitReply
{
	TNetbuf opt;
	TNetbuf udata;
	int sequence;
}


struct TRegisterRequest
{
	TNetbuf name;
	TNetbuf addr;
	uint flags;
}


struct TRegisterReply
{
	TNetbuf addr;
	int nameid;
}


struct TLookupRequest
{
	TNetbuf name;
	TNetbuf addr;
	uint maxcnt;
	uint timeout;
	uint flags;
}


struct TLookupReply
{
	TNetbuf names;
	uint rspcount;
}


struct TLookupBuffer
{
	ushort fAddressLength;
	ushort fNameLength;
	char* fAddressBuffer;
}


struct OTLink
{
	OTLink* fNext;
}


struct OTLIFO
{
	OTLink* fHead;
}


struct OTList
{
	OTLink* fHead;
}

extern (C)
{
	OTNotifyUPP NewOTNotifyUPP (OTNotifyProcPtr userRoutine);
	void DisposeOTNotifyUPP (OTNotifyUPP userUPP);
	void InvokeOTNotifyUPP (void* contextPtr, uint code, int result, void* cookie, OTNotifyUPP userUPP);
	OTProcessUPP NewOTProcessUPP (OTProcessProcPtr userRoutine);
	void DisposeOTProcessUPP (OTProcessUPP userUPP);
	void InvokeOTProcessUPP (void* arg, OTProcessUPP userUPP);
	OTListSearchUPP NewOTListSearchUPP (OTListSearchProcPtr userRoutine);
	void DisposeOTListSearchUPP (OTListSearchUPP userUPP);
	ubyte InvokeOTListSearchUPP (void* ref_, OTLink* linkToCheck, OTListSearchUPP userUPP);
}