2014-05-29 00:25:28 +08:00
|
|
|
#ifndef amqp_channel_p_h__
|
|
|
|
|
#define amqp_channel_p_h__
|
|
|
|
|
|
|
|
|
|
#include <QPointer>
|
2014-08-26 21:57:08 +08:00
|
|
|
#include "amqp_frame_p.h"
|
2014-05-29 00:25:28 +08:00
|
|
|
|
|
|
|
|
#define METHOD_ID_ENUM(name, id) name = id, name ## Ok
|
|
|
|
|
|
|
|
|
|
namespace QAMQP
|
|
|
|
|
{
|
2014-06-04 21:46:15 +08:00
|
|
|
|
2014-05-29 00:25:28 +08:00
|
|
|
class Client;
|
2014-06-04 01:00:25 +08:00
|
|
|
class Network;
|
2014-05-29 00:25:28 +08:00
|
|
|
class ClientPrivate;
|
2014-06-04 21:46:15 +08:00
|
|
|
class ChannelPrivate : public Frame::MethodHandler
|
2014-05-29 00:25:28 +08:00
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
enum MethodId {
|
|
|
|
|
METHOD_ID_ENUM(miOpen, 10),
|
|
|
|
|
METHOD_ID_ENUM(miFlow, 20),
|
|
|
|
|
METHOD_ID_ENUM(miClose, 40)
|
|
|
|
|
};
|
|
|
|
|
|
2014-05-29 04:28:45 +08:00
|
|
|
enum BasicMethod {
|
2014-05-29 00:25:28 +08:00
|
|
|
METHOD_ID_ENUM(bmQos, 10),
|
|
|
|
|
METHOD_ID_ENUM(bmConsume, 20),
|
|
|
|
|
METHOD_ID_ENUM(bmCancel, 30),
|
|
|
|
|
bmPublish = 40,
|
|
|
|
|
bmReturn = 50,
|
|
|
|
|
bmDeliver = 60,
|
|
|
|
|
METHOD_ID_ENUM(bmGet, 70),
|
|
|
|
|
bmGetEmpty = 72,
|
|
|
|
|
bmAck = 80,
|
|
|
|
|
bmReject = 90,
|
|
|
|
|
bmRecoverAsync = 100,
|
|
|
|
|
METHOD_ID_ENUM(bmRecover, 110)
|
|
|
|
|
};
|
|
|
|
|
|
2014-05-30 23:12:09 +08:00
|
|
|
ChannelPrivate(Channel *q);
|
2014-05-29 00:25:28 +08:00
|
|
|
virtual ~ChannelPrivate();
|
|
|
|
|
|
2014-06-04 21:50:31 +08:00
|
|
|
void init(int channel, Client *client);
|
2014-06-04 21:46:15 +08:00
|
|
|
void sendFrame(const Frame::Base &frame);
|
|
|
|
|
|
2014-05-29 00:25:28 +08:00
|
|
|
void open();
|
2014-08-08 01:52:09 +08:00
|
|
|
void flow(bool active);
|
2014-05-29 00:25:28 +08:00
|
|
|
void flowOk();
|
|
|
|
|
void close(int code, const QString &text, int classId, int methodId);
|
|
|
|
|
|
2014-06-04 21:46:15 +08:00
|
|
|
// reimp MethodHandler
|
|
|
|
|
virtual bool _q_method(const Frame::Method &frame);
|
2014-05-29 04:28:45 +08:00
|
|
|
void openOk(const Frame::Method &frame);
|
|
|
|
|
void flow(const Frame::Method &frame);
|
|
|
|
|
void flowOk(const Frame::Method &frame);
|
|
|
|
|
void close(const Frame::Method &frame);
|
|
|
|
|
void closeOk(const Frame::Method &frame);
|
2014-06-26 22:28:58 +08:00
|
|
|
void qosOk(const Frame::Method &frame);
|
2014-05-29 00:25:28 +08:00
|
|
|
|
2014-06-04 21:46:15 +08:00
|
|
|
// private slots
|
2014-05-29 00:25:28 +08:00
|
|
|
virtual void _q_disconnected();
|
|
|
|
|
void _q_open();
|
|
|
|
|
|
2014-06-04 01:00:25 +08:00
|
|
|
QPointer<Client> client;
|
2014-05-29 00:25:28 +08:00
|
|
|
QString name;
|
2014-06-04 21:50:31 +08:00
|
|
|
int channelNumber;
|
2014-06-04 01:00:25 +08:00
|
|
|
static int nextChannelNumber;
|
2014-05-29 00:25:28 +08:00
|
|
|
bool opened;
|
|
|
|
|
bool needOpen;
|
|
|
|
|
|
2014-06-26 22:28:58 +08:00
|
|
|
qint32 prefetchSize;
|
|
|
|
|
qint32 requestedPrefetchSize;
|
|
|
|
|
qint16 prefetchCount;
|
|
|
|
|
qint16 requestedPrefetchCount;
|
|
|
|
|
|
2014-06-12 01:44:30 +08:00
|
|
|
Error error;
|
2014-06-07 00:10:51 +08:00
|
|
|
QString errorString;
|
|
|
|
|
|
2014-05-29 04:28:45 +08:00
|
|
|
Q_DECLARE_PUBLIC(Channel)
|
2014-05-29 00:25:28 +08:00
|
|
|
Channel * const q_ptr;
|
|
|
|
|
};
|
|
|
|
|
|
2014-05-29 01:52:27 +08:00
|
|
|
} // namespace QAMQP
|
|
|
|
|
|
2014-05-29 00:25:28 +08:00
|
|
|
#endif // amqp_channel_p_h__
|