00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "qpid/shared_ptr.h"
00022 #include "qpid/sys/Monitor.h"
00023
00024 #ifndef _ResponseHandler_
00025 #define _ResponseHandler_
00026
00027 namespace qpid {
00028
00029 namespace framing {
00030 class AMQMethodBody;
00031 }
00032
00033 namespace client {
00034
00038 class ResponseHandler{
00039 typedef shared_ptr<framing::AMQMethodBody> MethodPtr;
00040 bool waiting;
00041 bool shutdownFlag;
00042 MethodPtr response;
00043 sys::Monitor monitor;
00044
00045 public:
00046 ResponseHandler();
00047 ~ResponseHandler();
00048
00050 bool isWaiting();
00051
00053 void signalResponse(MethodPtr response);
00054
00056 void expect();
00057
00059 MethodPtr receive();
00060
00062 MethodPtr receive(framing::ClassId, framing::MethodId);
00063
00065 template <class BodyType>
00066 shared_ptr<BodyType> receive() {
00067 return shared_polymorphic_downcast<BodyType>(
00068 receive(BodyType::CLASS_ID, BodyType::METHOD_ID));
00069 }
00070 };
00071
00072 }}
00073
00074
00075 #endif