summaryrefslogtreecommitdiff
path: root/cpp/src/Glacier2/RequestQueue.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Glacier2/RequestQueue.h')
-rw-r--r--cpp/src/Glacier2/RequestQueue.h44
1 files changed, 19 insertions, 25 deletions
diff --git a/cpp/src/Glacier2/RequestQueue.h b/cpp/src/Glacier2/RequestQueue.h
index 2599b24f7aa..1ecba68e343 100644
--- a/cpp/src/Glacier2/RequestQueue.h
+++ b/cpp/src/Glacier2/RequestQueue.h
@@ -20,8 +20,8 @@ namespace Glacier2
class Request;
typedef IceUtil::Handle<Request> RequestPtr;
-class RequestQueue;
-typedef IceUtil::Handle<RequestQueue> RequestQueuePtr;
+class RequestQueueThread;
+typedef IceUtil::Handle<RequestQueueThread> RequestQueueThreadPtr;
class Request : public IceUtil::Shared
{
@@ -30,10 +30,9 @@ public:
Request(const Ice::ObjectPrx&, const std::pair<const Ice::Byte*, const Ice::Byte*>&, const Ice::Current&, bool,
const Ice::Context&, const Ice::AMD_Array_Object_ice_invokePtr&);
- bool invoke(const RequestQueuePtr&);
+ bool invoke();
bool override(const RequestPtr&) const;
- bool isBatch() const;
- Ice::ConnectionPtr getConnection() const;
+ const Ice::ObjectPrx& getProxy() const { return _proxy; }
private:
@@ -46,47 +45,42 @@ private:
const Ice::AMD_Array_Object_ice_invokePtr _amdCB;
};
-class Response : public IceUtil::Shared
+class RequestQueue : public IceUtil::Mutex, public IceUtil::Shared
{
public:
- Response(const Ice::AMD_Array_Object_ice_invokePtr&, bool, const std::pair<const Ice::Byte*, const Ice::Byte*>&);
- Response(const Ice::AMD_Array_Object_ice_invokePtr&, const Ice::Exception&);
+ RequestQueue(const RequestQueueThreadPtr&);
- void invoke();
-
-private:
+ bool addRequest(const RequestPtr&);
+ void flushRequests(std::set<Ice::ObjectPrx>&);
- const Ice::AMD_Array_Object_ice_invokePtr _amdCB;
- const bool _ok;
- const Ice::ByteSeq _outParams;
- const std::auto_ptr<Ice::Exception> _exception;
+private:
+
+ const RequestQueueThreadPtr _requestQueueThread;
+ std::vector<RequestPtr> _requests;
};
+typedef IceUtil::Handle<RequestQueue> RequestQueuePtr;
-class Response;
-typedef IceUtil::Handle<Response> ResponsePtr;
-class RequestQueue : public IceUtil::Thread, public IceUtil::Monitor<IceUtil::Mutex>
+class RequestQueueThread : public IceUtil::Thread, public IceUtil::Monitor<IceUtil::Mutex>
{
public:
- RequestQueue(const IceUtil::Time&);
- virtual ~RequestQueue();
-
+ RequestQueueThread(const IceUtil::Time&);
+ virtual ~RequestQueueThread();
+
+ void flushRequestQueue(const RequestQueuePtr&);
void destroy();
- bool addRequest(const RequestPtr&);
- void addResponse(const ResponsePtr&);
virtual void run();
private:
const IceUtil::Time _sleepTime;
- std::vector<RequestPtr> _requests;
- std::vector<ResponsePtr> _responses;
bool _destroy;
bool _sleep;
IceUtil::Time _sleepDuration;
+ std::vector<RequestQueuePtr> _queues;
};
}