Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
2015-10-16 15:34:55 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
45755fd1e71cb9c3f8a7b43019ebe9e4a79d4559
45755fd1
1 parent
8a4ec490
refine code for kakfa request/response, string/bytes.
显示空白字符变更
内嵌
并排对比
正在显示
2 个修改的文件
包含
99 行增加
和
14 行删除
trunk/src/protocol/srs_kafka_stack.cpp
trunk/src/protocol/srs_kafka_stack.hpp
trunk/src/protocol/srs_kafka_stack.cpp
查看文件 @
45755fd
...
...
@@ -27,6 +27,7 @@
using
namespace
std
;
#include <srs_kernel_error.hpp>
#include <srs_core_autofree.hpp>
#ifdef SRS_AUTO_KAFKA
...
...
@@ -36,6 +37,15 @@ SrsKafkaString::SrsKafkaString()
data
=
NULL
;
}
SrsKafkaString
::
SrsKafkaString
(
string
v
)
{
size
=
(
int16_t
)
v
.
length
();
srs_assert
(
size
>
0
);
data
=
new
char
[
size
];
memcpy
(
data
,
v
.
data
(),
size
);
}
SrsKafkaString
::~
SrsKafkaString
()
{
srs_freep
(
data
);
...
...
@@ -62,6 +72,15 @@ SrsKafkaBytes::SrsKafkaBytes()
data
=
NULL
;
}
SrsKafkaBytes
::
SrsKafkaBytes
(
const
char
*
v
,
int
nb_v
)
{
size
=
(
int16_t
)
nb_v
;
srs_assert
(
size
>
0
);
data
=
new
char
[
size
];
memcpy
(
data
,
v
,
size
);
}
SrsKafkaBytes
::~
SrsKafkaBytes
()
{
srs_freep
(
data
);
...
...
@@ -175,7 +194,7 @@ int SrsKafkaResponseHeader::total_size()
return
4
+
size
;
}
SrsKafka
Message
::
SrsKafka
Message
()
SrsKafka
RawMessage
::
SrsKafkaRaw
Message
()
{
offset
=
0
;
message_size
=
0
;
...
...
@@ -186,7 +205,7 @@ SrsKafkaMessage::SrsKafkaMessage()
value
=
new
SrsKafkaBytes
();
}
SrsKafka
Message
::~
SrsKafka
Message
()
SrsKafka
RawMessage
::~
SrsKafkaRaw
Message
()
{
srs_freep
(
key
);
srs_freep
(
value
);
...
...
@@ -198,14 +217,30 @@ SrsKafkaMessageSet::SrsKafkaMessageSet()
SrsKafkaMessageSet
::~
SrsKafkaMessageSet
()
{
vector
<
SrsKafkaMessage
*>::
iterator
it
;
vector
<
SrsKafka
Raw
Message
*>::
iterator
it
;
for
(
it
=
messages
.
begin
();
it
!=
messages
.
end
();
++
it
)
{
SrsKafkaMessage
*
message
=
*
it
;
SrsKafka
Raw
Message
*
message
=
*
it
;
srs_freep
(
message
);
}
messages
.
clear
();
}
SrsKafkaRequest
::
SrsKafkaRequest
()
{
}
SrsKafkaRequest
::~
SrsKafkaRequest
()
{
}
SrsKafkaResponse
::
SrsKafkaResponse
()
{
}
SrsKafkaResponse
::~
SrsKafkaResponse
()
{
}
SrsKafkaTopicMetadataRequest
::
SrsKafkaTopicMetadataRequest
()
{
header
.
set_api_key
(
SrsKafkaApiKeyMetadataRequest
);
...
...
@@ -215,6 +250,19 @@ SrsKafkaTopicMetadataRequest::~SrsKafkaTopicMetadataRequest()
{
}
void
SrsKafkaTopicMetadataRequest
::
add_topic
(
string
topic
)
{
topics
.
append
(
new
SrsKafkaString
(
topic
));
}
SrsKafkaTopicMetadataResponse
::
SrsKafkaTopicMetadataResponse
()
{
}
SrsKafkaTopicMetadataResponse
::~
SrsKafkaTopicMetadataResponse
()
{
}
SrsKafkaProtocol
::
SrsKafkaProtocol
(
ISrsProtocolReaderWriter
*
io
)
{
skt
=
io
;
...
...
@@ -224,7 +272,7 @@ SrsKafkaProtocol::~SrsKafkaProtocol()
{
}
int
SrsKafkaProtocol
::
send_and_free_message
(
SrsKafka
Message
*
msg
)
int
SrsKafkaProtocol
::
send_and_free_message
(
SrsKafka
Request
*
msg
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
@@ -247,6 +295,11 @@ int SrsKafkaClient::fetch_metadata(string topic)
{
int
ret
=
ERROR_SUCCESS
;
SrsKafkaTopicMetadataRequest
*
req
=
new
SrsKafkaTopicMetadataRequest
();
SrsAutoFree
(
SrsKafkaTopicMetadataRequest
,
req
);
req
->
add_topic
(
topic
);
// TODO: FIXME: implements it.
return
ret
;
...
...
trunk/src/protocol/srs_kafka_stack.hpp
查看文件 @
45755fd
...
...
@@ -64,6 +64,7 @@ private:
char
*
data
;
public
:
SrsKafkaString
();
SrsKafkaString
(
std
::
string
v
);
virtual
~
SrsKafkaString
();
public
:
virtual
bool
null
();
...
...
@@ -83,6 +84,7 @@ private:
char
*
data
;
public
:
SrsKafkaBytes
();
SrsKafkaBytes
(
const
char
*
v
,
int
nb_v
);
virtual
~
SrsKafkaBytes
();
public
:
virtual
bool
null
();
...
...
@@ -269,7 +271,7 @@ public:
* the kafka message in message set.
* @see https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-Messagesets
*/
struct
SrsKafkaMessage
struct
SrsKafka
Raw
Message
{
// metadata.
public:
...
...
@@ -313,8 +315,8 @@ public:
*/
SrsKafkaBytes
*
value
;
public
:
SrsKafkaMessage
();
virtual
~
SrsKafkaMessage
();
SrsKafkaRawMessage
();
virtual
~
SrsKafkaRawMessage
();
};
/**
...
...
@@ -324,13 +326,33 @@ public:
class
SrsKafkaMessageSet
{
private
:
std
::
vector
<
SrsKafkaMessage
*>
messages
;
std
::
vector
<
SrsKafka
Raw
Message
*>
messages
;
public
:
SrsKafkaMessageSet
();
virtual
~
SrsKafkaMessageSet
();
};
/**
* the kafka request message, for protocol to send.
*/
class
SrsKafkaRequest
{
public
:
SrsKafkaRequest
();
virtual
~
SrsKafkaRequest
();
};
/**
* the kafka response message, for protocol to recv.
*/
class
SrsKafkaResponse
{
public
:
SrsKafkaResponse
();
virtual
~
SrsKafkaResponse
();
};
/**
* request the metadata from broker.
* This API answers the following questions:
* What topics exist?
...
...
@@ -344,20 +366,30 @@ public:
*
* @see https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-MetadataAPI
*/
class
SrsKafkaTopicMetadataRequest
class
SrsKafkaTopicMetadataRequest
:
public
SrsKafkaRequest
{
private
:
SrsKafkaRequestHeader
header
;
SrsKafkaArray
<
SrsKafkaString
*>
request
;
SrsKafkaArray
<
SrsKafkaString
*>
topics
;
public
:
SrsKafkaTopicMetadataRequest
();
virtual
~
SrsKafkaTopicMetadataRequest
();
public
:
virtual
void
add_topic
(
std
::
string
topic
);
};
class
SrsKafkaTopicMetadataResponse
/**
* response for the metadata request from broker.
* The response contains metadata for each partition,
* with partitions grouped together by topic. This
* metadata refers to brokers by their broker id.
* The brokers each have a host and port.
* @see https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-MetadataResponse
*/
class
SrsKafkaTopicMetadataResponse
:
public
SrsKafkaResponse
{
private
:
SrsKafkaRe
quest
Header
header
;
SrsKafkaRe
sponse
Header
header
;
public
:
SrsKafkaTopicMetadataResponse
();
virtual
~
SrsKafkaTopicMetadataResponse
();
...
...
@@ -378,7 +410,7 @@ public:
* write the message to kafka server.
* @param msg the msg to send. user must not free it again.
*/
virtual
int
send_and_free_message
(
SrsKafka
Message
*
msg
);
virtual
int
send_and_free_message
(
SrsKafka
Request
*
msg
);
};
/**
...
...
请
注册
或
登录
后发表评论