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-22 14:29:37 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
de41c1c9d2b8600d8d7484ec19b456b63154d4a8
de41c1c9
1 parent
31a77a83
kafka refine comments.
隐藏空白字符变更
内嵌
并排对比
正在显示
3 个修改的文件
包含
42 行增加
和
31 行删除
trunk/src/app/srs_app_kafka.cpp
trunk/src/app/srs_app_kafka.hpp
trunk/src/protocol/srs_kafka_stack.cpp
trunk/src/app/srs_app_kafka.cpp
查看文件 @
de41c1c
...
...
@@ -99,6 +99,32 @@ std::string srs_kafka_summary_partitions(const vector<SrsKafkaPartition*>& parti
return
srs_join_vector_string
(
ret
,
", "
);
}
void
srs_kafka_metadata2connector
(
SrsKafkaTopicMetadataResponse
*
metadata
,
vector
<
SrsKafkaPartition
*>&
partitions
)
{
for
(
int
i
=
0
;
i
<
metadata
->
metadatas
.
size
();
i
++
)
{
SrsKafkaTopicMetadata
*
topic
=
metadata
->
metadatas
.
at
(
i
);
for
(
int
j
=
0
;
j
<
topic
->
metadatas
.
size
();
j
++
)
{
SrsKafkaPartitionMetadata
*
partition
=
topic
->
metadatas
.
at
(
j
);
SrsKafkaPartition
*
p
=
new
SrsKafkaPartition
();
p
->
id
=
partition
->
partition_id
;
p
->
broker
=
partition
->
leader
;
for
(
int
i
=
0
;
i
<
metadata
->
brokers
.
size
();
i
++
)
{
SrsKafkaBroker
*
broker
=
metadata
->
brokers
.
at
(
i
);
if
(
broker
->
node_id
==
p
->
broker
)
{
p
->
host
=
broker
->
host
.
to_str
();
p
->
port
=
broker
->
port
;
break
;
}
}
partitions
.
push_back
(
p
);
}
}
}
SrsKafkaPartition
::
SrsKafkaPartition
()
{
id
=
broker
=
0
;
...
...
@@ -120,7 +146,7 @@ string SrsKafkaPartition::hostport()
SrsKafkaProducer
::
SrsKafkaProducer
()
{
me
a
tadata_ok
=
false
;
metadata_ok
=
false
;
metadata_expired
=
st_cond_new
();
lock
=
st_mutex_new
();
...
...
@@ -156,7 +182,6 @@ int SrsKafkaProducer::initialize()
{
int
ret
=
ERROR_SUCCESS
;
meatadata_ok
=
false
;
srs_info
(
"initialize kafka producer ok."
);
return
ret
;
...
...
@@ -175,9 +200,7 @@ int SrsKafkaProducer::start()
srs_error
(
"start kafka thread failed. ret=%d"
,
ret
);
}
meatadata_ok
=
false
;
st_cond_signal
(
metadata_expired
);
srs_trace
(
"kafka work in background"
);
refresh_metadata
();
return
ret
;
}
...
...
@@ -203,7 +226,7 @@ int SrsKafkaProducer::on_before_cycle()
{
// wait for the metadata expired.
// when metadata is ok, wait for it expired.
if
(
me
a
tadata_ok
)
{
if
(
metadata_ok
)
{
st_cond_wait
(
metadata_expired
);
}
...
...
@@ -291,34 +314,20 @@ int SrsKafkaProducer::request_metadata()
srs_trace
(
"kafka metadata: %s"
,
summary
.
c_str
());
// generate the partition info.
for
(
int
i
=
0
;
i
<
metadata
->
metadatas
.
size
();
i
++
)
{
SrsKafkaTopicMetadata
*
topic
=
metadata
->
metadatas
.
at
(
i
);
for
(
int
j
=
0
;
j
<
topic
->
metadatas
.
size
();
j
++
)
{
SrsKafkaPartitionMetadata
*
partition
=
topic
->
metadatas
.
at
(
j
);
SrsKafkaPartition
*
p
=
new
SrsKafkaPartition
();
p
->
id
=
partition
->
partition_id
;
p
->
broker
=
partition
->
leader
;
for
(
int
i
=
0
;
i
<
metadata
->
brokers
.
size
();
i
++
)
{
SrsKafkaBroker
*
broker
=
metadata
->
brokers
.
at
(
i
);
if
(
broker
->
node_id
==
p
->
broker
)
{
p
->
host
=
broker
->
host
.
to_str
();
p
->
port
=
broker
->
port
;
break
;
}
}
partitions
.
push_back
(
p
);
}
}
srs_kafka_metadata2connector
(
metadata
,
partitions
);
srs_trace
(
"kafka connector: %s"
,
srs_kafka_summary_partitions
(
partitions
).
c_str
());
me
a
tadata_ok
=
true
;
metadata_ok
=
true
;
return
ret
;
}
void
SrsKafkaProducer
::
refresh_metadata
()
{
metadata_ok
=
false
;
st_cond_signal
(
metadata_expired
);
srs_trace
(
"kafka async refresh metadata in background"
);
}
#endif
...
...
trunk/src/app/srs_app_kafka.hpp
查看文件 @
de41c1c
...
...
@@ -69,7 +69,7 @@ private:
st_mutex_t
lock
;
SrsReusableThread
*
pthread
;
private
:
bool
me
a
tadata_ok
;
bool
metadata_ok
;
st_cond_t
metadata_expired
;
public
:
std
::
vector
<
SrsKafkaPartition
*>
partitions
;
...
...
@@ -93,6 +93,8 @@ public:
private
:
virtual
int
do_cycle
();
virtual
int
request_metadata
();
// set the metadata to invalid and refresh it.
virtual
void
refresh_metadata
();
};
#endif
...
...
trunk/src/protocol/srs_kafka_stack.cpp
查看文件 @
de41c1c
...
...
@@ -1010,7 +1010,7 @@ int SrsKafkaProtocol::recv_message(SrsKafkaResponse** pmsg)
// fetch cached api key.
SrsKafkaCorrelationPool
*
pool
=
SrsKafkaCorrelationPool
::
instance
();
SrsKafkaApiKey
key
=
pool
->
unset
(
header
.
correlation_id
());
srs_
trace
(
"kafka got %d bytes response, key=%d"
,
header
.
total_size
(),
header
.
correlation_id
());
srs_
info
(
"kafka got %d bytes response, key=%d"
,
header
.
total_size
(),
header
.
correlation_id
());
// create message by cached api key.
SrsKafkaResponse
*
res
=
NULL
;
...
...
请
注册
或
登录
后发表评论