1 //
2 // Copyright (c) ZeroC, Inc. All rights reserved.
3 //
4 
5 #ifndef CALLBACK_I_H
6 #define CALLBACK_I_H
7 
8 #include <IceUtil/Mutex.h>
9 #include <IceUtil/Monitor.h>
10 #include <Callback.h>
11 #include <vector>
12 
13 class CallbackReceiverI : public ::Test::CallbackReceiver, public IceUtil::Monitor<IceUtil::Mutex>
14 {
15 public:
16 
17     CallbackReceiverI();
18 
19     virtual void callback(const Ice::Current&);
20     virtual void callbackEx(const Ice::Current&);
21     virtual void concurrentCallback_async(const ::Test::AMD_CallbackReceiver_concurrentCallbackPtr&,
22                                       Ice::Int,
23                                       const ::Ice::Current&);
24 
25     virtual void waitCallback(const ::Ice::Current&);
26     virtual void callbackWithPayload(const Ice::ByteSeq&, const ::Ice::Current&);
27 
28     void callbackOK(int = 1);
29     void waitCallbackOK();
30     void callbackWithPayloadOK();
31     void notifyWaitCallback();
32     void answerConcurrentCallbacks(unsigned int);
33 
34 private:
35 
36     int _callback;
37     bool _waitCallback;
38     bool _callbackWithPayload;
39     bool _finishWaitCallback;
40     std::vector<std::pair< ::Test::AMD_CallbackReceiver_concurrentCallbackPtr, Ice::Int> > _callbacks;
41 };
42 typedef IceUtil::Handle<CallbackReceiverI> CallbackReceiverIPtr;
43 
44 class CallbackI : public ::Test::Callback
45 {
46 public:
47 
48     CallbackI();
49 
50     virtual void initiateCallback_async(const ::Test::AMD_Callback_initiateCallbackPtr&,
51                                         const ::Test::CallbackReceiverPrx&, const Ice::Current&);
52     virtual void initiateCallbackEx_async(const ::Test::AMD_Callback_initiateCallbackExPtr&,
53                                           const ::Test::CallbackReceiverPrx&, const Ice::Current&);
54     virtual void initiateConcurrentCallback_async(const ::Test::AMD_Callback_initiateConcurrentCallbackPtr&,
55                                                   Ice::Int,
56                                                   const ::Test::CallbackReceiverPrx&,
57                                                   const ::Ice::Current&);
58     virtual void initiateWaitCallback_async(const ::Test::AMD_Callback_initiateWaitCallbackPtr&,
59                                             const ::Test::CallbackReceiverPrx&,
60                                             const ::Ice::Current&);
61     virtual void initiateCallbackWithPayload_async(const ::Test::AMD_Callback_initiateCallbackWithPayloadPtr&,
62                                                    const ::Test::CallbackReceiverPrx&,
63                                                    const ::Ice::Current&);
64 
65     virtual void shutdown(const Ice::Current&);
66 };
67 
68 #endif
69