blob: c6d30eedf093a9b7f67f788ff1c7239442e1d161 (
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
Fri Apr 12 15:39:50 2002 Balachandran Natarajan <bala@cs.wustl.edu>
* tao/Connector_Impl.cpp: Dont add the handler to the reactor.
* tao/IIOP_Connector.cpp:
* tao/Strategies/SHMIOP_Connector.cpp:
* tao/Strategies/UIOP_Connector.cpp: Add the handler to the
reactor after the transport has been cached.
The above changes helps to works around a race condition. The
race occurs in the following scenario:
- the handler is added to the reactor as soon as the connection
is established
- the server crashes and a thread waiting on the reactor closes
down the connection. As the connection handler and transports
have not been ref counted (yet) they could be completely
destroyed.
- the thread that initiated the connection would try to
duplicate a null transport and try adding that to cache and
all hell would break loose.
The methodology adopted is to delay adding the handler to the
reactor till the handler is added to cache. This would make sure
that the transport is refcounted and hence the thread making the
connection will have a valid pointer to take action and do the
cleanup when it finds that the connection is closed.
Fri Apr 12 14:14:01 2002 Balachandran Natarajan <bala@cs.wustl.edu>
* tao/Connector_Registry.cpp:
* tao/Connector_Registry.h:
* tao/Connector_Registry.i: Added a new method, get_connector ()
which returns a TAO_Connector based on a TAO_Endpoint. Need to
deprecate connect (). The connector registry should not be
involved in doing active connects.
* tao/Invocation.cpp: Used the connector_registry's get_connector
() to retrieve a connector before calling a connect on it.
* tao/Transport_Connector.cpp:
* tao/Transport_Connector.h: Consolidated some of the code from
different protocols. All the transports before setting up a
connection look for a connection in cache. That part of the code
that looks for a connection in the cache has been moved in
here. If a connection is not found in cache, the control is
transferred to the underlying transports to set up a
connection.
* tao/IIOP_Connector.cpp:
* tao/IIOP_Connector.h:
* tao/Strategies/DIOP_Connector.cpp:
* tao/Strategies/DIOP_Connector.h:
* tao/Strategies/SHMIOP_Connector.cpp:
* tao/Strategies/SHMIOP_Connector.h:
* tao/Strategies/UIOP_Connector.cpp:
* tao/Strategies/UIOP_Connector.h : Renamed connect () to be
make_connect (). This method now exclusively sets up an active
connection from the client and adds the connection in cache.
Thu Apr 11 17:26:21 2002 Balachandran Natarajan <bala@cs.wustl.edu>
* tao/Strategies/SHMIOP_Connector.cpp:
* tao/Strategies/SHMIOP_Connector.h:
* tao/Strategies/UIOP_Connector.h:
* tao/Strategies/UIOP_Connector.cpp:
* tao/Strategies/DIOP_Connector.h:
* tao/Strategies/DIOP_Connector.cpp: Cleaned up left over
preconnect code.
Thu Apr 11 14:36:37 2002 Balachandran Natarajan <bala@cs.wustl.edu>
This checkin does the following
- Splits the file Pluggable.{h,cpp,i} into two files namely
Transport_Acceptor.{h,cpp,inl} and
Transport_Connector.{h,cpp,inl}.
- Removes support for preconnects () totally. The code for
preconnects is just #if 0'ed now. We can remove the code
totally once these changes stabilizes.
* tao/Pluggable.h:
* tao/Pluggable.cpp:
* tao/Pluggable.i: Files to be removed from the repository.
* tao/Transport_Acceptor.h:
* tao/Transport_Acceptor.cpp:
* tao/Transport_Acceptor.inl:
* tao/Transport_Connector.h:
* tao/Transport_Connector.cpp:
* tao/Transport_Connector.inl: New files to the repository.
* tao/Acceptor_Registry.cpp:
* tao/IIOP_Acceptor.h:
* tao/Tagged_Profile.cpp
* tao/PortableServer/Default_Acceptor_Filter.cpp:
* tao/RTCORBA/RT_Protocols_Hooks.cpp:
* tao/RTPortableServer/RT_Acceptor_Filters.cpp:
* tao/RTPortableServer/RT_Policy_Validator.cpp:
* tao/Strategies/DIOP_Acceptor.h:
* tao/Strategies/DIOP_Connector.h:
* tao/Strategies/SHMIOP_Acceptor.h:
* tao/Strategies/SHMIOP_Connector.h:
* tao/Strategies/UIOP_Acceptor.h:
* tao/Strategies/UIOP_Connector.h: Changed the #include's of
Pluggable.h to Transport_Acceptor.h or Transport_Connector.h, as
the case may be
* tao/GIOP_Message_Base.cpp:
* tao/GIOP_Message_Generator_Parser_12.cpp:
* tao/GIOP_Message_State.cpp:
* tao/Pluggable_Messaging.cpp: Removed #include's of Pluggable.h
since they are not needed.
* tao/DynamicInterface/DII_Reply_Dispatcher.cpp: Removed a few
unnecessary #includes.
* tao/Makefile:
* tao/DynamicInterface/Makefile:
* tao/Messaging/Makefile:
* tao/PortableServer/Makefile:
* tao/RTCORBA/Makefile:
* tao/RTPortableServer/Makefile:
* tao/Strategies/Makefile: Updated dependencies.
* tao/IIOP_Connector.h:
* tao/IIOP_Connector.cpp: Removed the method preconnects () and
template instantiations needed for them.
* tao/Connector_Registry.cpp:
* tao/Connector_Registry.h:
* tao/params.cpp:
* tao/params.h:
* tao/params.i:
* tao/ORB_Core.cpp:Removed references necessary for preconnects.
|