1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-13 11:51:57 +00:00

create the metadata request message

This commit is contained in:
winlin 2015-09-22 14:33:17 +08:00
parent ca3b89aa7d
commit ab1e62a886
2 changed files with 92 additions and 0 deletions

View file

@ -105,6 +105,46 @@ int SrsKafkaRequestHeader::total_size()
return 4 + size; return 4 + size;
} }
bool SrsKafkaRequestHeader::is_producer_request()
{
return api_key == SrsKafkaApiKeyProduceRequest;
}
bool SrsKafkaRequestHeader::is_fetch_request()
{
return api_key == SrsKafkaApiKeyFetchRequest;
}
bool SrsKafkaRequestHeader::is_offset_request()
{
return api_key == SrsKafkaApiKeyOffsetRequest;
}
bool SrsKafkaRequestHeader::is_metadata_request()
{
return api_key == SrsKafkaApiKeyMetadataRequest;
}
bool SrsKafkaRequestHeader::is_offset_commit_request()
{
return api_key == SrsKafkaApiKeyOffsetCommitRequest;
}
bool SrsKafkaRequestHeader::is_offset_fetch_request()
{
return api_key == SrsKafkaApiKeyOffsetFetchRequest;
}
bool SrsKafkaRequestHeader::is_consumer_metadata_request()
{
return api_key == SrsKafkaApiKeyConsumerMetadataRequest;
}
void SrsKafkaRequestHeader::set_api_key(SrsKafkaApiKey key)
{
api_key = (int16_t)key;
}
SrsKafkaResponse::SrsKafkaResponse() SrsKafkaResponse::SrsKafkaResponse()
{ {
correlation_id = 0; correlation_id = 0;
@ -145,3 +185,12 @@ SrsKafkaMessageSet::~SrsKafkaMessageSet()
messages.clear(); messages.clear();
} }
SrsKafkaTopicMetadataRequest::SrsKafkaTopicMetadataRequest()
{
header.set_api_key(SrsKafkaApiKeyMetadataRequest);
}
SrsKafkaTopicMetadataRequest::~SrsKafkaTopicMetadataRequest()
{
}

View file

@ -31,6 +31,19 @@
#include <vector> #include <vector>
// https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-ApiKeys
enum SrsKafkaApiKey
{
SrsKafkaApiKeyProduceRequest = 0,
SrsKafkaApiKeyFetchRequest = 1,
SrsKafkaApiKeyOffsetRequest = 2,
SrsKafkaApiKeyMetadataRequest = 3,
/* Non-user facing control APIs 4-7 */
SrsKafkaApiKeyOffsetCommitRequest = 8,
SrsKafkaApiKeyOffsetFetchRequest = 9,
SrsKafkaApiKeyConsumerMetadataRequest = 10,
};
/** /**
* These types consist of a signed integer giving a length N followed by N bytes of content. * These types consist of a signed integer giving a length N followed by N bytes of content.
* A length of -1 indicates null. string uses an int16 for its size, and bytes uses an int32. * A length of -1 indicates null. string uses an int16 for its size, and bytes uses an int32.
@ -74,6 +87,11 @@ public:
* int32 size containing the length N followed by N repetitions of the structure which can * int32 size containing the length N followed by N repetitions of the structure which can
* itself be made up of other primitive types. In the BNF grammars below we will show an * itself be made up of other primitive types. In the BNF grammars below we will show an
* array of a structure foo as [foo]. * array of a structure foo as [foo].
*
* Usage:
* SrsKafkaArray<SrsKafkaBytes> body;
* body.append(new SrsKafkaBytes());
*
* @see https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-Requests * @see https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-Requests
*/ */
template<typename T> template<typename T>
@ -96,6 +114,12 @@ public:
} }
elems.clear(); elems.clear();
} }
public:
virtual void append(T* elem)
{
length++;
elems.push_back(elem);
}
}; };
/** /**
@ -161,6 +185,20 @@ public:
* @remark total_size = 4 + header_size + message_size. * @remark total_size = 4 + header_size + message_size.
*/ */
virtual int total_size(); virtual int total_size();
public:
/**
* the api key enumeration.
* @see https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-ApiKeys
*/
virtual bool is_producer_request();
virtual bool is_fetch_request();
virtual bool is_offset_request();
virtual bool is_metadata_request();
virtual bool is_offset_commit_request();
virtual bool is_offset_fetch_request();
virtual bool is_consumer_metadata_request();
// set the api key.
virtual void set_api_key(SrsKafkaApiKey key);
}; };
/** /**
@ -262,7 +300,12 @@ public:
*/ */
class SrsKafkaTopicMetadataRequest class SrsKafkaTopicMetadataRequest
{ {
private:
SrsKafkaRequestHeader header;
SrsKafkaArray<SrsKafkaString> request;
public: public:
SrsKafkaTopicMetadataRequest();
virtual ~SrsKafkaTopicMetadataRequest();
}; };
#endif #endif