blob: 93f811a839b61ad7b7476b8057c3cdb377458d56 [file]
/**
* Copyright (C) 2013 kangliqiang ,kangliq@163.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __COMMANDCUSTOMHEADER_H__
#define __COMMANDCUSTOMHEADER_H__
#include <string>
#include <json/json.h>
namespace rmq
{
/**
* RemotingCommand custom header
*
*/
class CommandCustomHeader
{
public :
virtual ~CommandCustomHeader() {}
virtual void encode(std::string& outData) = 0;
static CommandCustomHeader* decode(int code, Json::Value& data, bool isResponseType);
};
///////////////////////////////////////////////////////////////////////
// GET_ROUTEINTO_BY_TOPIC_VALUE
///////////////////////////////////////////////////////////////////////
class GetRouteInfoRequestHeader : public CommandCustomHeader
{
public:
GetRouteInfoRequestHeader()
{
};
~GetRouteInfoRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string topic;
};
///////////////////////////////////////////////////////////////////////
// UPDATE_AND_CREATE_TOPIC_VALUE
///////////////////////////////////////////////////////////////////////
class CreateTopicRequestHeader : public CommandCustomHeader
{
public:
CreateTopicRequestHeader()
{
readQueueNums = 0;
writeQueueNums = 0;
perm = 0;
topicSysFlag = 0;
order = false;
};
~CreateTopicRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string topic;
std::string defaultTopic;
int readQueueNums;
int writeQueueNums;
int perm;
std::string topicFilterType;
int topicSysFlag;
bool order;
};
///////////////////////////////////////////////////////////////////////
// SEND_MESSAGE_VALUE/SEND_MESSAGE_V2_VALUE
///////////////////////////////////////////////////////////////////////
class SendMessageRequestHeader: public CommandCustomHeader
{
public:
SendMessageRequestHeader()
: defaultTopicQueueNums(0),queueId(0),sysFlag(0),
bornTimestamp(0),flag(0),reconsumeTimes(0)
{
};
~SendMessageRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string producerGroup;
std::string topic;
std::string defaultTopic;
int defaultTopicQueueNums;
int queueId;
int sysFlag;
long long bornTimestamp;
int flag;
std::string properties;
int reconsumeTimes;
};
class SendMessageRequestHeaderV2: public CommandCustomHeader
{
public:
SendMessageRequestHeaderV2()
: d(0),e(0),f(0),
g(0),h(0),j(0)
{
};
~SendMessageRequestHeaderV2() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
static SendMessageRequestHeader* createSendMessageRequestHeaderV1(const SendMessageRequestHeaderV2* v2);
static SendMessageRequestHeaderV2* createSendMessageRequestHeaderV2(const SendMessageRequestHeader* v1);
public:
std::string a; //producerGroup
std::string b; //topic
std::string c; //defaultTopic
int d; //defaultTopicQueueNums
int e; //queueId
int f; //sysFlag
long long g; //bornTimestamp
int h; //flag
std::string i; //properties
int j; //reconsumeTimes
};
class SendMessageResponseHeader: public CommandCustomHeader
{
public:
SendMessageResponseHeader()
{
queueId = 0;
queueOffset = 0;
};
~SendMessageResponseHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string msgId;
int queueId;
long long queueOffset;
};
///////////////////////////////////////////////////////////////////////
// PULL_MESSAGE_VALUE
///////////////////////////////////////////////////////////////////////
class PullMessageRequestHeader: public CommandCustomHeader
{
public:
PullMessageRequestHeader()
{
queueId = 0;
queueOffset = 0;
maxMsgNums = 0;
sysFlag = 0;
commitOffset = 0;
suspendTimeoutMillis = 0;
subVersion = 0;
};
~PullMessageRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string consumerGroup;
std::string topic;
int queueId;
long long queueOffset;
int maxMsgNums;
int sysFlag;
long long commitOffset;
long long suspendTimeoutMillis;
std::string subscription;
long long subVersion;
};
class PullMessageResponseHeader: public CommandCustomHeader
{
public:
PullMessageResponseHeader()
{
suggestWhichBrokerId = 0;
nextBeginOffset = 0;
minOffset = 0;
maxOffset = 0;
};
~PullMessageResponseHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
long long suggestWhichBrokerId;
long long nextBeginOffset;
long long minOffset;
long long maxOffset;
};
///////////////////////////////////////////////////////////////////////
// GET_CONSUMER_LIST_BY_GROUP_VALUE
///////////////////////////////////////////////////////////////////////
class GetConsumerListByGroupRequestHeader : public CommandCustomHeader
{
public:
GetConsumerListByGroupRequestHeader() {};
~GetConsumerListByGroupRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string consumerGroup;
};
///////////////////////////////////////////////////////////////////////
// CONSUMER_SEND_MSG_BACK_VALUE
///////////////////////////////////////////////////////////////////////
class ConsumerSendMsgBackRequestHeader : public CommandCustomHeader
{
public:
ConsumerSendMsgBackRequestHeader()
{
offset = 0;
delayLevel = 0;
};
~ConsumerSendMsgBackRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
long long offset;
std::string group;
int delayLevel;
};
///////////////////////////////////////////////////////////////////////
// QUERY_CONSUMER_OFFSET_VALUE
///////////////////////////////////////////////////////////////////////
class QueryConsumerOffsetRequestHeader : public CommandCustomHeader
{
public:
QueryConsumerOffsetRequestHeader()
{
queueId = 0;
};
~QueryConsumerOffsetRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string consumerGroup;
std::string topic;
int queueId;
};
class QueryConsumerOffsetResponseHeader : public CommandCustomHeader
{
public:
QueryConsumerOffsetResponseHeader()
{
offset = 0;
};
~QueryConsumerOffsetResponseHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
long long offset;
};
///////////////////////////////////////////////////////////////////////
// UPDATE_CONSUMER_OFFSET_VALUE
///////////////////////////////////////////////////////////////////////
class UpdateConsumerOffsetRequestHeader : public CommandCustomHeader
{
public:
UpdateConsumerOffsetRequestHeader()
{
queueId = 0;
commitOffset = 0;
};
~UpdateConsumerOffsetRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string consumerGroup;
std::string topic;
int queueId;
long long commitOffset;
};
///////////////////////////////////////////////////////////////////////
// UNREGISTER_CLIENT_VALUE
///////////////////////////////////////////////////////////////////////
class UnregisterClientRequestHeader : public CommandCustomHeader
{
public:
UnregisterClientRequestHeader() {};
~UnregisterClientRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string clientID;
std::string producerGroup;
std::string consumerGroup;
};
///////////////////////////////////////////////////////////////////////
// VIEW_MESSAGE_BY_ID_VALUE
///////////////////////////////////////////////////////////////////////
class ViewMessageRequestHeader : public CommandCustomHeader
{
public:
ViewMessageRequestHeader()
{
offset = 0;
};
~ViewMessageRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
long long offset;
};
///////////////////////////////////////////////////////////////////////
// SEARCH_OFFSET_BY_TIMESTAMP_VALUE
///////////////////////////////////////////////////////////////////////
class SearchOffsetRequestHeader : public CommandCustomHeader
{
public:
SearchOffsetRequestHeader()
{
queueId = 0;
timestamp = 0;
};
~SearchOffsetRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string topic;
int queueId;
long long timestamp;
};
class SearchOffsetResponseHeader : public CommandCustomHeader
{
public:
SearchOffsetResponseHeader()
{
offset = 0;
};
~SearchOffsetResponseHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
long long offset;
};
///////////////////////////////////////////////////////////////////////
// GET_MAX_OFFSET_VALUE
///////////////////////////////////////////////////////////////////////
class GetMaxOffsetRequestHeader : public CommandCustomHeader
{
public:
GetMaxOffsetRequestHeader()
{
queueId = 0;
};
~GetMaxOffsetRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string topic;
int queueId;
};
class GetMaxOffsetResponseHeader : public CommandCustomHeader
{
public:
GetMaxOffsetResponseHeader()
{
offset = 0;
};
~GetMaxOffsetResponseHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
long long offset;
};
///////////////////////////////////////////////////////////////////////
// GET_MIN_OFFSET_VALUE
///////////////////////////////////////////////////////////////////////
class GetMinOffsetRequestHeader : public CommandCustomHeader
{
public:
GetMinOffsetRequestHeader()
{
queueId = 0;
};
~GetMinOffsetRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string topic;
int queueId;
};
class GetMinOffsetResponseHeader : public CommandCustomHeader
{
public:
GetMinOffsetResponseHeader()
{
offset = 0;
};
~GetMinOffsetResponseHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
long long offset;
};
///////////////////////////////////////////////////////////////////////
// GET_EARLIEST_MSG_STORETIME_VALUE
///////////////////////////////////////////////////////////////////////
class GetEarliestMsgStoretimeRequestHeader : public CommandCustomHeader
{
public:
GetEarliestMsgStoretimeRequestHeader()
{
queueId = 0;
};
~GetEarliestMsgStoretimeRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string topic;
int queueId;
};
class GetEarliestMsgStoretimeResponseHeader : public CommandCustomHeader
{
public:
GetEarliestMsgStoretimeResponseHeader()
{
timestamp = 0;
};
~GetEarliestMsgStoretimeResponseHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
long long timestamp;
};
///////////////////////////////////////////////////////////////////////
// QUERY_MESSAGE_VALUE
///////////////////////////////////////////////////////////////////////
class QueryMessageRequestHeader : public CommandCustomHeader
{
public:
QueryMessageRequestHeader()
{
maxNum = 0;
beginTimestamp = 0;
endTimestamp = 0;
};
~QueryMessageRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string topic;
std::string key;
int maxNum;
long long beginTimestamp;
long long endTimestamp;
};
class QueryMessageResponseHeader : public CommandCustomHeader
{
public:
QueryMessageResponseHeader()
{
indexLastUpdateTimestamp = 0;
indexLastUpdatePhyoffset = 0;
};
~QueryMessageResponseHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
long long indexLastUpdateTimestamp;
long long indexLastUpdatePhyoffset;
};
///////////////////////////////////////////////////////////////////////
// GET_KV_CONFIG_VALUE
///////////////////////////////////////////////////////////////////////
class GetKVConfigRequestHeader : public CommandCustomHeader
{
public:
GetKVConfigRequestHeader() {};
~GetKVConfigRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string namespace_;
std::string key;
};
class GetKVConfigResponseHeader : public CommandCustomHeader
{
public:
GetKVConfigResponseHeader() {};
~GetKVConfigResponseHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string value;
};
///////////////////////////////////////////////////////////////////////
// NOTIFY_CONSUMER_IDS_CHANGED_VALUE
///////////////////////////////////////////////////////////////////////
class NotifyConsumerIdsChangedRequestHeader : public CommandCustomHeader
{
public:
NotifyConsumerIdsChangedRequestHeader() {};
~NotifyConsumerIdsChangedRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string consumerGroup;
};
///////////////////////////////////////////////////////////////////////
// GET_CONSUMER_RUNNING_INFO_VALUE
///////////////////////////////////////////////////////////////////////
class GetConsumerRunningInfoRequestHeader : public CommandCustomHeader
{
public:
GetConsumerRunningInfoRequestHeader() {};
~GetConsumerRunningInfoRequestHeader() {};
virtual void encode(std::string& outData);
static CommandCustomHeader* decode(Json::Value& data);
public:
std::string consumerGroup;
std::string clientId;
bool jstackEnable;
};
}
#endif