blob: 9e49fbfa1a2be86f93563ee7642cec46de924ed7 [file] [log] [blame]
/**********************************************************************
// @@@ START COPYRIGHT @@@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
// @@@ END COPYRIGHT @@@
**********************************************************************/
/*
*
* CEE configuration records and constants.
*
*/
module CEECFG {
//
// The following types are used for SKI configuration.
//
//
// !MemoryDebug
//
// If set to true then a number of memory debugging features are enabled.
// Not recommended if high performance is required.
//
// Default is false. (Use CMU -c for current values).
//
typedef boolean MemoryDebug;
//
// !MaxConfiguredObjects
//
// Maximum number of objects that can be configured with
// CEE_OBJECT_CONFIGURE.
//
// Default is 1024.
//
typedef unsigned long MaxConfiguredObjects;
//
// !MaxInterfaces
//
// Maximum number of interfaces that can be created with
// CEE_INTERFACE_CREATE.
//
// Default is 256.
//
typedef unsigned long MaxInterfaces;
//
// !MaxImplementations
//
// Maximum number of implementations that can be created with
// CEE_IMPLEMENTATION_CREATE.
//
// Default is 256.
//
typedef unsigned long MaxImplementations;
//
// !MaxAsynchIOs
//
// Maximum number of asynchrononous I/O's that can be outstanding
// at any time.
//
// Default is 1024.
//
typedef unsigned long MaxAsynchIOs;
//
// !MaxObjrefSize
//
// Maximum number of bytes (characters) in an object reference including the
// terminating null.
//
// Default is 128.
//
typedef unsigned long MaxObjrefSize;
//
// !MaxProxies
//
// Maximum number of proxies that can be created with CEE_PROXY_CREATE.
//
// Default is 10000.
//
typedef unsigned long MaxProxies;
//
// !MaxObjects
//
// Maximum number of objects. Sum of configured objects and dynamic
// objects created with CEE_OBJECT_CREATE.
//
// Default is 10000.
//
typedef unsigned long MaxObjects;
//
// !MaxSignalHandlers
//
// Maximum number of signal handlers that can be registered with
// CEE_SIGNAL_HANDLER_REGISTER.
//
// Default is 1024.
//
typedef unsigned long MaxSignalHandlers;
//
// !MaxCalls
//
// Maximum number of concurrently active object calls.
//
// Default is 10000.
//
typedef unsigned long MaxCalls;
//
// !MaxServiceContextListLength
//
// Maximum number of elements in a service context list (send or receive).
//
// Default is 2.
//
typedef unsigned long MaxServiceContextListLength;
//
// !MaxTimers
//
// Maximum number of pending timers.
//
// Default is 10000.
//
typedef unsigned long MaxTimers;
//
// !MaxTasks
//
// Maximum number of CEE tasks.
//
// Default is 1024.
//
typedef unsigned long MaxTasks;
//
// !MaxTitaniumSignalTags
//
// Maximum number of Titanium signal tags that can be created with
// CEE_TI_SIGNAL_TAG_CREATE.
//
// Default is 2048.
//
typedef unsigned long MaxTiSignalTags;
//
// !PoolExtentSizeDivisor
//
// PoolExtentSizeDivisor is used to compute the size of the "chunks"
// the CEE uses to extned its internal memory pools. Most of the
// "Max*" configuration values define the upper limit on the size of
// the pools. The initial size of a pool is the "Max*" divided by
// "PoolExtentSizeDivisor". If "PoolExtentSizeDivisor" is 0 or 1, the
// entire pool is allocated at initialization. If "PoolExtentSizeDivisor"
// is negative, the pool is "grown" in single unit chunks (e.g. one call
// or one proxy). If "PoolExtentSizeDivisor" is 2, the pool is initially
// half of "Max*" and the other half will be allocated on demand. If
// "PoolExtentSizeDivisor" is 3, one third is allocated initially and
// the rest on demand. And so on.
//
// Default is 100.
//
typedef unsigned long PoolExtentSizeDivisor;
//
// !Transport
//
// Transport to be used to receive object calls.
//
// Can be:
//
// - CEE_TRANSPORT_NULL (= 1): receive no external object calls
//
// - CEE_TRANSPORT_FSP (= 2): receive object calls on $RECEIVE
// (WRITEREAD or PATHSEND). For Pathway
// servers "ServerclassName" must be set.
// For associative servers "PathmonName"
// must be set.
//
// - CEE_TRANSPORT_TCP (= 3): receive object calls on socket specified
// by "TcpSocketNumber".
//
// - CEE_TRANSPORT_TI (= 4): receive object calls via Titanium on the
// SNOR's derived from "TitaniumServerCapsule".
//
// - CEE_TRANSPORT_SRT (= 5): pseudo-transport which enables switching
// calls between a series of object references
//
// Default is CEE_TRANSPORT_NULL.
//
typedef unsigned long Transport;
//
// !TcpPortNumber
//
// Port number on which to listen. Used only by servers with the TCP
// transport.
//
// Default is zero (= use any socket).
//
typedef unsigned short TcpPortNumber;
//
// !TcpReuseAddress
//
//
// "TcpReuseAddress" enables or disables the ability to reuse a local
// socket name on more than one socket. If this option is set to true
// (a non-zero value), then it will allow the CEE to listen on a port
// even if this port is already in use. You should avoid using this
// option if possible since its use can have unexpected results. Used
// only by servers with the TCP transport.
//
// Default is false
//
typedef boolean TcpReuseAddress;
//
// !TcpProcessName
//
// TCP process to use for accepting/posting object calls over TCP.
// Used by servers and clients on NSK platforms with the TCP transport.
//
// Default is $ZTC0
//
typedef string TcpProcessName;
//
// !TcpNetwork
//
// Similar to TcpProcessName, on NT and UNIXs "TcpNetwork" contains
// an Internet address in standard (dot) notation which allows the user
// to configure the network stack on a multihomed system.
//
// Default is "0.0.0.0" (INADDR_ANY)
//
typedef string TcpNetwork;
//
// !ServerclassName
//
// Pathway serverclass name. Used only by servers with the FSP transport
// if they are running as Pathway servers.
//
// Default is empty string (implies server is not a Pathway server).
//
// Example: MY-SERVER
//
typedef string<15> ServerclassName;
//
// !PathmonName
//
// Pathmon process name under which the server is running. Used only
// by servers with the FSP transport if they are running as Pathway
// servers. If Pathmon process name does not include a node name it is
// assumed to be on the local node.
//
// Default is process ancestor (implies server is not an associative
// server).
//
// Examples: $MYPM, \MYHOST.$PMON
//
typedef string<15> PathmonName;
//
// !TitaniumServerCapsule
//
// Used only by servers with the Titanium transport.
//
// Must be specified if "Transport" is set to CEE_TRANSPORT_TI (= 4).
//
// Format is manufacturer-id/object-id. The local site-id, manufacturer-id
// and object-id are used to create a SNOR (site native object reference)
// for the server capsule's queue.
//
// No default.
//
// Example: 12/4
//
typedef string TitaniumServerCapsule;
//
// !TitaniumServerConcurrency
//
// Used only by servers with the Titanium transport. Specifies how many
// outstanding replies a capsule can have. This influences how many
// Titanium server ports are created.
//
// Default is one.
//
// Example: 100
//
typedef unsigned long TitaniumServerConcurrency;
const unsigned long MAX_LIBRARY_NAME_SIZE = 256;
const unsigned long MAX_ENTRY_POINT_NAME_SIZE = 64;
const unsigned long MAX_PARAM_SIZE = 1024;
const unsigned long MIN_OBJREF_SIZE = 64;
//
// !ObjectConfigTag
//
// Is an entry in the configured object table (see next section). Each
// entry describes one configured object.
//
// <oid> Object ID.
//
// <vendorID> Vendor ID (qualifies component ID)
//
// <componentID> Identifies the implementation library (component)
// for alerts etc.
//
// <libraryName> Name of library containing the objects implementation
// and initialization function.
//
// <entrypointName> Name of the object initialization function.
//
// <param> A parameter that will be passed to the
// object initialization function (not used
// by the CEE).
//
//
struct ObjectConfigTag {
sequence<char> oid;
sequence<char, MAX_LIBRARY_NAME_SIZE> libraryName;
sequence<char, MAX_ENTRY_POINT_NAME_SIZE> entrypointName;
sequence<char, MAX_PARAM_SIZE> param;
};
//
// !ConfiguredObjectTable
//
// Contains a list of configured objects.
//
typedef sequence<ObjectConfigTag> ConfiguredObjectTable;
//
// ! UseBootstrapAlertObject
//
// If set to true (the default) then "ALF_AlertRaise" will try to
// write a primitive message to "stderr" if the alert object specified
// by "AlertObjref" cannot be called.
//
// If false then "ALF_AlertRaise" has no effect if the alert object is
// unreachable.
//
// Default is "true".
//
typedef boolean UseBootstrapAlertObject;
//
// ! AlertObjref
//
// Object reference of the Alert Object to which all alerts are to be sent.
//
// Default is "".
//
typedef Object AlertObjref;
//
// ! UseTitanium
//
// If set to true the process will attempt to register as a Titanium
// capsule. If this succeeds then it will be possible to make object
// calls using the Titanium transport.
//
// Default is CEE_FALSE.
//
typedef boolean UseTitanium;
//
// ! ProxyCachingEnabled
//
// If set to true, then on a proxy destroy request an attempt will be
// made to cache the resources associated with the given proxy such
// that they could potentially be reused on a subsequent proxy create
// request.
//
// Default is CEE_TRUE.
//
typedef boolean ProxyCachingEnabled;
//
// ! MaxProxiesToCache
//
// Defines the maximum number of proxies that the proxy cache may
// hold.
//
// Default is 20.
//
typedef boolean MaxProxiesToCache;
//
// ! Trace configuration
//
// The following parameters can be used to override the setting of the
// TRACEINFO, TRACEWARN, TRACEFAIL and TRACEFORMAT environment variables
// so that tracing can also be controlled with SAM.
//
typedef string TraceInfo;
typedef string TraceWarn;
typedef string TraceFail;
typedef string TraceFormat;
//
// !Stub Trace: Client
//
// Enables tracing for client capsules. This parameter is disabled by
// default. If this parameter is set to false then no trace output is
// produced for CEE clients even if TRACEINFO is set to "STUB".
//
// Note that for stubs tracing, TRACEINFO must be set to "STUB".
//
// Default is IDL_FALSE.
//
typedef boolean TraceClient;
//
// !Stub Trace: Server
//
// Enables tracing for server capsules. This parameter is disabled by
// default. If this parameter is set to false then no trace output is
// produced for CEE servers even if TRACEINFO is set to "STUB".
//
// Note that for stubs tracing, TRACEINFO must be set to "STUB".
//
// Default is IDL_FALSE.
//
typedef boolean TraceServer;
//
// !Stub Trace: ParamDumpLength
//
// This parameter sets the approximate length of operation argument value
// strings which are displayed in trace messages. Parameter Data conversion
// is limited by the "ParamDumpLength" parameter. If this parameter
// equals 0, then no operation arguments are dumped. This parameter is
// set to 200 by default. Note that the maximal trace message is limited
// to 2048 characters.
//
typedef unsigned long ParamDumpLength;
//
// !Stub Trace: InsertLineBreaks
//
// If true line breaks are inserted in an argument value string for better
// readability. This is advisable when analysing deeply nested data types.
// This parameter is set to false by default.
typedef boolean InsertLineBreaks;
//
// ! StderrFile
//
// The file to which stderr should be redirected. Trace output is
// written to stderr and so are bootstrap alerts.
//
// Default is NULL.
//
typedef string StderrFile;
//
// ! ServiceResourceEntry
//
// Is an entry in the Service Resource Block (see
// ServiceResourceBlock). Entries have the form:
//
// <type> defines whether the entry refers to an
// IMPLEMENTER or a PROVIDER
//
// <objref> the object reference of the resource
//
struct ServiceResourceEntry {
sequence<char> type;
sequence<char> objref;
};
//
// ! ServiceResourceBlock
//
// Associates a name with a list of service resource entries.
// The name is then referenced in a statically configured
// SRT (Service Resource Transport) objref. Entries have the
// form:
//
// <name> service name
//
// <policy> the name of the policy which governs how
// object calls are switched between service
// implementers
//
// <list> a sequence of service resource entries
//
struct ServiceResourceBlock {
sequence<char> name;
sequence<char> policy;
sequence<ServiceResourceEntry> list;
};
//
// !ServiceResourceTable
//
// Contains a list of service resource blocks.
//
typedef sequence<ServiceResourceBlock> ServiceResourceTable;
//
// !Default Asynch Call mode
//
// Default asynch call mode (unsupported)
//
// Default is CEE_CALL_MODE_QUEUE.
//
typedef unsigned long AsynchCallMode;
//
// !Default Asynch Response mode
//
// Default asynch response mode (unsupported)
//
// Default is CEE_RESPONSE_MODE_QUEUE.
//
typedef unsigned long AsynchResponseMode;
//
// !TransactionFactory
//
// The object reference that should be used to create transactions.
//
typedef Object TransactionFactory;
}; // module CEECFG