summaryrefslogtreecommitdiff
path: root/TAO/tao/giop.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/giop.h')
-rw-r--r--TAO/tao/giop.h387
1 files changed, 0 insertions, 387 deletions
diff --git a/TAO/tao/giop.h b/TAO/tao/giop.h
deleted file mode 100644
index b5276d74c2b..00000000000
--- a/TAO/tao/giop.h
+++ /dev/null
@@ -1,387 +0,0 @@
-// This may look like C, but it's really -*- C++ -*-
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO
-//
-// = FILENAME
-// giop.h
-//
-// = DESCRIPTION
-// GIOP data structures and support routines
-//
-// Note that some symbols in this module are part of the
-// "Internet" Inter-ORB Protocol (IIOP), not the General IOP.
-// Only addressing information and certain details of connection
-// usage are specific to IIOP; all other protocol details can be
-// reused by ORB protocols that are built atop connection
-// protocols other than TCP.
-//
-// THREADING NOTE: Threads should never manipulate another
-// thread's invocations. In this implementation, all data
-// structures used to represent invocations (and parts of them)
-// are owned by the thread which created them. Multiple threads
-// may make of course concurrent invocations safely, since the
-// GIOP code is reentrant.
-//
-// = AUTHOR
-// Copyright 1994-1995 by Sun Microsystems Inc.,
-// Chris Cleeland <cleeland@cs.wustl.edu>
-//
-// ============================================================================
-
-#if !defined (TAO_GIOP_H)
-# define TAO_GIOP_H
-
-// namespace TAO_IOP
-
-// Assigned Protocol/Profile tag values. ORB protcols may be
-// uniquely identified by tags such as these. This allows each
-// ORB's own objref profiles to be interchanged using IORs.
-//
-// Email to tag-request@omg.org to allocate tags.
-typedef CORBA::ULong TAO_IOP_Profile_ID;
-
-enum
-{
- TAO_IOP_TAG_INTERNET_IOP = 0, // IIOP
- TAO_IOP_TAG_MULTIPLE_COMPONENTS = 1, // DCE-CIOP
-
- // This is a subset of the list of other profile tags.
- TAO_IOP_TAG_ONC_IOP = 0x4f4e4300 // ONC IOP
-};
-
-struct TAO_IOP_Tagged_Profile
-// One per protocol.
-{
- TAO_IOP_Profile_ID tag;
- TAO_opaque profile_data;
-};
-
-typedef CORBA_SEQUENCE <TAO_IOP_Tagged_Profile>
- TAO_IOP_Tagged_Profile_Sequence;
-
-struct TAO_IOP_IOR
- // = TITLE
- // InteroperableObjectReference
- //
- // = DESCRIPTION
- // ... a set of protocol-specific protocol profiles, plus a type ID.
- // Only one object is denoted by all of this information. It's OK
- // to delete all profiles except the one for the single protocol
- // actually being used.
-{
- char *type_id;
- TAO_IOP_Tagged_Profile_Sequence profiles;
-};
-
-// Some protocols can be factored into a set of optional components.
-// Use of such components is defined by the protocol's specification.
-//
-// Email to tag-request@omg.org to allocate tags.
-
-typedef CORBA::ULong TAO_IOP_ComponentId;
-
-enum
- // = DESCRIPTION
- // These are all defined by DCE-CIOP in OMG TC document 95-3-10.
-{
- TAO_IOP_TAG_DCE_STRING_BINDING = 100,// string binding handle
- TAO_IOP_TAG_DCE_BINDING_NAME = 101, // CDS/GDS/... name
- TAO_IOP_TAG_DCE_NO_PIPES = 102, // no component data
- TAO_IOP_TAG_OBJECT_KEY = 10, // opaque
- TAO_IOP_TAG_ENDPOINT_ID = 11, // uuid
- TAO_IOP_TAG_LOCATION_POLICY = 12 // octet/enum
-};
-
-struct TAO_IOP_TaggedComponent
- // = DESCRIPTION
- // One way to represent multicomponent profiles, e.g. as done by the
- // DCE-CIOP protocol. One of these gets encapsulated in
- // Tagged_Profile::profile_data. TAG_MULTIPLE_COMPONENTS may be used
- // to represent protocol profiles structured in that way, but
- // protocol-specific tags facilitate simpler scanning of IORs since
- // you can be assured that each profile only has data used within a
- // single ORB protocol.
-{
- TAO_IOP_ComponentId tag;
- TAO_opaque component_data;
-};
-
-typedef CORBA_SEQUENCE <TAO_IOP_TaggedComponent>
- TAO_IOP_MultipleComponentProfile;
-
-// namespace TAO_GIOP
-
-struct TAO_Version
-{
- CORBA::Octet major;
- CORBA::Octet minor;
-};
-
-enum
- // = DESCRIPTION
- // GIOP protocol version 1.0 information.
-{
- MY_MAJOR = 1,
- MY_MINOR = 0
-};
-
-enum TAO_GIOP_MsgType
- // = DESCRIPTION
- // All GIOP messages include a header and message type.
-{
- // Not really a message type, but needed to bring that information
- // back somehow
- TAO_GIOP_EndOfFile = -1, // "discovered" by either
- TAO_GIOP_Request = 0, // sent by client
- TAO_GIOP_Reply = 1, // by server
- TAO_GIOP_CancelRequest = 2, // by client
- TAO_GIOP_LocateRequest = 3, // by client
- TAO_GIOP_LocateReply = 4, // by server
- TAO_GIOP_CloseConnection = 5, // by server
- TAO_GIOP_MessageError = 6 // by both
-};
-
-struct TAO_GIOP_MessageHeader
-{
- CORBA::Char magic [4]; // "GIOP"
- TAO_Version giop_version;
- CORBA::Octet byte_order; // 0 = big, 1 = little
- CORBA::Octet message_type; // MsgType above
- CORBA::ULong message_size; // in byte_order!
-};
-
-// defined by GIOP 1.0 protocol
-#define TAO_GIOP_HEADER_LEN sizeof (TAO_GIOP_MessageHeader)
-
-// Support for Implicit ORB Service Context
-typedef CORBA::ULong TAO_GIOP_ServiceID;
-
-enum
- // = TITLE
- // Values for TAO_GIOP_ServiceID
-{
- TAO_GIOP_TransactionService = 0
-
- // More service IDs may be defined by OMG.
-
- // This is where our RIOP service ID will be defined...
-};
-
-struct TAO_GIOP_ServiceContext
-{
- TAO_GIOP_ServiceID context_id;
- TAO_opaque context_data;
-};
-
-typedef CORBA_SEQUENCE <TAO_GIOP_ServiceContext>
- TAO_GIOP_ServiceContextList;
-
-extern CORBA::TypeCode TC_ServiceContextList;
-
-// = Request, Reply headers
-
-class TAO_Export TAO_GIOP_RequestHeader
- // = TITLE
- // This class embodies the header of a GIOP request.
- //
- // = NOTES
- // This used to be a <struct>, which is why everything is public.
-{
-public:
- TAO_GIOP_RequestHeader (void);
- // Constructor.
-
- CORBA::Boolean init (CDR &msg, CORBA::Environment& env);
- // Initialize the header from the values found in <msg>.
-
- //private:
- TAO_GIOP_ServiceContextList service_info;
- // The service context for the request (CORBA Reference?)
-
- CORBA::ULong request_id;
- // Unique identifier for a request
-
- CORBA::Boolean response_expected;
- // true if this request requires a response
-
- TAO_opaque object_key;
- // @@ the object key of the destination object (is this right?)
-
- CORBA::String operation;
- // Name of the operation being performed
-
- CORBA::Principal_ptr requesting_principal;
- // Identifies the requester
-};
-
-enum TAO_GIOP_ReplyStatusType
-{
- TAO_GIOP_NO_EXCEPTION,
- // Request completed successfully
-
- TAO_GIOP_USER_EXCEPTION,
- // Request terminated with user exception
-
- TAO_GIOP_SYSTEM_EXCEPTION,
- // Request terminated with system exception
-
- TAO_GIOP_LOCATION_FORWARD
- // @@ More info
-};
-
-struct TAO_GIOP_ReplyHeader
-{
- TAO_GIOP_ServiceContextList service_info;
- // Information
-
- CORBA::ULong request_id;
- // Unique identifier of the request for which this is a reply
-
- TAO_GIOP_ReplyStatusType reply_status;
- // Status of the reply (see above enum)
-};
-
-struct TAO_GIOP_CancelRequestHeader
- // = DESCRIPTION
- // Cancellation -- applies both to Requests and LocateRequests.
-{
- CORBA::ULong request_id;
- // Unique identifier of the request being cancelled
-};
-
-struct TAO_GIOP_LocateRequestHeader
- // = DESCRIPTION
- // Location service support
-{
- CORBA::ULong request_id;
- TAO_opaque object_key;
-};
-
-enum TAO_GIOP_LocateStatusType
-{
- TAO_GIOP_UNKNOWN_OBJECT,
- TAO_GIOP_OBJECT_HERE,
- TAO_GIOP_OBJECT_FORWARD
-};
-
-struct TAO_GIOP_LocateReplyHeader
-{
- CORBA::ULong request_id;
- TAO_GIOP_LocateStatusType locate_status;
-};
-
-class TAO_Export TAO_GIOP_Invocation
- // = TITLE
- // Invocation: Sends a Request, optionally reads associated Reply.
- // Uses transport info passed in, doesn't locate anything.
- //
- // = NOTES
- // This should maybe be moved into its own file (invoke.h?)
-{
-public:
- TAO_GIOP_Invocation (IIOP_Object *data,
- const char *operation,
- CORBA::Boolean is_roundtrip);
-
- ~TAO_GIOP_Invocation (void);
-
- void start (CORBA::Environment &env);
- // <start> goes beyond initialising data structures, and makes
- // calls that may fail -- and thus throw exceptions.
-
- void put_param (CORBA::TypeCode_ptr tc,
- void *value,
- CORBA::Environment &env);
-
- TAO_GIOP_ReplyStatusType invoke (CORBA::ExceptionList &exceptions,
- CORBA::Environment &env);
-
- void get_value (CORBA::TypeCode_ptr tc,
- void *value,
- CORBA::Environment &env);
- // No CORBA::Context support (deprecated).
-
-private:
- // @@ Please add comments.
- IIOP_Object *data_;
-
- const char *opname_;
-
- CORBA::Boolean do_rsvp_;
-
- CORBA::ULong my_request_id_;
-
- u_char buffer [CDR::DEFAULT_BUFSIZE];
- CDR stream_;
-
- TAO_Client_Connection_Handler *handler_;
- // The handler for the client's connection.
-};
-
-// = Generic server side data dispatch methods
-
-// These methods are called for all file descriptors on which
-// incoming messages are expected.
-
-// The <handle_request> routine is used to handle request messages;
-// its <reply> parameter is null if the request is "oneway" (or the
-// client isn't waiting for the response that this request normally
-// creates).
-//
-// The optional <check_forward> routine is used to verify that the
-// request is to be delivered within this process by <handle_request>.
-// Each call to <handle_request> is preceded by a call to this routine
-// if it's provided. It's used when handling GIOP "Request" messages
-// as well as GIOP "LocateRequest" messages, and returns an enum to
-// indicate overal status (LocateStatusType) as well as an objref in
-// the case of OBJECT_FORWARD. That objref is released.
-//
-// Return: 1==success,0==EOF,-1==error
-
-// deprecated
-typedef TAO_GIOP_LocateStatusType (*TAO_GIOP_ForwardFunc) (TAO_opaque &,
- CORBA::Object_ptr &,
- void *);
-
-// deprecated
-typedef void (*TAO_GIOP_RequestHandler) (TAO_GIOP_RequestHeader &,
- CDR &,
- CDR *,
- void *,
- CORBA::Environment &);
-class TAO_Export TAO_GIOP
- // = TITLE
- // A namespace for GIOP-related operations.
- //
- // = DESCRIPTION
- // Only put static methods within this scope.
-{
- ACE_CLASS_IS_NAMESPACE (TAO_GIOP);
-
-public:
- // = Close a connection, first sending GIOP::CloseConnection
- static void close_connection (TAO_Client_Connection_Handler *&handle,
- void *ctx);
-
- static CORBA::Boolean start_message (TAO_GIOP_MsgType t,
- CDR &msg);
- // Build the header for a message of type <t> into stream <msg>.
-
- static CORBA::Boolean send_request (TAO_SVC_HANDLER *&handler,
- CDR &stream);
- // Send message, returns TRUE if success, else FALSE.
-
- static TAO_GIOP_MsgType recv_request (TAO_SVC_HANDLER *&handler,
- CDR &msg,
- CORBA::Environment &env);
- // Reads message, returns message type from header.
-
- static void make_error (CDR &msg, ...);
- // Construct a message containing an error so that it can be sent as
- // a response to a request.
-};
-
-#endif /* TAO_GIOP_H */