blob: a33983a0dc67501c99da736e576879d23a333feb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
// -*- C++ -*-
// ===================================================================
/**
* @file TSS_Resources.h
*
* $Id$
*
* @author DOC Group - ISIS at Vanderbilt University
* @author DOC Center - Washington University at St. Louis
* @author DOC Laboratory - University of California at Irvine
*/
// ===================================================================
#ifndef TAO_TAO_TSS_RESOURCES_H
#define TAO_TAO_TSS_RESOURCES_H
#include /**/ "ace/pre.h"
#include "tao/TAO_Export.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "tao/Environment.h"
#include "tao/Policy_Current_Impl.h"
// Forward declarations
namespace TAO
{
class GUIResource_Factory;
}
/**
* @class TAO_TSS_Resources
*
* @brief The TSS resoures shared by all the ORBs
*
* This class is used by TAO to store the resources that are
* thread-specific but are *not* ORB specific. The members are public
* because only the ORB Core is expected to access them.
*/
class TAO_Export TAO_TSS_Resources
{
public:
/// Constructor
TAO_TSS_Resources (void);
/// Destructor
~TAO_TSS_Resources (void);
/// Return a singleton instance of this class.
static TAO_TSS_Resources * instance (void);
private:
/// Do not copy TSS resources
//@{
ACE_UNIMPLEMENTED_FUNC (TAO_TSS_Resources(const TAO_TSS_Resources&))
ACE_UNIMPLEMENTED_FUNC (void operator=(const TAO_TSS_Resources&))
//@}
public:
/**
* Points to structure containing state for the current upcall
* context in this thread. Note that it does not come from the
* resource factory because it must always be held in
* thread-specific storage. For now, since TAO_ORB_Core instances
* are TSS singletons, we simply ride along and don't allocate
* occupy another TSS slot since there are some platforms where
* those are precious commodities (e.g., NT).
*/
void * poa_current_impl_;
void * rtscheduler_current_impl_;
void * rtscheduler_previous_current_impl_;
/// The default environment for the thread.
CORBA::Environment * default_environment_;
/// If the user (or library) provides no environment the ORB_Core
/// still holds one.
CORBA::Environment tss_environment_;
#if (TAO_HAS_CORBA_MESSAGING == 1)
/// The initial PolicyCurrent for this thread. Should be a TSS
/// resource.
TAO_Policy_Current_Impl initial_policy_current_;
/// This pointer is reset by the POA on each upcall.
TAO_Policy_Current_Impl * policy_current_;
#endif /* TAO_HAS_CORBA_MESSAGING == 1 */
/// A factory for creating GUIReactors.
/**
* @c GUIResource_Factory has to be stored in TSS, as GUIReactors
* are operational only in within the context of GUI event loops.
*/
TAO::GUIResource_Factory * gui_resource_factory_;
};
#include /**/ "ace/post.h"
#endif /* TAO_TSS_RESOURCES_H */
|