00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef TAO_ORB_CORE_H
00015 #define TAO_ORB_CORE_H
00016
00017 #include "ace/pre.h"
00018
00019 #include "tao/Resource_Factory.h"
00020
00021 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00022 # pragma once
00023 #endif
00024
00025 #include "tao/Collocation_Strategy.h"
00026 #include "tao/params.h"
00027 #include "tao/ORB_Constants.h"
00028 #include "tao/Parser_Registry.h"
00029 #include "tao/Service_Callbacks.h"
00030 #include "tao/Fault_Tolerance_Service.h"
00031 #include "tao/Cleanup_Func_Registry.h"
00032 #include "tao/Object_Ref_Table.h"
00033 #include "tao/ObjectKey_Table.h"
00034 #include "tao/Messaging_SyncScopeC.h"
00035 #include "tao/Object.h"
00036 #include "tao/Invocation_Utils.h"
00037 #include "tao/Adapter_Registry.h"
00038 #include "tao/ORB_Core_TSS_Resources.h"
00039 #include "tao/Service_Context_Handler_Registry.h"
00040 #include "ace/Array_Map.h"
00041
00042 #include "ace/Thread_Manager.h"
00043 #include "ace/Lock_Adapter_T.h"
00044 #include "ace/TSS_T.h"
00045
00046 #include "ace/Service_Config.h"
00047
00048 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00049 class ACE_Data_Block;
00050 ACE_END_VERSIONED_NAMESPACE_DECL
00051
00052 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00053
00054 #if TAO_HAS_INTERCEPTORS == 1
00055
00056 namespace TAO
00057 {
00058 class ClientRequestInterceptor_Adapter;
00059 class ServerRequestInterceptor_Adapter;
00060 }
00061
00062 #endif
00063
00064 class TAO_Adapter;
00065 class TAO_Acceptor;
00066 class TAO_Connector;
00067 class TAO_Connector_Registry;
00068
00069 class TAO_Resource_Factory;
00070 class TAO_Client_Strategy_Factory;
00071 class TAO_Server_Strategy_Factory;
00072
00073 class TAO_TSS_Resources;
00074 class TAO_Leader_Follower;
00075 class TAO_LF_Strategy;
00076 class TAO_RT_ORB;
00077 class TAO_MProfile;
00078 class TAO_Profile;
00079
00080 class TAO_Endpoint_Selector_Factory;
00081 class TAO_Message_State_Factory;
00082 class TAO_Protocols_Hooks;
00083 class TAO_Network_Priority_Protocols_Hooks;
00084 class TAO_BiDir_Adapter;
00085 class TAO_ZIOP_Adapter;
00086
00087 class TAO_Flushing_Strategy;
00088
00089 class TAO_Thread_Lane_Resources_Manager;
00090 class TAO_Collocation_Resolver;
00091 class TAO_Thread_Lane_Resources;
00092 class TAO_Stub_Factory;
00093 class TAO_Endpoint_Selector_Factory;
00094 class TAO_Service_Context;
00095 class TAO_Request_Dispatcher;
00096 class TAO_Policy_Set;
00097 class TAO_Policy_Manager;
00098 class TAO_Policy_Current;
00099
00100 class TAO_Codeset_Manager;
00101 class TAO_IORInterceptor_Adapter;
00102 class TAO_Valuetype_Adapter;
00103
00104 class TAO_Policy_Validator;
00105
00106 namespace TAO
00107 {
00108 class GUIResource_Factory;
00109 class PolicyFactory_Registry_Adapter;
00110 class ORBInitializer_Registry_Adapter;
00111 class Transport_Queueing_Strategy;
00112 }
00113
00114 namespace CORBA
00115 {
00116 class ORB_ObjectIdList;
00117 class ORB;
00118 typedef ORB *ORB_ptr;
00119
00120 class PolicyList;
00121 }
00122
00123 namespace IOP
00124 {
00125 class ServiceContextList;
00126 }
00127
00128 namespace PortableInterceptor
00129 {
00130 class IORInterceptor;
00131 typedef IORInterceptor *IORInterceptor_ptr;
00132
00133 #if TAO_HAS_INTERCEPTORS == 1
00134
00135 class ClientRequestInterceptor;
00136 typedef ClientRequestInterceptor *ClientRequestInterceptor_ptr;
00137
00138 class ServerRequestInterceptor;
00139 typedef ServerRequestInterceptor *ServerRequestInterceptor_ptr;
00140
00141 #endif
00142 }
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160 class TAO_Export TAO_ORB_Core
00161 {
00162 friend class TAO_ORB_Core_Auto_Ptr;
00163 friend CORBA::ORB_ptr CORBA::ORB_init (int &,
00164 ACE_TCHAR *argv[],
00165 const char *);
00166 public:
00167
00168
00169 TAO_ORB_Core (const char* id, ACE_Intrusive_Auto_Ptr<ACE_Service_Gestalt> g);
00170
00171
00172 TAO_ORB_Parameters *orb_params (void);
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187 CORBA::Object_ptr poa_current(void);
00188
00189
00190
00191 TAO_Connector_Registry *connector_registry (void);
00192
00193
00194 TAO_Parser_Registry *parser_registry (void);
00195
00196
00197
00198 TAO::PolicyFactory_Registry_Adapter *policy_factory_registry (void);
00199
00200
00201
00202
00203 TAO::ORBInitializer_Registry_Adapter *orbinitializer_registry (void);
00204
00205 TAO_ZIOP_Adapter *ziop_adapter () const;
00206 void ziop_adapter (TAO_ZIOP_Adapter *adapter);
00207
00208 TAO_Service_Context_Registry &service_context_registry (void);
00209
00210
00211 TAO_ProtocolFactorySet *protocol_factories (void);
00212
00213
00214 CORBA::ORB_ptr orb (void);
00215
00216
00217 ACE_Reactor *reactor (void);
00218
00219
00220 ACE_Thread_Manager *thr_mgr (void);
00221
00222
00223 CORBA::Object_ptr root_poa (void);
00224
00225
00226 TAO_Adapter_Registry &adapter_registry (void);
00227
00228
00229
00230 enum
00231 {
00232
00233
00234 ORB_CONTROL,
00235
00236
00237 THRU_POA,
00238
00239
00240 DIRECT
00241 };
00242
00243
00244
00245
00246
00247
00248
00249
00250 static
00251 TAO::Collocation_Strategy collocation_strategy (CORBA::Object_ptr object);
00252
00253
00254
00255
00256 void optimize_collocation_objects (CORBA::Boolean opt);
00257 CORBA::Boolean optimize_collocation_objects (void) const;
00258
00259 void use_global_collocation (CORBA::Boolean opt);
00260 CORBA::Boolean use_global_collocation (void) const;
00261
00262 CORBA::ULong get_collocation_strategy (void) const;
00263
00264
00265
00266
00267 TAO_Adapter *poa_adapter (void);
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279 TAO_Resource_Factory *resource_factory (void);
00280
00281
00282 TAO::GUIResource_Factory *gui_resource_factory (void);
00283
00284
00285 TAO_Client_Strategy_Factory *client_factory (void);
00286
00287
00288 TAO_Server_Strategy_Factory *server_factory (void);
00289
00290
00291 TAO_Protocols_Hooks *protocols_hooks (void);
00292
00293
00294 TAO_Thread_Lane_Resources_Manager &thread_lane_resources_manager (void);
00295
00296
00297 TAO_Collocation_Resolver &collocation_resolver (void);
00298
00299
00300 TAO_Stub_Factory *stub_factory (void);
00301
00302
00303 TAO_Endpoint_Selector_Factory *endpoint_selector_factory (void);
00304
00305
00306
00307
00308 static void set_resource_factory (const char *resource_factory_name);
00309
00310
00311
00312
00313
00314
00315 static void set_gui_resource_factory (TAO::GUIResource_Factory *gui_factory);
00316
00317
00318 static void set_network_priority_protocols_hooks (
00319 const char *network_priority_protocols_hooks_name);
00320
00321
00322 TAO_Protocols_Hooks * get_protocols_hooks (void);
00323
00324
00325 TAO_Network_Priority_Protocols_Hooks *
00326 get_network_priority_protocols_hooks (void);
00327
00328
00329 static void dynamic_adapter_name (const char *name);
00330
00331
00332 static const char *dynamic_adapter_name (void);
00333
00334
00335 static void ifr_client_adapter_name (const char *name);
00336
00337
00338 static const char *ifr_client_adapter_name (void);
00339
00340
00341 static void typecodefactory_adapter_name (const char *name);
00342
00343
00344 static const char *typecodefactory_adapter_name (void);
00345
00346
00347 static void iorinterceptor_adapter_factory_name (const char *name);
00348
00349
00350 static const char *iorinterceptor_adapter_factory_name (void);
00351
00352
00353 static void valuetype_adapter_factory_name (const char *name);
00354
00355
00356 static const char *valuetype_adapter_factory_name (void);
00357
00358
00359
00360 int is_collocated (const TAO_MProfile& mprofile);
00361
00362
00363
00364
00365 ACE_Allocator *output_cdr_dblock_allocator (void);
00366
00367
00368
00369 ACE_Allocator *output_cdr_buffer_allocator (void);
00370
00371
00372
00373
00374 ACE_Allocator *output_cdr_msgblock_allocator (void);
00375
00376
00377
00378
00379 ACE_Allocator *input_cdr_dblock_allocator (void);
00380
00381
00382
00383 ACE_Allocator *input_cdr_buffer_allocator (void);
00384
00385
00386
00387 ACE_Allocator *input_cdr_msgblock_allocator (void);
00388
00389
00390
00391
00392 ACE_Allocator *transport_message_buffer_allocator (void);
00393
00394
00395
00396 ACE_Data_Block *create_input_cdr_data_block (size_t size);
00397
00398
00399 ACE_Lock *locking_strategy (void);
00400
00401 #if (TAO_HAS_CORBA_MESSAGING == 1)
00402
00403
00404 TAO_Policy_Set *get_default_policies (void);
00405
00406
00407
00408 CORBA::Policy_ptr get_policy (CORBA::PolicyType type);
00409
00410
00411
00412 CORBA::Policy_ptr get_policy_including_current (CORBA::PolicyType type);
00413
00414
00415
00416 CORBA::Policy_ptr get_cached_policy (TAO_Cached_Policy_Type type);
00417
00418
00419
00420 CORBA::Policy_ptr get_cached_policy_including_current (
00421 TAO_Cached_Policy_Type type);
00422
00423 #endif
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444 CORBA::Environment *default_environment (void) const;
00445 void default_environment (CORBA::Environment*);
00446
00447
00448 #if (TAO_HAS_CORBA_MESSAGING == 1)
00449
00450
00451 TAO_Policy_Manager *policy_manager (void);
00452
00453
00454
00455
00456 TAO_Policy_Current &policy_current (void);
00457
00458 #endif
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469 void call_timeout_hook (TAO_Stub *stub,
00470 bool &has_timeout,
00471 ACE_Time_Value &time_value);
00472
00473
00474 typedef void (*Timeout_Hook) (TAO_ORB_Core *,
00475 TAO_Stub *,
00476 bool&,
00477 ACE_Time_Value&);
00478
00479 void set_timeout_hook (Timeout_Hook hook);
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490 void connection_timeout (TAO_Stub *stub,
00491 bool &has_timeout,
00492 ACE_Time_Value &time_value);
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519 static void connection_timeout_hook (Timeout_Hook hook);
00520
00521 void call_sync_scope_hook (TAO_Stub *stub,
00522 bool &has_synchronization,
00523 Messaging::SyncScope &scope);
00524
00525 #if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1)
00526
00527 TAO::Transport_Queueing_Strategy *get_transport_queueing_strategy (
00528 TAO_Stub *stub,
00529 Messaging::SyncScope &scope);
00530
00531 #endif
00532
00533 typedef void (*Sync_Scope_Hook) (TAO_ORB_Core *,
00534 TAO_Stub *,
00535 bool &,
00536 Messaging::SyncScope &);
00537
00538 void set_sync_scope_hook (Sync_Scope_Hook hook);
00539
00540
00541 static void default_sync_scope_hook (TAO_ORB_Core *,
00542 TAO_Stub *,
00543 bool &has_synchronization,
00544 Messaging::SyncScope &scope);
00545
00546
00547 TAO_Protocols_Hooks *protocols_hooks_;
00548
00549
00550 TAO_Network_Priority_Protocols_Hooks *network_priority_protocols_hooks_;
00551
00552
00553 TAO_ORB_Core_TSS_Resources* get_tss_resources (void);
00554
00555
00556 void* get_tss_resource (size_t slot_id);
00557
00558
00559
00560 int set_tss_resource (size_t slot_id, void *);
00561
00562
00563
00564
00565 int add_tss_cleanup_func (ACE_CLEANUP_FUNC cleanup, size_t &slot_id);
00566
00567
00568 void tss_cleanup (ACE_Array_Base<void *> &ts_objects);
00569
00570
00571 TAO_Leader_Follower &leader_follower (void);
00572
00573
00574 TAO_LF_Strategy &lf_strategy (void);
00575
00576
00577 TAO_Thread_Lane_Resources &lane_resources (void);
00578
00579
00580 int run (ACE_Time_Value *tv, int perform_work);
00581
00582
00583 void shutdown (CORBA::Boolean wait_for_completion);
00584
00585
00586 bool has_shutdown (void) const;
00587
00588
00589 void destroy (void);
00590
00591
00592 void check_shutdown (void);
00593
00594
00595
00596
00597 int thread_per_connection_timeout (ACE_Time_Value &timeout) const;
00598
00599
00600
00601 TAO_Stub *create_stub_object (TAO_MProfile &mprofile,
00602 const char *type_id,
00603 CORBA::PolicyList *policy_list);
00604
00605
00606
00607
00608
00609 TAO_Stub *create_stub (const char *repository_id,
00610 const TAO_MProfile &profiles);
00611
00612
00613
00614
00615 CORBA::Object_ptr create_object (TAO_Stub *the_stub);
00616
00617
00618
00619
00620
00621
00622
00623
00624 CORBA::Long initialize_object (TAO_Stub *the_stub, CORBA::Object_ptr obj);
00625
00626
00627
00628
00629 CORBA::Long reinitialize_object (TAO_Stub *stub);
00630
00631
00632 const char *orbid (void) const;
00633
00634
00635
00636 CORBA::Object_ptr implrepo_service (void);
00637 void implrepo_service (const CORBA::Object_ptr ir);
00638
00639
00640
00641 CORBA::Boolean use_implrepo (void);
00642
00643
00644 CORBA::Boolean imr_endpoints_in_ior (void);
00645
00646
00647 CORBA::Object_ptr resolve_typecodefactory (void);
00648
00649 #if TAO_HAS_INTERCEPTORS == 1
00650
00651 CORBA::Object_ptr resolve_picurrent (void);
00652 #endif
00653
00654
00655 CORBA::Object_ptr resolve_poa_current (void);
00656
00657
00658 CORBA::Object_ptr resolve_codecfactory (void);
00659
00660
00661 CORBA::Object_ptr resolve_compression_manager (void);
00662
00663
00664 CORBA::Object_ptr resolve_dynanyfactory (void);
00665
00666
00667 CORBA::Object_ptr resolve_ior_manipulation (void);
00668
00669 TAO_ZIOP_Adapter* ziop_adapter_i (void);
00670
00671
00672 CORBA::Object_ptr resolve_ior_table (void);
00673
00674
00675 CORBA::Object_ptr resolve_monitor (void);
00676
00677
00678
00679 CORBA::Object_ptr resolve_rir (const char *name);
00680
00681 #if defined (TAO_HAS_CORBA_MESSAGING) && TAO_HAS_CORBA_MESSAGING != 0
00682
00683 CORBA::Object_ptr resolve_rt_orb (void);
00684 #endif
00685
00686
00687
00688 const char *server_id (void) const;
00689
00690
00691 CORBA::ORB_ObjectIdList *list_initial_references (void);
00692
00693
00694 unsigned long _incr_refcnt (void);
00695 unsigned long _decr_refcnt (void);
00696 unsigned long _refcnt (void) const;
00697
00698
00699
00700
00701 int register_handle (ACE_HANDLE handle);
00702
00703
00704
00705
00706 int remove_handle (ACE_HANDLE handle);
00707
00708
00709
00710
00711
00712
00713
00714
00715
00716
00717
00718
00719
00720
00721
00722 CORBA::Boolean service_profile_selection (const TAO_MProfile &mprofile,
00723 TAO_Profile *&profile);
00724
00725
00726
00727
00728
00729
00730 CORBA::Boolean object_is_nil (CORBA::Object_ptr object);
00731
00732
00733
00734
00735
00736
00737 TAO_Service_Callbacks::Profile_Equivalence is_profile_equivalent (
00738 const TAO_Profile *this_p,
00739 const TAO_Profile *that_p);
00740
00741
00742
00743
00744
00745
00746 CORBA::ULong hash_service (TAO_Profile *this_p, CORBA::ULong max);
00747
00748
00749 TAO_Fault_Tolerance_Service &fault_tolerance_service (void);
00750
00751
00752
00753
00754 CORBA::Boolean ft_send_extended_sc (void);
00755
00756
00757
00758
00759 TAO::Invocation_Status service_raise_comm_failure (
00760 IOP::ServiceContextList &clist,
00761 TAO_Profile *profile);
00762
00763
00764
00765
00766 TAO::Invocation_Status service_raise_transient_failure (
00767 IOP::ServiceContextList &clist,
00768 TAO_Profile *profile);
00769
00770
00771
00772
00773
00774
00775
00776
00777
00778
00779
00780 #if TAO_HAS_INTERCEPTORS == 1
00781
00782
00783 CORBA::Object_ptr pi_current (void);
00784
00785
00786 void pi_current (CORBA::Object_ptr current);
00787
00788
00789 void add_interceptor (
00790 PortableInterceptor::ClientRequestInterceptor_ptr interceptor);
00791
00792
00793 void add_interceptor (
00794 PortableInterceptor::ServerRequestInterceptor_ptr interceptor);
00795
00796
00797 void add_interceptor (
00798 PortableInterceptor::ClientRequestInterceptor_ptr interceptor,
00799 const CORBA::PolicyList& policies);
00800
00801
00802 void add_interceptor (
00803 PortableInterceptor::ServerRequestInterceptor_ptr interceptor,
00804 const CORBA::PolicyList& policies);
00805
00806
00807
00808 TAO::ClientRequestInterceptor_Adapter *clientrequestinterceptor_adapter (void);
00809
00810
00811
00812 TAO::ServerRequestInterceptor_Adapter *serverrequestinterceptor_adapter (void);
00813
00814 #endif
00815
00816
00817 void add_interceptor (PortableInterceptor::IORInterceptor_ptr interceptor);
00818
00819
00820
00821 TAO_Valuetype_Adapter *valuetype_adapter (void);
00822
00823 #if !defined(CORBA_E_MICRO)
00824
00825 CORBA::ValueFactory register_value_factory (
00826 const char *repository_id,
00827 CORBA::ValueFactory factory);
00828 #endif
00829
00830 #if !defined(CORBA_E_MICRO)
00831 void unregister_value_factory (const char * repository_id);
00832 #endif
00833
00834 #if !defined(CORBA_E_MICRO)
00835 CORBA::ValueFactory lookup_value_factory (const char *repository_id);
00836 #endif
00837
00838
00839
00840 TAO_IORInterceptor_Adapter *ior_interceptor_adapter (void);
00841
00842
00843
00844
00845
00846 CORBA::Boolean bidir_giop_policy (void);
00847 void bidir_giop_policy (CORBA::Boolean);
00848
00849
00850
00851
00852 TAO_Object_Ref_Table &object_ref_table (void);
00853
00854
00855 TAO::ObjectKey_Table &object_key_table (void);
00856
00857
00858 TAO_Request_Dispatcher *request_dispatcher (void);
00859
00860
00861
00862
00863 void request_dispatcher (TAO_Request_Dispatcher *rd);
00864
00865
00866
00867 void load_policy_validators (TAO_Policy_Validator &validator);
00868
00869
00870
00871
00872
00873
00874
00875
00876
00877 TAO_Flushing_Strategy *flushing_strategy (void);
00878
00879
00880 TAO_Codeset_Manager *codeset_manager (void);
00881
00882 typedef ACE_Array_Map<ACE_CString, ACE_CString> InitRefMap;
00883
00884
00885 InitRefMap * init_ref_map (void);
00886
00887
00888
00889 void set_default (const char * orb_id);
00890
00891
00892 void not_default (const char * orb_id);
00893
00894
00895
00896 CORBA::Boolean is_permanent_forward_condition
00897 (const CORBA::Object_ptr obj,
00898 const TAO_Service_Context &service_context);
00899
00900
00901 ACE_Service_Gestalt* configuration () const;
00902
00903
00904 auto_ptr<TAO_GIOP_Fragmentation_Strategy>
00905 fragmentation_strategy (TAO_Transport * transport);
00906
00907 #if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1)
00908 void set_eager_transport_queueing_strategy (
00909 TAO::Transport_Queueing_Strategy* strategy);
00910
00911 void set_delayed_transport_queueing_strategy (
00912 TAO::Transport_Queueing_Strategy* strategy);
00913 #endif
00914
00915 protected:
00916
00917
00918
00919 ~TAO_ORB_Core (void);
00920
00921
00922
00923 int init (int &argc, char *argv[]);
00924
00925
00926
00927 int fini (void);
00928
00929
00930 ACE_Data_Block *create_data_block_i (size_t size,
00931 ACE_Allocator *buffer_allocator,
00932 ACE_Allocator *dblock_allocator,
00933 ACE_Lock *lock);
00934
00935
00936 void resolve_typecodefactory_i (void);
00937
00938
00939 void resolve_poa_current_i (void);
00940
00941 #if TAO_HAS_INTERCEPTORS == 1
00942
00943 void resolve_picurrent_i (void);
00944
00945
00946
00947 TAO::ClientRequestInterceptor_Adapter *clientrequestinterceptor_adapter_i (void);
00948
00949
00950
00951 TAO::ServerRequestInterceptor_Adapter *serverrequestinterceptor_adapter_i (void);
00952
00953 #endif
00954
00955
00956 void resolve_codecfactory_i (void);
00957
00958
00959 void resolve_compression_manager_i (void);
00960
00961
00962 void resolve_dynanyfactory_i (void);
00963
00964
00965 void resolve_iormanipulation_i (void);
00966
00967
00968 void resolve_monitor_i (void);
00969
00970
00971
00972 void services_callbacks_init (void);
00973
00974
00975
00976
00977 void destroy_interceptors (void);
00978
00979
00980
00981
00982 int set_endpoint_helper (const ACE_CString &lane,
00983 const ACE_CString &endpoints);
00984
00985
00986
00987 TAO::PolicyFactory_Registry_Adapter *policy_factory_registry_i (void);
00988
00989
00990
00991 TAO::ORBInitializer_Registry_Adapter *orbinitializer_registry_i (void);
00992
00993
00994 CORBA::Long initialize_object_i (TAO_Stub *the_stub,
00995 const TAO_MProfile& mprofile);
00996
00997 private:
00998
00999
01000
01001 TAO_ORB_Core(const TAO_ORB_Core&);
01002 void operator=(const TAO_ORB_Core&);
01003
01004
01005
01006 void resolve_ior_table_i (void);
01007
01008
01009
01010 CORBA::Boolean is_collocation_enabled (TAO_ORB_Core *other_orb,
01011 const TAO_MProfile &mp);
01012
01013 bool use_local_memory_pool_;
01014
01015 protected:
01016
01017
01018 TAO_SYNCH_MUTEX lock_;
01019
01020 TAO_Thread_Lane_Resources_Manager *thread_lane_resources_manager_;
01021
01022 TAO_Collocation_Resolver *collocation_resolver_;
01023
01024 TAO_Stub_Factory *stub_factory_;
01025
01026 TAO_ProtocolFactorySet *protocol_factories_;
01027
01028
01029
01030 CORBA::Object_ptr implrepo_service_;
01031
01032
01033 int use_implrepo_;
01034
01035
01036 int imr_endpoints_in_ior_;
01037
01038
01039 CORBA::Object_ptr typecode_factory_;
01040
01041
01042 CORBA::Object_ptr codec_factory_;
01043
01044
01045 CORBA::Object_ptr compression_manager_;
01046
01047
01048 CORBA::Object_ptr dynany_factory_;
01049
01050
01051 CORBA::Object_ptr ior_manip_factory_;
01052
01053
01054 CORBA::Object_ptr ior_table_;
01055
01056
01057 CORBA::Object_ptr monitor_;
01058
01059 #if defined (TAO_HAS_CORBA_MESSAGING) && TAO_HAS_CORBA_MESSAGING != 0
01060
01061 CORBA::Object_var rt_orb_;
01062
01063
01064 CORBA::Object_var rt_current_;
01065 #endif
01066
01067
01068
01069
01070
01071
01072
01073
01074
01075 CORBA::ORB_ptr orb_;
01076
01077
01078
01079
01080 CORBA::Object_var root_poa_;
01081
01082
01083 TAO_ORB_Parameters orb_params_;
01084
01085
01086 InitRefMap init_ref_map_;
01087
01088
01089
01090
01091 TAO_Object_Ref_Table object_ref_table_;
01092
01093
01094 TAO::ObjectKey_Table object_key_table_;
01095
01096
01097 char *orbid_;
01098
01099
01100 TAO_Resource_Factory *resource_factory_;
01101
01102
01103 ACE_CString server_id_;
01104
01105
01106 TAO_Client_Strategy_Factory *client_factory_;
01107
01108
01109 TAO_Server_Strategy_Factory *server_factory_;
01110
01111
01112
01113
01114
01115
01116
01117 TAO_Fault_Tolerance_Service ft_service_;
01118
01119
01120
01121
01122
01123
01124 CORBA::Boolean ft_send_extended_sc_;
01125
01126
01127
01128 CORBA::Boolean opt_for_collocation_;
01129
01130
01131
01132 CORBA::Boolean use_global_collocation_;
01133
01134
01135 CORBA::ULong collocation_strategy_;
01136
01137 #if (TAO_HAS_CORBA_MESSAGING == 1)
01138
01139
01140 TAO_Policy_Manager *policy_manager_;
01141
01142
01143 TAO_Policy_Set *default_policies_;
01144
01145
01146 TAO_Policy_Current *policy_current_;
01147
01148 #endif
01149
01150
01151 TAO_Request_Dispatcher *request_dispatcher_;
01152
01153
01154
01155
01156 CORBA::Object_var poa_current_;
01157
01158
01159 TAO_Adapter_Registry adapter_registry_;
01160
01161
01162 TAO_Adapter *poa_adapter_;
01163
01164
01165 ACE_Thread_Manager tm_;
01166
01167
01168 ACE_Lock_Adapter<TAO_SYNCH_MUTEX> data_block_lock_;
01169
01170
01171
01172 TAO_Cleanup_Func_Registry tss_cleanup_funcs_;
01173
01174
01175 ACE_TSS_TYPE (TAO_ORB_Core_TSS_Resources) tss_resources_;
01176
01177
01178 bool has_shutdown_;
01179
01180
01181
01182 int thread_per_connection_use_timeout_;
01183 ACE_Time_Value thread_per_connection_timeout_;
01184
01185
01186
01187 TAO_SYNCH_MUTEX open_lock_;
01188
01189 TAO_Endpoint_Selector_Factory *endpoint_selector_factory_;
01190
01191 #if (TAO_HAS_BUFFERING_CONSTRAINT_POLICY == 1)
01192
01193
01194 TAO::Transport_Queueing_Strategy *eager_transport_queueing_strategy_;
01195
01196
01197 TAO::Transport_Queueing_Strategy *delayed_transport_queueing_strategy_;
01198
01199
01200
01201 TAO::Transport_Queueing_Strategy *flush_transport_queueing_strategy_;
01202
01203 #endif
01204
01205
01206 ACE_Atomic_Op<TAO_SYNCH_MUTEX, unsigned long> refcount_;
01207
01208
01209 TAO::PolicyFactory_Registry_Adapter *policy_factory_registry_;
01210
01211
01212 TAO::ORBInitializer_Registry_Adapter *orbinitializer_registry_;
01213
01214
01215 TAO_Service_Context_Registry service_context_registry_;
01216
01217 #if (TAO_HAS_INTERCEPTORS == 1)
01218
01219
01220
01221
01222
01223
01224
01225 CORBA::Object_ptr pi_current_;
01226
01227
01228 TAO::ClientRequestInterceptor_Adapter *client_request_interceptor_adapter_;
01229
01230
01231 TAO::ServerRequestInterceptor_Adapter *server_request_interceptor_adapter_;
01232
01233 #endif
01234
01235
01236 TAO_IORInterceptor_Adapter *ior_interceptor_adapter_;
01237
01238
01239 TAO_Valuetype_Adapter *valuetype_adapter_;
01240
01241
01242 TAO_Parser_Registry parser_registry_;
01243
01244
01245 TAO_BiDir_Adapter *bidir_adapter_;
01246
01247
01248 CORBA::Boolean bidir_giop_policy_;
01249
01250
01251 TAO_ZIOP_Adapter *ziop_adapter_;
01252
01253
01254 CORBA::Boolean ziop_enabled_;
01255
01256
01257 TAO_Flushing_Strategy *flushing_strategy_;
01258
01259
01260 TAO_Codeset_Manager *codeset_manager_;
01261
01262
01263 ACE_Intrusive_Auto_Ptr<ACE_Service_Gestalt> config_;
01264
01265
01266 Sync_Scope_Hook sync_scope_hook_;
01267
01268
01269 Timeout_Hook timeout_hook_;
01270 };
01271
01272
01273
01274
01275
01276
01277
01278
01279
01280
01281
01282
01283
01284
01285
01286
01287
01288
01289 class TAO_Export TAO_ORB_Core_Static_Resources : public ACE_Service_Object
01290 {
01291 public:
01292
01293
01294 static TAO_ORB_Core_Static_Resources* instance (void);
01295
01296 public:
01297
01298
01299
01300 ACE_CString network_priority_protocols_hooks_name_;
01301
01302
01303 TAO_ORB_Core::Timeout_Hook connection_timeout_hook_;
01304
01305
01306
01307
01308
01309
01310
01311 ACE_CString resource_factory_name_;
01312
01313
01314
01315
01316
01317
01318
01319 ACE_CString dynamic_adapter_name_;
01320
01321
01322
01323
01324
01325
01326
01327 ACE_CString ifr_client_adapter_name_;
01328
01329
01330
01331
01332
01333
01334
01335
01336 ACE_CString typecodefactory_adapter_name_;
01337
01338
01339
01340
01341
01342
01343
01344
01345
01346 ACE_CString iorinterceptor_adapter_factory_name_;
01347
01348
01349
01350
01351
01352
01353
01354
01355
01356 ACE_CString valuetype_adapter_factory_name_;
01357
01358
01359 TAO_ORB_Core::Timeout_Hook alt_connection_timeout_hook_;
01360
01361
01362
01363
01364 TAO_ORB_Core_Static_Resources (void);
01365 TAO_ORB_Core_Static_Resources& operator=
01366 (const TAO_ORB_Core_Static_Resources&);
01367
01368 private:
01369
01370
01371
01372
01373 static TAO_ORB_Core_Static_Resources* initialization_reference_;
01374 };
01375
01376
01377
01378
01379
01380 TAO_Export TAO_ORB_Core * TAO_ORB_Core_instance (void);
01381
01382
01383
01384 ACE_STATIC_SVC_DECLARE_EXPORT (TAO, TAO_ORB_Core_Static_Resources)
01385 ACE_FACTORY_DECLARE (TAO, TAO_ORB_Core_Static_Resources)
01386
01387 TAO_END_VERSIONED_NAMESPACE_DECL
01388
01389 #if defined (__ACE_INLINE__)
01390 # include "tao/ORB_Core.inl"
01391 #endif
01392
01393 #include "ace/post.h"
01394 #endif