00001 #ifndef _broker_MessageAdapter_h
00002 #define _broker_MessageAdapter_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <string>
00026 #include "qpid/framing/BasicPublishBody.h"
00027 #include "qpid/framing/FieldTable.h"
00028 #include "qpid/framing/FrameSet.h"
00029 #include "qpid/framing/DeliveryProperties.h"
00030 #include "qpid/framing/MessageProperties.h"
00031 #include "qpid/framing/MessageTransferBody.h"
00032 #include "qpid/framing/Message010TransferBody.h"
00033
00034 namespace qpid {
00035 namespace broker {
00036
00037
00038 struct MessageAdapter
00039 {
00040 virtual ~MessageAdapter() {}
00041
00042 virtual std::string getRoutingKey(const framing::FrameSet& f) = 0;
00043 virtual std::string getExchange(const framing::FrameSet& f) = 0;
00044 virtual bool isImmediate(const framing::FrameSet& f) = 0;
00045 virtual const framing::FieldTable* getApplicationHeaders(const framing::FrameSet& f) = 0;
00046 virtual bool isPersistent(const framing::FrameSet& f) = 0;
00047 virtual bool requiresAccept(const framing::FrameSet& f) = 0;
00048 };
00049
00050 struct TransferAdapter : MessageAdapter
00051 {
00052 virtual std::string getRoutingKey(const framing::FrameSet& f);
00053 virtual std::string getExchange(const framing::FrameSet& f);
00054 virtual const framing::FieldTable* getApplicationHeaders(const framing::FrameSet& f);
00055 virtual bool isPersistent(const framing::FrameSet& f);
00056 bool isImmediate(const framing::FrameSet&);
00057 bool requiresAccept(const framing::FrameSet& f);
00058 };
00059
00060 struct PreviewAdapter : TransferAdapter
00061 {
00062 std::string getExchange(const framing::FrameSet& f);
00063 std::string getRoutingKey(const framing::FrameSet& f);
00064 const framing::FieldTable* getApplicationHeaders(const framing::FrameSet& f);
00065 bool isPersistent(const framing::FrameSet& f);
00066 };
00067
00068 }}
00069
00070
00071 #endif