{$MACRO ON} (****************************************************************************** * * Copyright (c) 1996-2000 Palm, Inc. or its subsidiaries. * All rights reserved. * * File: INetMgr.h * * Release: Palm OS SDK 4.0 (63220) * * Description: * This header file contains equates for the Internet Library. * * History: * 6/2/97 Created by Ron Marianetti * 12/23/99 Fix <> vs. "" problem. (jmp) * *****************************************************************************) unit inetmgr; interface uses palmos, libtraps, errorbase, datamgr, systemresources, event_; // Creator. Used for both the database that contains the INet Library and // it's features for the feature manager. const inetCreator = sysFileCINetLib; // The Net Library creator // INet Library features have this creator inetLibFtrCreator = sysFileCINetLib; // creatorID of INet Lib features. // Name of the InetLib inetLibName = 'INet.lib'; // pass in to SysLibFind() // Feature inetCreator, #0 is index of the the version number feature. // The Feature creator is inetLibFtrCreator. // Encoding is: 0xMMmfsbbb, where MM is major version, m is minor version // f is bug fix, s is stage: 3-release,2-beta,1-alpha,0-development, // bbb is build number for non-releases // V1.12b3 would be: 0x01122003 // V2.00a2 would be: 0x02001002 // V1.01 would be: 0x01013000 inetFtrNumVersion = 0; // INetLib owns the Ctp device bits feature. // Those bits contains device specific info bits that are sent to the Elaine server. // See Ctp.h for the bit descriptions inetFtrNumCtpDeviceBits1 = 1; inetLibType = sysFileTLibrary; // Our Net Code Resources Database type // ID for proxy IP address in flash inetFlashProxyID = 'IP'; inetDefaultFlashProxyID = 'DP'; //Also uses mobitexNetworkIdUS and mobitexNetworkIdCanada (0xb433 and 0xc4d7) to store //current proxies for US and Canada. The responsibility for writing these and keeping //them in sync lies with the Wireless panel, not with netlib. //----------------------------------------------------------------------------- // IP addresses of Elaine servers - used for default wireless proxies //----------------------------------------------------------------------------- netProxyIPManhattanHGA = $0A0186A5; // Manhattan HGA = 10.1.134.165 or MAN 100005 netProxyIPDefaultHGA = netProxyIPManhattanHGA; netProxyIPDefaultHGAStr = '10.1.134.165'; // Should correspond to above value (******************************************************************** * Error codes ********************************************************************) inetErrNone = 0; inetErrTooManyClients = inetErrorClass or 1; // Too many clients already inetErrHandleInvalid = inetErrorClass or 2; // Invalid inetH or sockH inetErrParamsInvalid = inetErrorClass or 3; inetErrURLVersionInvalid = inetErrorClass or 4; inetErrURLBufTooSmall = inetErrorClass or 5; inetErrURLInvalid = inetErrorClass or 6; inetErrTooManySockets = inetErrorClass or 7; inetErrNoRequestCreated = inetErrorClass or 8; inetErrNotConnected = inetErrorClass or 9; inetErrInvalidRequest = inetErrorClass or 10; inetErrNeedTime = inetErrorClass or 11; inetErrHostnameInvalid = inetErrorClass or 12; inetErrInvalidPort = inetErrorClass or 13; inetErrInvalidHostAddr = inetErrorClass or 14; inetErrNilBuffer = inetErrorClass or 15; inetErrConnectTimeout = inetErrorClass or 16; inetErrResolveTimeout = inetErrorClass or 17; inetErrSendReqTimeout = inetErrorClass or 18; inetErrReadTimeout = inetErrorClass or 19; inetErrBufTooSmall = inetErrorClass or 20; inetErrSchemeNotSupported = inetErrorClass or 21; inetErrInvalidResponse = inetErrorClass or 22; inetErrSettingTooLarge = inetErrorClass or 25; inetErrSettingSizeInvalid = inetErrorClass or 26; inetErrRequestTooLong = inetErrorClass or 27; inetErrSettingNotImplemented = inetErrorClass or 28; // Configuration errors inetErrConfigNotFound = inetErrorClass or 29; inetErrConfigCantDelete = inetErrorClass or 30; inetErrConfigTooMany = inetErrorClass or 31; inetErrConfigBadName = inetErrorClass or 32; inetErrConfigNotAlias = inetErrorClass or 33; inetErrConfigCantPointToAlias = inetErrorClass or 34; inetErrConfigEmpty = inetErrorClass or 35; inetErrConfigAliasErr = inetErrorClass or 37; inetErrNoWirelessInterface = inetErrorClass or 38; // Encryption related errors inetErrEncryptionNotAvail = inetErrorClass or 39; // Need to re-send transaction because server told us to reset our // encryption sequence number inetErrNeedRetryEncSeqNum = inetErrorClass or 40; // Need to re-send transaction because server sent us a new // public key to use. inetErrNeedRetryEncPublicKey = inetErrorClass or 41; inetErrResponseTooShort = inetErrorClass or 42; // errors specific to handling Mobitex ILLEGAL responses inetErrMobitexIllegalOKHost = inetErrorClass or 43; inetErrMobitexIllegalBadHost = inetErrorClass or 44; // see error 92 also // HTTP errors inetErrHTTPBadRequest = inetErrorClass or 45; inetErrHTTPUnauthorized = inetErrorClass or 46; inetErrHTTPForbidden = inetErrorClass or 47; inetErrHTTPNotFound = inetErrorClass or 48; inetErrHTTPMethodNotAllowed = inetErrorClass or 49; inetErrHTTPNotAcceptable = inetErrorClass or 50; inetErrHTTPProxyAuthRequired = inetErrorClass or 51; inetErrHTTPRequestTimeout = inetErrorClass or 52; inetErrHTTPConflict = inetErrorClass or 53; inetErrHTTPGone = inetErrorClass or 54; inetErrHTTPLengthRequired = inetErrorClass or 55; inetErrHTTPPreconditionFailed = inetErrorClass or 56; inetErrHTTPRequestTooLarge = inetErrorClass or 57; inetErrHTTPRequestURITooLong = inetErrorClass or 58; inetErrHTTPUnsupportedType = inetErrorClass or 59; inetErrHTTPServerError = inetErrorClass or 60; // CTP errors inetErrCTPServerError = inetErrorClass or 61; // Cache errors inetErrTypeNotCached = inetErrorClass or 62; inetErrCacheInvalid = inetErrorClass or 63; // Palm: and PalmCall: scheme errors inetErrURLDispatched = inetErrorClass or 64; inetErrDatabaseNotFound = inetErrorClass or 65; inetErrCTPMalformedRequest = inetErrorClass or 66; inetErrCTPUnknownCommand = inetErrorClass or 67; inetErrCTPTruncated = inetErrorClass or 68; inetErrCTPUnknownError = inetErrorClass or 69; inetErrCTPProxyError = inetErrorClass or 70; inetErrCTPSocketErr = inetErrorClass or 71; inetErrCTPInvalidURL = inetErrorClass or 72; inetErrCTPReferringPageOutOfDate = inetErrorClass or 73; inetErrCTPBadRequest = inetErrorClass or 74; inetErrUNUSED = inetErrorClass or 75; inetErrCTPMailServerDown = inetErrorClass or 76; inetErrCTPHostNotFound = inetErrorClass or 77; // Content Conversion Errors inetErrCTPContentInvalidTag = inetErrorClass or 78; inetErrCTPContentInternal = inetErrorClass or 79; inetErrCTPContentDataEnd = inetErrorClass or 80; inetErrCTPContentResourceTooBig = inetErrorClass or 81; inetErrCTPContentNoNoFrames = inetErrorClass or 82; inetErrCTPContentUnsupportedContent = inetErrorClass or 83; inetErrCTPContentUnsupportedEncoding = inetErrorClass or 84; inetErrCTPContentBadForm = inetErrorClass or 85; inetErrCTPContentBadFormMissingAction = inetErrorClass or 86; inetErrCTPContentBadFormMissingMethod = inetErrorClass or 87; inetErrCTPContentNoSourceData = inetErrorClass or 88; inetErrCTPContentBadImage = inetErrorClass or 89; inetErrCTPContentImageTooLarge = inetErrorClass or 90; // Mobitex illegal handled error code. This error is sent after //INetLib handles inetErrMobitexIllegalOKHost or inetErrMobitexIllegalBadHost //errors. The application needs to know that something went wrong and it needs //to change state. This error does not need to be displayed to the user. inetErrMobitexErrorHandled = inetErrorClass or 91; // Proxy down, non-default host, show dialog asking to revert to default inetErrProxyDownBadHost = inetErrorClass or 92; // A second type of readtime. This should occur only when some data is received // and the connection is lost. inetErrHostConnectionLost = inetErrorClass or 93; // Unable to locate link record within a PQA file inetErrLinkNotFound = inetErrorClass or 94; inetErrCacheInvalidSort = inetErrorClass or 95; // The following are used and bit field parameters to the sort routine. They // are additive but ordered. Precendence is given to the lowest ordered bit. inetCacheCompareByMasterURL = $01; inetCacheCompareByURL = $02; inetCacheCompareByTime = $04; (******************************************************************** * Input flags ********************************************************************) //----------------------------------------------------------------------------- // flag word definitions for INetLibURLOpen //----------------------------------------------------------------------------- inetOpenURLFlagLookInCache = $0001; inetOpenURLFlagKeepInCache = $0002; inetOpenURLFlagForceEncOn = $0008; // use encryption even if // scheme does not desire it inetOpenURLFlagForceEncOff = $0010; // no encryption even if // scheme desires it //----------------------------------------------------------------------------- // flag word definitions for INetURLInfo. These flags bits are set in the // flags field of the INetURLINfoType structure by INetLibURLGetInfo() //----------------------------------------------------------------------------- inetURLInfoFlagIsSecure = $0001; inetURLInfoFlagIsRemote = $0002; inetURLInfoFlagIsInCache = $0004; (******************************************************************** * Configuration Support ********************************************************************) //----------------------------------------------------------------------------- // Names of built-in configuration aliases available through the // INetLibConfigXXX calls //----------------------------------------------------------------------------- inetCfgNameDefault = '.Default'; // The default configuration inetCfgNameDefWireline = '.DefWireline'; // The default wireline configuration inetCfgNameDefWireless = '.DefWireless'; // The default wireless configuration inetCfgNameCTPDefault = '.CTPDefault'; // Points to either .CTPWireline or .CTPWireless inetCfgNameCTPWireline = '.CTPWireline'; // Wireline through the Jerry Proxy inetCfgNameCTPWireless = '.CTPWireless'; // Wireless through the Jerry Proxy //-------------------------------------------------------------------- // Structure of a configuration name. Used by INetLibConfigXXX calls //--------------------------------------------------------------------- const inetConfigNameSize = 32; type INetConfigNameType = record name: array [0..inetConfigNameSize-1] of Char; // name of configuration end; INetConfigNamePtr = ^INetConfigNameType; (******************************************************************** * Scheme Types ********************************************************************) type INetSchemeEnum = WordEnum; //!!! const inetSchemeUnknown = -1; inetSchemeDefault = 0; inetSchemeHTTP = Succ(inetSchemeDefault); // http: inetSchemeHTTPS = Succ(inetSchemeHTTP); // https: inetSchemeFTP = Succ(inetSchemeHTTPS); // ftp: inetSchemeGopher = Succ(inetSchemeFTP); // gopher: inetSchemeFile = Succ(inetSchemeGopher); // file: inetSchemeNews = Succ(inetSchemeFile); // news: inetSchemeMailTo = Succ(inetSchemeNews); // mailto: inetSchemePalm = Succ(inetSchemeMailTo); // palm: inetSchemePalmCall = Succ(inetSchemePalm); // palmcall: inetSchemeMail = Succ(inetSchemePalmCall); // not applicable to URLS, but used // for the INetLibSockOpen call when // creating a socket for mail IO inetSchemeMac = Succ(inetSchemeMail); // mac: - Mac file system HTML inetSchemeFirst = inetSchemeHTTP; // first one inetSchemeLast = inetSchemeMail; // last one (******************************************************************** * Scheme Ports ********************************************************************) const inetPortFTP = 21; inetPortHTTP = 80; inetPortGopher = 70; inetPortNews = 119; inetPortHTTPS = 44; (******************************************************************** * Structure of a cracked URL. ********************************************************************) type INetURLType = record version: UInt16; // should be 0, for future compatibility schemeP: ^UInt8; // ptr to scheme portion schemeLen: UInt16; // size of scheme portion schemeEnum: UInt16; // INetSchemEnum usernameP: ^UInt8; // ptr to username portion usernameLen: UInt16; // size of username passwordP: ^UInt8; // ptr to password portion passwordLen: UInt16; // size of password hostnameP: ^UInt8; // ptr to host name portion hostnameLen: UInt16; // size of host name port: UInt16; // port number pathP: ^UInt8; // ptr to path portion pathLen: UInt16; // size of path paramP: ^UInt8; // param (;param) paramLen: UInt16; // size of param queryP: ^UInt8; // query (?query) queryLen: UInt16; // size of query fragP: ^UInt8; // fragment (#frag) fragLen: UInt16; // size of fragment end; (******************************************************************** * Structure for INetURLInfo. This structure is filled in with info * about a URL. ********************************************************************) type INetURLInfoType = record version: UInt16; // should be 0, for future compatibility flags: UInt16; // flags word, one or ore of // inetURLInfoFlagXXX flags undefined: UInt32; // reserved for future use end; (******************************************************************** * Content and Compression Type Enums(from proxy server or PQA Builder) ********************************************************************) type INetContentTypeEnum = Enum; const inetContentTypeTextPlain = 0; inetContentTypeTextHTML = Succ(inetContentTypeTextPlain); inetContentTypeImageGIF = Succ(inetContentTypeTextHTML); inetContentTypeImageJPEG = Succ(inetContentTypeImageGIF); inetContentTypeApplicationCML = Succ(inetContentTypeImageJPEG); inetContentTypeImagePalmOS = Succ(inetContentTypeApplicationCML); inetContentTypeOthe = Succ(inetContentTypeImagePalmOS); type INetCompressionTypeEnum = Enum; const inetCompressionTypeNone = 0; inetCompressionTypeBitPacked = Succ(inetCompressionTypeNone); inetCompressionTypeLZ77 = Succ(inetCompressionTypeBitPacked); inetCompressionTypeBest = Succ(inetCompressionTypeLZ77); inetCompressionTypeLZ77Primer1 = Succ(inetCompressionTypeBest); (******************************************************************** * Proxy Types ********************************************************************) type INetProxyEnum = Enum; const inetProxyNone = 0; // no proxy inetProxyCTP = 1; // CTP (Jerry) proxy (******************************************************************** * Transport Types ********************************************************************) type INetTransportEnum = Enum; const inetTransportPPP = 0; // PPP inetTransportMobitex = 1; // Mobitex (******************************************************************** * Settings for the INetLibSettingSet/Get call. ********************************************************************) type INetSettingEnum = Enum; const inetSettingProxyType = 0; // (RW) UInt32, INetProxyEnum inetSettingProxyName = Succ(inetSettingProxyType); // (RW) Char[], name of proxy inetSettingProxyPort = Succ(inetSettingProxyName); // (RW) UInt32, TCP port # of proxy inetSettingProxySocketType = Succ(inetSettingProxyPort); // (RW) UInt32, which type of socket to use // netSocketTypeXXX inetSettingCacheSize = Succ(inetSettingProxySocketType); // (RW) UInt32, max size of cache inetSettingCacheRef = Succ(inetSettingCacheSize); // (R) DmOpenRef, ref of cache DB inetSettingNetLibConfig = Succ(inetSettingCacheRef); // (RW) UInt32, Which NetLib config to use. inetSettingRadioID = Succ(inetSettingNetLibConfig); // (R) UInt32[2], the 64-bit radio ID inetSettingBaseStationID = Succ(inetSettingRadioID); // (R) UInt32, the radio base station ID inetSettingMaxRspSize = Succ(inetSettingBaseStationID); // (W) UInt32 (in bytes) inetSettingConvAlgorithm = Succ(inetSettingMaxRspSize); // (W) UInt32 (CTPConvEnum) inetSettingContentWidth = Succ(inetSettingConvAlgorithm); // (W) UInt32 (in pixels) inetSettingContentVersion = Succ(inetSettingContentWidth); // (W) UInt32 Content version (encoder version) inetSettingNoPersonalInfo = Succ(inetSettingContentVersion); // (RW) UInt32 send no deviceID/zipcode inetSettingUserName = Succ(inetSettingNoPersonalInfo); //--------------------------------------------------------------------------------- // New Settings as of PalmOS 4.0 //--------------------------------------------------------------------------------- inetSettingGraphicsSel = Succ(inetSettingUserName); // (W) UInt8 (User Graphics selection) inetSettingTransportType = Succ(inetSettingGraphicsSel); // (RW) UInt32, INetTransportEnum inetSettingServerBits1 = Succ(inetSettingTransportType); // (RW) UInt32, bits sent by the server over ctp inetSettingSendRawLocationInfo = Succ(inetSettingServerBits1); // (W) Boolean, make the handheld send its Raw Location information. // One use of this feature is to convert Web clipping's "%Location:..." codes into content info inetSettingEnableCookies = Succ(inetSettingSendRawLocationInfo); // (RW) Boolean // true: Cookies are enabled // false: Cookies are disabled (default) inetSettingMaxCookieJarSize = Succ(inetSettingEnableCookies); // (RW) UInt32, maximum cookie jar size in // in kilobytes // The following setting is a new interface in PalmOS 4.0 that allow Clipper // or other INetLib clients to get raw location information as described in // PalmLocRawData.h. // INetLib will return a pointer to a newly allocated memory buffer containing // the raw location information to send to Elaine (Web Clipping proxy server). // Elaine will then use a Windows DLL to analyse the raw location information // in order to transform it into something useful like zipcode, cityname, etc. // See PalmLocRawData.h for more details... inetSettingLocRawInfo = Succ(inetSettingMaxCookieJarSize); // (R) void* Allocated memory buffer - must be free by caller // The following affect how the "Web Clipping" panel will edit the // configuration. When "reset to default" is pressed, these default // values will be copied back into the appropriate place. // If the field is set to not be editable, the panel will not allow // the user to change it inetSettingProxyNameDefault = Succ(inetSettingLocRawInfo); // Default Name for this config inetSettingProxyPortDefault = Succ(inetSettingProxyNameDefault); // Default Port for this config inetSettingProxyNameEditable = Succ(inetSettingProxyPortDefault); // Is the proxy name editable? inetSettingProxyPortEditable = Succ(inetSettingProxyNameEditable); // Is the proxy port editable? inetSettingPalmUserID = Succ(inetSettingProxyPortEditable); // The palm.net user id inetSettingLast = Succ(inetSettingPalmUserID); (******************************************************************** * Settings for the INetLibSockSettingSet/Get call. ********************************************************************) type INetSockSettingEnum = Enum; const inetSockSettingScheme = 0; // (R) UInt32, INetSchemeEnum inetSockSettingSockContext = Succ(inetSockSettingScheme); // (RW) UInt32, inetSockSettingCompressionType = Succ(inetSockSettingSockContext); // (R) Char[] inetSockSettingCompressionTypeID = Succ(inetSockSettingCompressionType); // (R) UInt32 (INetCompressionTypeEnum) inetSockSettingContentType = Succ(inetSockSettingCompressionTypeID); // (R) Char[] inetSockSettingContentTypeID = Succ(inetSockSettingContentType); // (R) UInt32 (INetContentTypeEnum) inetSockSettingData = Succ(inetSockSettingContentTypeID); // (R) UInt32, pointer to data inetSockSettingDataHandle = Succ(inetSockSettingData); // (R) UInt32, MemHandle to data inetSockSettingDataOffset = Succ(inetSockSettingDataHandle); // (R) UInt32, offset to data from MemHandle inetSockSettingTitle = Succ(inetSockSettingDataOffset); // (RW) Char[] inetSockSettingURL = Succ(inetSockSettingTitle); // (R) Char[] inetSockSettingIndexURL = Succ(inetSockSettingURL); // (RW) Char[] inetSockSettingFlags = Succ(inetSockSettingIndexURL); // (W) UInt16, one or more of // inetOpenURLFlagXXX flags inetSockSettingReadTimeout = Succ(inetSockSettingFlags); // (RW) UInt32. Read timeout in ticks inetSockSettingContentVersion = Succ(inetSockSettingReadTimeout); // (R) UInt32, version number for content inetSockSettingLast = Succ(inetSockSettingContentVersion); (******************************************************************** * Possible socket status values that can be returned from INetLibSockStatus ********************************************************************) type INetStatusEnum = Enum; const inetStatusNew = 0; // just opened inetStatusResolvingName = Succ(inetStatusNew); // looking up host address inetStatusNameResolved = Succ(inetStatusResolvingName); // found host address inetStatusConnecting = Succ(inetStatusNameResolved); // connecting to host inetStatusConnected = Succ(inetStatusConnecting); // connected to host inetStatusSendingRequest = Succ(inetStatusConnected); // sending request inetStatusWaitingForResponse = Succ(inetStatusSendingRequest); // waiting for response inetStatusReceivingResponse = Succ(inetStatusWaitingForResponse); // receiving response inetStatusResponseReceived = Succ(inetStatusReceivingResponse); // response received inetStatusClosingConnection = Succ(inetStatusResponseReceived); // closing connection inetStatusClosed = Succ(inetStatusClosingConnection); // closed inetStatusAcquiringNetwork = Succ(inetStatusClosed); // network temporarily // unreachable; socket on hold inetStatusPrvInvalid = 30; // internal value, not // returned by INetMgr. Should // be last. (******************************************************************** * HTTP Attributes which can be set/get using the * INetLibHTTPAttrSet/Get calls. * * Generally, attributes are only set BEFORE calling * INetLibSockHTTPReqSend * and attributes are only gotten AFTER the complete response * has been received. * * Attributes marked with the following flags: * (R) - read only * (W) - write only * (RW) - read/write * (-) - not implemented yet ********************************************************************) type INetHTTPAttrEnum = Enum; const // local error trying to communicate with server, if any inetHTTPAttrCommErr = 0; // (R) UInt32, read-only // object attributes, defined at creation inetHTTPAttrEntityURL = Succ(inetHTTPAttrCommErr); // (-) Char[], which resource was requested //----------------------------------------------------------- // Request only attributes //----------------------------------------------------------- inetHTTPAttrReqAuthorization = Succ(inetHTTPAttrEntityURL); // (-) Char[] inetHTTPAttrReqFrom = Succ(inetHTTPAttrReqAuthorization); // (-) Char[] inetHTTPAttrReqIfModifiedSince = Succ(inetHTTPAttrReqFrom); // (-) UInt32 inetHTTPAttrReqReferer = Succ(inetHTTPAttrReqIfModifiedSince); // (-) Char[] // The following are ignored unless going through a CTP proxy inetHTTPAttrWhichPart = Succ(inetHTTPAttrReqReferer); // (W) UInt32 (0 -> N) inetHTTPAttrIncHTTP = Succ(inetHTTPAttrWhichPart); // (W) UInt32 (Boolean) only applicable // when inetHTTPAttrConvAlgorithm set to // ctpConvNone inetHTTPAttrCheckMailHi = Succ(inetHTTPAttrIncHTTP); // (W) UInt32 inetHTTPAttrCheckMailLo = Succ(inetHTTPAttrCheckMailHi); // (W) UInt32 inetHTTPAttrReqContentVersion = Succ(inetHTTPAttrCheckMailLo); // (W) UInt32 Desired content version. Represented // as 2 low bytes. Lowest byte is minor version, // next higher byte is major version. //-------------------------------------------------------------- // Response only attributes //-------------------------------------------------------------- // Server response info inetHTTPAttrRspAll = Succ(inetHTTPAttrReqContentVersion); // (-) Char[] - entire HTTP response including // data inetHTTPAttrRspSize = Succ(inetHTTPAttrRspAll); // (R) UInt32 - entire HTTP Response size including // header and data inetHTTPAttrRspVersion = Succ(inetHTTPAttrRspSize); // (-) Char[] inetHTTPAttrResult = Succ(inetHTTPAttrRspVersion); // (R) UInt32 (ctpErrXXX when using CTP Proxy) inetHTTPAttrErrDetail = Succ(inetHTTPAttrResult); // (R) UInt32 (server/proxy err code when // using CTP Proxy) inetHTTPAttrReason = Succ(inetHTTPAttrErrDetail); // (R) Char[] inetHTTPAttrDate = Succ(inetHTTPAttrReason); // (-) UInt32 inetHTTPAttrNoCache = Succ(inetHTTPAttrDate); // (-) UInt32 inetHTTPAttrPragma = Succ(inetHTTPAttrNoCache); // (-) Char[] inetHTTPAttrServer = Succ(inetHTTPAttrPragma); // (-) Char[] inetHTTPAttrWWWAuthentication = Succ(inetHTTPAttrServer); // (-) Char[] // Returned entity attributes inetHTTPAttrContentAllow = Succ(inetHTTPAttrWWWAuthentication); // (-) Char[] inetHTTPAttrContentLength = Succ(inetHTTPAttrContentAllow); // (R) UInt32 inetHTTPAttrContentLengthUncompressed = Succ(inetHTTPAttrContentLength); // (R) UInt32 (in bytes) inetHTTPAttrContentPtr = Succ(inetHTTPAttrContentLengthUncompressed); // (-) Char * inetHTTPAttrContentExpires = Succ(inetHTTPAttrContentPtr); // (-) UInt32 inetHTTPAttrContentLastModified = Succ(inetHTTPAttrContentExpires); // (-) UInt32 inetHTTPAttrContentLocation = Succ(inetHTTPAttrContentLastModified); // (-) Char[] inetHTTPAttrContentLengthUntruncated = Succ(inetHTTPAttrContentLocation); // (R) UInt32 inetHTTPAttrContentVersion = Succ(inetHTTPAttrContentLengthUntruncated); // (R) UInt32, actual content version. Represented // as 2 low bytes. Lowest byte is minor version, // next higher byte is major version. inetHTTPAttrContentCacheID = Succ(inetHTTPAttrContentVersion); // (R) UInt32, cacheID for this item inetHTTPAttrReqSize = Succ(inetHTTPAttrContentCacheID); // (R) UInt32 size of request sent (******************************************************************** * Structure of our Internet events. This structure is a superset of * the regular event type. Note that we use the first 2 user events * for the Internet Library so any app that uses this library must be * to use user event IDs greater than inetLastEvent. * * library refNum in it.... ********************************************************************) const inetSockReadyEvent = firstINetLibEvent; inetSockStatusChangeEvent = firstINetLibEvent + 1; inetLastEvent = firstINetLibEvent + 1; type generic = record datum: array [0..7] of UInt16; end; inetSockReady = record sockH: MemHandle; // socket MemHandle context: UInt32; // application defined inputReady: Boolean; // true if ready for reads outputReady: Boolean; // true if ready for writes end; inetSockStatusChange = record sockH: MemHandle; // socket MemHandle context: UInt32; // application defined status: UInt16; // new status sockErr: Err; // socket err, if any end; INetEventType = record eType: UInt16; penDown: Boolean; reserved: UInt8; screenX: Int16; screenY: Int16; case Integer of 0: (generic: generic); 1: (inetSockReady: inetSockReady); 2: (inetSockStatusChange: inetSockStatusChange); end; (******************************************************************** * Commands for INetLibWirelessIndicatorCmd (and INetLibWiCmd) ********************************************************************) type WiCmdEnum = Enum; const wiCmdInit = 0; wiCmdClear = Succ(wiCmdInit); wiCmdSetEnabled = Succ(wiCmdClear); wiCmdDraw = Succ(wiCmdSetEnabled); wiCmdEnabled = Succ(wiCmdDraw); wiCmdSetLocation = Succ(wiCmdEnabled); wiCmdEras = Succ(wiCmdSetLocation); (******************************************************************** * INet Library functions. ********************************************************************) type INetLibTrapNumberEnum = Enum; const inetLibTrapSettingGet = sysLibTrapCustom; inetLibTrapSettingSet = Succ(inetLibTrapSettingGet); inetLibTrapGetEvent = Succ(inetLibTrapSettingSet); inetLibTrapURLOpen = Succ(inetLibTrapGetEvent); inetLibTrapSockRead = Succ(inetLibTrapURLOpen); inetLibTrapSockWrite = Succ(inetLibTrapSockRead); inetLibTrapSockOpen = Succ(inetLibTrapSockWrite); inetLibTrapSockClose = Succ(inetLibTrapSockOpen); inetLibTrapSockStatus = Succ(inetLibTrapSockClose); inetLibTrapSockSettingGet = Succ(inetLibTrapSockStatus); inetLibTrapSockSettingSet = Succ(inetLibTrapSockSettingGet); inetLibTrapSockConnect = Succ(inetLibTrapSockSettingSet); // Utilities inetLibTrapURLCrack = Succ(inetLibTrapSockConnect); inetLibTrapURLsAdd = Succ(inetLibTrapURLCrack); inetLibTrapURLsCompare = Succ(inetLibTrapURLsAdd); inetLibTrapURLGetInfo = Succ(inetLibTrapURLsCompare); // HTTP calls inetLibTrapSockHTTPReqCreate = Succ(inetLibTrapURLGetInfo); inetLibTrapSockHTTPAttrSet = Succ(inetLibTrapSockHTTPReqCreate); inetLibTrapSockHTTPReqSend = Succ(inetLibTrapSockHTTPAttrSet); inetLibTrapSockHTTPAttrGet = Succ(inetLibTrapSockHTTPReqSend); // Mail traps inetLibTrapSockMailReqCreate = Succ(inetLibTrapSockHTTPAttrGet); inetLibTrapSockMailAttrSet = Succ(inetLibTrapSockMailReqCreate); inetLibTrapSockMailReqAdd = Succ(inetLibTrapSockMailAttrSet); inetLibTrapSockMailReqSend = Succ(inetLibTrapSockMailReqAdd); inetLibTrapSockMailAttrGet = Succ(inetLibTrapSockMailReqSend); inetLibTrapSockMailQueryProgress = Succ(inetLibTrapSockMailAttrGet); // Cache calls inetLibTrapCacheList = Succ(inetLibTrapSockMailQueryProgress); inetLibTrapCacheGetObject = Succ(inetLibTrapCacheList); // Config calls inetLibConfigMakeActive_ = Succ(inetLibTrapCacheGetObject); inetLibConfigList_ = Succ(inetLibConfigMakeActive_); inetLibConfigIndexFromName_ = Succ(inetLibConfigList_); inetLibConfigDelete_ = Succ(inetLibConfigIndexFromName_); inetLibConfigSaveAs_ = Succ(inetLibConfigDelete_); inetLibConfigRename_ = Succ(inetLibConfigSaveAs_); inetLibConfigAliasSet_ = Succ(inetLibConfigRename_); inetLibConfigAliasGet_ = Succ(inetLibConfigAliasSet_); //old wireless Indicator inetLibTrapWiCmd = Succ(inetLibConfigAliasGet_); // File Calls inetLibTrapSockFileGetByIndex = Succ(inetLibTrapWiCmd); inetLibTrapCheckAntennaState = Succ(inetLibTrapSockFileGetByIndex); inetLibTrapCTPSend = Succ(inetLibTrapCheckAntennaState); // Additional Cache calls inetLibTrapCachePurge = Succ(inetLibTrapCTPSend); // new wireless Indicator inetLibTrapWirelessIndicatorCmd = Succ(inetLibTrapCachePurge); // Additional Cache calls inetLibTrapCacheGetObjectV2 = Succ(inetLibTrapWirelessIndicatorCmd); inetLibTrapIndexedCacheFind = Succ(inetLibTrapCacheGetObjectV2); inetLibTrapPrepareCacheForHistory = Succ(inetLibTrapIndexedCacheFind); //This should be at the END *********** inetLibTrapLast = Succ(inetLibTrapPrepareCacheForHistory); (******************************************************************** * Structure of cache entry * Used as a parameter to INetLibCacheList. If urlP or titleP are NULL, * the corresponding length fields will be updated with the desired lengths ********************************************************************) type INetCacheEntryType = record urlP: ^UInt8; urlLen: UInt16; titleP: ^UInt8; titleLen: UInt16; lastViewed: UInt32; // seconds since 1/1/1904 firstViewed: UInt32; // seconds since 1/1/1904 end; INetCacheEntryP = ^INetCacheEntryType; (******************************************************************** * Structure for INetLibCacheGetObject. This structure is filled in with info * about a cache entry. ********************************************************************) type INetCacheInfoType = record recordH: MemHandle; contentType: INetContentTypeEnum; encodingType: INetCompressionTypeEnum; uncompressedDataSize: UInt32; flags: UInt8; reserved: UInt8; dataOffset: UInt16; // offset to content dataLength: UInt16; // size of content urlOffset: UInt16; // offset to URL viewTime: UInt32; // time last viewed createTime: UInt32; // time entry was created murlOffset: UInt16; // offset to master URL serverBits1: UInt32; // Bits sent by the server end; INetCacheInfoPtr = ^INetCacheInfoType; //-------------------------------------------------- // Library initialization, shutdown, sleep and wake //-------------------------------------------------- function INetLibOpen(libRefnum: UInt16; config: UInt16; flags: UInt32; cacheRef: DmOpenRef; cacheSize: UInt32; var inetHP: MemHandle): Err; syscall sysLibTrapOpen; function INetLibClose(libRefnum: UInt16; inetH: MemHandle): Err; syscall sysLibTrapClose; function INetLibSleep(libRefnum: UInt16): Err; syscall sysLibTrapSleep; function INetLibWake(libRefnum: UInt16): Err; syscall sysLibTrapWake; //-------------------------------------------------- // Settings //-------------------------------------------------- function INetLibSettingGet(libRefnum: UInt16; inetH: MemHandle; setting: UInt16 {INetSettingEnum}; bufP: Pointer; var bufLenP: UInt16): Err; syscall inetLibTrapSettingGet; function INetLibSettingSet(libRefnum: UInt16; inetH: MemHandle; setting: UInt16 {INetSettingEnum}; bufP: Pointer; bufLen: UInt16): Err; syscall inetLibTrapSettingSet; //-------------------------------------------------- // Event Management //-------------------------------------------------- procedure INetLibGetEvent(libRefnum: UInt16; inetH: MemHandle; var eventP: INetEventType; timeout: Int32); syscall inetLibTrapGetEvent; //-------------------------------------------------- // High level calls //-------------------------------------------------- function INetLibURLOpen(libRefnum: UInt16; inetH: MemHandle; var urlP, cacheIndexURLP: UInt8; var sockHP: MemHandle; timeout: Int32; flags: UInt16): Err; syscall inetLibTrapURLOpen; function INetLibCTPSend(libRefnum: UInt16; inetH: MemHandle; var sockHP: MemHandle; var writeP: UInt8; writelen: UInt32; timeout: Int32; ctpCommand: UInt16): Err; syscall inetLibTrapCTPSend; function INetLibSockClose(libRefnum: UInt16; socketH: MemHandle): Err; syscall inetLibTrapSockClose; //-------------------------------------------------- // Read/Write //-------------------------------------------------- function INetLibSockRead(libRefnum: UInt16; sockH: MemHandle; bufP: Pointer; reqBytes: UInt32; var actBytesP: UInt32; timeout: Int32): Err; syscall inetLibTrapSockRead; function INetLibSockWrite(libRefnum: UInt16; sockH: MemHandle; bufP: Pointer; reqBytes: UInt32; var actBytesP: UInt32; timeout: Int32): Err; syscall inetLibTrapSockWrite; //-------------------------------------------------- // Low level Socket calls //-------------------------------------------------- function INetLibSockOpen(libRefnum: UInt16; inetH: MemHandle; scheme: UInt16 {INetSchemEnum}; var sockHP: MemHandle): Err; syscall inetLibTrapSockOpen; function INetLibSockStatus(libRefnum: UInt16; socketH: MemHandle; var statusP: UInt16; var sockErrP: Err; var inputReadyP, outputReadyP: Boolean): Err; syscall inetLibTrapSockStatus; function INetLibSockSettingGet(libRefnum: UInt16; socketH: MemHandle; setting: UInt16 {INetSockSettingEnum}; bufP: Pointer; var bufLenP: UInt16): Err; syscall inetLibTrapSockSettingGet; function INetLibSockSettingSet(libRefnum: UInt16; socketH: MemHandle; setting: UInt16 {INetSockSettingEnum}; bufP: Pointer; bufLen: UInt16): Err; syscall inetLibTrapSockSettingSet; function INetLibSockConnect(libRefnum: UInt16; sockH: MemHandle; var hostnameP: UInt8; port: UInt16; timeou: Int32): Err; syscall inetLibTrapSockConnect; //-------------------------------------------------- // HTTP specific calls //-------------------------------------------------- function INetLibSockHTTPReqCreate(libRefnum: UInt16; sockH: MemHandle; var verbP, resNameP, refererP: UInt8): Err; syscall inetLibTrapSockHTTPReqCreate; function INetLibSockHTTPAttrSet(libRefnum: UInt16; sockH: MemHandle; attr: UInt16 {inetHTTPAttrEnum}; attrIndex: UInt16; var bufP: UInt8; bufLen, flags: UInt16): Err; syscall inetLibTrapSockHTTPAttrSet; function INetLibSockHTTPReqSend(libRefnum: UInt16; sockH: MemHandle; writeP: Pointer; writeLen: UInt32; timeout: Int32): Err; syscall inetLibTrapSockHTTPReqSend; function INetLibSockHTTPAttrGet(libRefnum: UInt16; sockH: MemHandle; attr: UInt16 {inetHTTPAttrEnum}; attrIndex: UInt16; bufP: Pointer; var bufLenP: UInt32): Err; syscall inetLibTrapSockHTTPAttrGet; //-------------------------------------------------- // Utilities //-------------------------------------------------- function INetLibURLCrack(libRefnum: UInt16; var urlTextP: UInt8; var urlP: INetURLType): Err; syscall inetLibTrapURLCrack; function INetLibURLsAdd(libRefnum: UInt16; baseURLStr, embeddedURLStr, resultURLStr: PChar; var resultLenP: UInt16): Err; syscall inetLibTrapURLsAdd; function INetLibURLsCompare(libRefnum: UInt16; URLStr1, URLStr2: PChar): Int16; syscall inetLibTrapURLsCompare; function INetLibURLGetInfo(libRefnum: UInt16; inetH: MemHandle; var urlTextP: UInt8; var urlInfoP: INetURLInfoType): Err; syscall inetLibTrapURLGetInfo; type int = SmallInt; function INetLibWiCmd(refNum: UInt16; cmd: UInt16 {WiCmdEnum}; enableOrX, y: int): Boolean; syscall inetLibTrapWiCmd; function INetLibWirelessIndicatorCmd(refNum: UInt16; inetH: MemHandle; {WiCmdEnum} cmd: UInt16; enableOrX, y: int): Boolean; syscall inetLibTrapWirelessIndicatorCmd; function INetLibCheckAntennaState(refNum: UInt16): Err; syscall inetLibTrapCheckAntennaState; //-------------------------------------------------- // Cache interface //-------------------------------------------------- function INetLibCacheList(libRefnum: UInt16; inetH: MemHandle; var cacheIndexURLP: UInt8; var indexP: UInt16; var uidP: UInt32; cacheP: INetCacheEntryP): Err; syscall inetLibTrapCacheList; function INetLibCacheGetObject(libRefnum: UInt16; clientParamH: MemHandle; var urlTextP: UInt8; uniqueID: UInt32; cacheInfoP: INetCacheInfoPtr): Err; syscall inetLibTrapCacheGetObject; function INetLibCachePurge(libRefnum: UInt16; clientParamH: MemHandle; var urlTextP: UInt8; uniqueID: UInt32): Err; syscall inetLibTrapCachePurge; function INetLibCacheGetObjectV2(libRefnum: UInt16; clientParamH: MemHandle; var urlTextP: UInt8; uniqueID: UInt32; rcIndex: UInt16; cacheInfoP: INetCacheInfoPtr; cacheEntryP: INetCacheEntryP): Err; syscall inetLibTrapCacheGetObjectV2; function INetLibIndexedCacheFind(libRefnum: UInt16; cacheDBRef: DmOpenRef; var dataP: UInt8; lookFor: Int16; var indexP: UInt16; order: Int16; var cacheIdP: UInt32): Err; syscall inetLibTrapIndexedCacheFind; function INetLibPrepareCacheForHistory(libRefnum: UInt16; clientParamH: MemHandle): Err; syscall inetLibTrapPrepareCacheForHistory; //-------------------------------------------------- // Configuration Calls //-------------------------------------------------- function INetLibConfigMakeActive(refNum: UInt16; inetH: MemHandle; configIndex: UInt16): Err; syscall inetLibConfigMakeActive_; function INetLibConfigList(refNum: UInt16; var nameArray{[]}: INetConfigNameType; var arrayEntriesP: UInt16): Err; syscall inetLibConfigList_; function INetLibConfigIndexFromName(refNum: UInt16; nameP: INetConfigNamePtr; var indexP: UInt16): Err; syscall inetLibConfigIndexFromName_; function INetLibConfigDelete(refNum: UInt16; index: UInt16): Err; syscall inetLibConfigDelete_; function INetLibConfigSaveAs(refNum: UInt16; inetH: MemHandle; nameP: INetConfigNamePtr): Err; syscall inetLibConfigSaveAs_; function INetLibConfigRename(refNum: UInt16; index: UInt16; newNameP: INetConfigNamePtr): Err; syscall inetLibConfigRename_; function INetLibConfigAliasSet(refNum: UInt16; configIndex, aliasToIndex: UInt16): Err; syscall inetLibConfigAliasSet_; function INetLibConfigAliasGet(refNum: UInt16; aliasIndex: UInt16; var indexP: UInt16; var isAnotherAliasP: Boolean): Err; syscall inetLibConfigAliasGet_; //-------------------------------------------------- // File specific calls //-------------------------------------------------- function INetLibSockFileGetByIndex(libRefnum: UInt16; sockH: MemHandle; index: UInt32; var handleP: MemHandle; var offsetP, lengthP: UInt32): Err; syscall inetLibTrapSockFileGetByIndex; implementation end.