rtcorba.pidl

来自「这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用」· PIDL 代码 · 共 271 行

PIDL
271
字号
/**
 * @file RTCORBA.pidl
 *
 * RTCORBA.pidl,v 1.6 2003/10/28 18:29:32 bala Exp
 *
 * @brief Pre-compiled IDL source for the RTCORBA module.
 *
 * The RTCORBA module specified in CORBA v2.4.2 Chapter 24 (February,
 * 2001).
 *
 * Changes to the original OMG idl:
 *
 *     1.  Two TAO-specific interfaces, UnixDomainProtocolProperties
 *         and SharedMemoryProtocolProperties, have been added to allow
 *         configuration of TAO's UIOP and SHMEM pluggable protocols
 *         through RTCORBA Protocol Policies.
 *     2.  TAO-specific support for named mutexes has been added.
 *     3.  Added RT_ORB::create_tcp_protocol_properties which seems
 *         to come and go from the formal specification, but is needed.
 *
 *   This file was used to generate the code in RTCORBAC.{h,i,cpp}.
 *   The steps to regenerate the code are as follows:
 *
 *   1. Run the tao_idl compiler on the pidl file.  The command used for
 *   this is:
 *
 *     tao_idl -o orig -Gp -Gd -Ge 1 -GT
 *          -Wb,export_macro=TAO_RTCORBA_Export
 *          -Wb,export_include="tao/RTCORBA/rtcorba_export.h"
 *          -Wb,pre_include="ace/pre.h"
 *          -Wb,post_include="ace/post.h"
 *          RTCORBA.pidl
 *
 *   2. Then apply the patches in tao/RTCORBA/diffs to the generated code.
 *   The patches provide the following fixes: 1) remove several unnecessary
 *   includes, e.g., corba.h, stream.h, Policy.h, 3) add anything else we
 *   need into the namespace, i.e., TAO_Priority_Mapping, and 4) fix
 *   "nested_class" occurrences in the .cpp.
 *
 * Apply patches using the following commands:
 *
 *   patch < diffs/RTCORBA.diff
 *
 * Note: The diffs were generated with these commands:
 *
 *   for i in RTCORBAC.{h,i,cpp}; do
 *     diff -wBbu orig/$i $i
 *   done > diffs/RTCORBA.diff
 *
 */

#ifndef _RT_CORBA_IDL_
#define _RT_CORBA_IDL_

#include <orb.idl>
#include <IOP.pidl>
#include <TimeBase.pidl>

#pragma prefix "omg.org"

module RTCORBA
{
  // Priorities.
  typedef short NativePriority;
  typedef short Priority;
  const Priority minPriority = 0;
  const Priority maxPriority = 32767;

  native PriorityMapping;
  native PriorityTransform;
 
  typedef long NetworkPriority;	
  native NetworkPriorityMapping;	
	
  // Threadpool types.
  typedef unsigned long ThreadpoolId;

  struct ThreadpoolLane
  {
    Priority lane_priority;
    unsigned long static_threads;
    unsigned long dynamic_threads;
  };
  typedef sequence <ThreadpoolLane> ThreadpoolLanes;

  // RT Policies.

  // Priority Model Policy.
  const CORBA::PolicyType PRIORITY_MODEL_POLICY_TYPE = 40;
  enum PriorityModel
  {
    CLIENT_PROPAGATED,
    SERVER_DECLARED
  };

  local interface PriorityModelPolicy : CORBA::Policy
  {
      readonly attribute PriorityModel priority_model;
      readonly attribute Priority server_priority;
  };

  // Threadpool Policy.
  const CORBA::PolicyType THREADPOOL_POLICY_TYPE = 41;
  local interface ThreadpoolPolicy : CORBA::Policy
  {
      readonly attribute ThreadpoolId threadpool;
  };

  // Protocol Properties.
  local interface ProtocolProperties {};

  struct Protocol
  {
      IOP::ProfileId protocol_type;
      ProtocolProperties orb_protocol_properties;
      ProtocolProperties transport_protocol_properties;
  };

  typedef sequence <Protocol> ProtocolList;

  // Server Protocol Policy
  const CORBA::PolicyType SERVER_PROTOCOL_POLICY_TYPE = 42;

  // Locality constrained interface
  local interface ServerProtocolPolicy : CORBA::Policy
  {
    readonly attribute ProtocolList protocols;
  };

  // Client Protocol Policy
  const CORBA::PolicyType CLIENT_PROTOCOL_POLICY_TYPE = 43;

  // Locality constrained interface
  local interface ClientProtocolPolicy : CORBA::Policy
  {
    readonly attribute ProtocolList protocols;
  };

  // Private Connection Policy
  const CORBA::PolicyType PRIVATE_CONNECTION_POLICY_TYPE = 44;

  // Locality constrained interface
  local interface PrivateConnectionPolicy : CORBA::Policy {};

  local interface TCPProtocolProperties : ProtocolProperties
  {
    attribute long send_buffer_size;
    attribute long recv_buffer_size;
    attribute boolean keep_alive;
    attribute boolean dont_route;
    attribute boolean no_delay;
    attribute boolean enable_network_priority;	
  };

  local interface GIOPProtocolProperties : ProtocolProperties {};

  // Properties for TAO-specific protocols (these protocols &
  // interfaces are not specified by the OMG).

  // Communication over Unix Domain Sockets (Local IPC).
  local interface UnixDomainProtocolProperties : ProtocolProperties
  {
    attribute long send_buffer_size;
    attribute long recv_buffer_size;
  };

  // Communication over Shared Memory.
  local interface SharedMemoryProtocolProperties : ProtocolProperties
  {
    attribute long preallocate_buffer_size;
    attribute string mmap_filename;
    attribute string mmap_lockname;
  };

  // End of TAO-specific interfaces.

  // PriorityBandedConnectionPolicy.
  struct PriorityBand
  {
    Priority low;
    Priority high;
  };
  typedef sequence <PriorityBand> PriorityBands;

  const CORBA::PolicyType PRIORITY_BANDED_CONNECTION_POLICY_TYPE = 45;
  local interface PriorityBandedConnectionPolicy : CORBA::Policy
  {
    readonly attribute PriorityBands priority_bands;
  };

  // RT Current.
  local interface Current : CORBA::Current
  {
    attribute Priority the_priority;
  };

  // Mutex.
  local interface Mutex
  {
      void lock ();
      void unlock ();
      boolean try_lock (in TimeBase::TimeT max_wait);
    // if max_wait = 0 then return immediately
  };

  // RTORB.
  local interface RTORB
  {
    // Mutex creation/destruction.
    Mutex create_mutex ();
    void destroy_mutex (in Mutex the_mutex);

    // TAO specific
    // Named Mutex creation/opening
    exception MutexNotFound {};
    Mutex create_named_mutex (in string name,
                              out boolean created_flag);
    Mutex open_named_mutex (in string name)
      raises (MutexNotFound);

    // End TAO specific

    TCPProtocolProperties create_tcp_protocol_properties(
                                                     in long send_buffer_size,
                                                     in long recv_buffer_size,
                                                     in boolean keep_alive,
                                                     in boolean dont_route,
                                                     in boolean no_delay,
						     in boolean enable_network_priority);

    // Threadpool creation/destruction.
    exception InvalidThreadpool {};

    ThreadpoolId create_threadpool (in unsigned long stacksize,
                                    in unsigned long static_threads,
                                    in unsigned long dynamic_threads,
                                    in Priority default_priority,
                                    in boolean allow_request_buffering,
                                    in unsigned long max_buffered_requests,
                                    in unsigned long max_request_buffer_size);

    ThreadpoolId create_threadpool_with_lanes (in unsigned long stacksize,
                                               in ThreadpoolLanes lanes,
                                               in boolean allow_borrowing,
                                               in boolean allow_request_buffering,
                                               in unsigned long max_buffered_requests,
                                               in unsigned long max_request_buffer_size);

    void destroy_threadpool (in ThreadpoolId threadpool)
      raises (InvalidThreadpool);

    // RT Policies creation.
    PriorityModelPolicy create_priority_model_policy (in PriorityModel priority_model,
                                                      in Priority server_priority);

    ThreadpoolPolicy create_threadpool_policy (in ThreadpoolId threadpool);

    PriorityBandedConnectionPolicy
      create_priority_banded_connection_policy (in PriorityBands priority_bands);


    ServerProtocolPolicy create_server_protocol_policy (in ProtocolList protocols);

    ClientProtocolPolicy create_client_protocol_policy (in ProtocolList protocols);

    PrivateConnectionPolicy create_private_connection_policy ();
  };
};

#endif /* _RT_CORBA_IDL_ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?