Image Processing Reference
In-Depth Information
2.3.3.1 Reply Wait Strategy
When a client makes a remote two-way function call, the caller thread needs to block until it receives a
reply back from the server. he two-way function call is made on the client stub, which then marshals
the parameters into a Request and sends it to the server. he two-way function call semantics requires
the caller thread to block until the reply comes back from the server. here are two different strategies
to wait for the reply in TAO—“Wait on Connection” and “Wait on Reactor” []. nORB uses the Wait
on Connection strategy to wait for the reply.
2.3.3.2 Upcall Dispatch Strategy
On the server side, there are different strategies to process an incoming request and send the reply
back to the client. Two well-known strategies are “Direct Upcall” and “Queued Upcall” []. In the
Direct Upcall strategy, the upcall is dispatched in the same thread as the I/O thread, which listens
for incoming requests from the connection stream. The Queued Upcall strategy follows the Half
Sync Half Async pattern [,]. In contrast with the direct upcall strategy, a network I/O thread is
dedicated to receiving requests from clients. Once the request is received, it is encapsulated into a
command object and then put into a queue. his queue is shared with another thread, in which the
upcall dispatch is done. TAO uses the Direct Upcall strategy, whereas nORB uses the Queued Upcall
strategy to address the simulation issues presented in Section .., as is discussed in Section ...
2.3.4 Time-Triggered Dispatching
In the Active Damage Detection application described in Section .., control events must be trig-
gered predictably at various rates. We developed a dispatcher for nORB to trigger these events
predictably, based on the Kokyu [] dispatching model. Kokyu abstracts combinations of funda-
mental real-time scheduling and dispatching mechanisms to enforce a variety of real-time policies,
including well-known strategies such as Rate Monotonic Scheduling (RMS) [], Earliest Deadline
First [], and Maximum Urgency First [].
This dispatcher is used to trigger events on the client side and for dispatching upcalls on the server
side. A “Dispatchable” interface is provided, which is to be implemented by an application object that
needs to be time-triggered. he “handle_dispatch()” method is called on the Dispatchable object. In
the ping-scheduling application, some application objects are both Dispatchable and make remote
calls when triggered. Figure . shows the message flow from the client to the server when a timer
expires on the client side, leading to a remote object method call on the server side.
Clients
Servants
Skeleton
Skeleton
Stub
Stub
SOA
Dispatcher
Dispatcher
LO
HI
nORB
FIGURE .
Kokyu dispatcher in nORB.
 
Search WWH ::




Custom Search