1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-15 04:42:04 +00:00

kafka refine code

This commit is contained in:
winlin 2015-10-22 17:43:15 +08:00
parent f9f5b56951
commit 7a0aaf5900

View file

@ -281,28 +281,32 @@ int SrsKafkaCache::flush(SrsKafkaPartition* partition, int key, SrsKafkaPartitio
// ensure the key exists.
srs_assert (cache.find(key) != cache.end());
// the cache is vector, which is continous store.
// we remember the messages we have written and clear it when completed.
int nb_msgs = (int)pc->size();
if (pc->empty()) {
return ret;
}
// connect transport.
if ((ret = partition->connect()) != ERROR_SUCCESS) {
srs_error("connect to partition failed. ret=%d", ret);
return ret;
}
// copy the messages to a temp cache.
SrsKafkaPartitionCache tpc(*pc);
// TODO: FIXME: implements it.
// free all wrote messages.
for (vector<SrsJsonObject*>::iterator it = tpc.begin(); it != tpc.end(); ++it) {
for (vector<SrsJsonObject*>::iterator it = pc->begin(); it != pc->end(); ++it) {
SrsJsonObject* obj = *it;
srs_freep(obj);
}
// remove the messages from cache.
if (pc->size() == tpc.size()) {
if (pc->size() == nb_msgs) {
pc->clear();
} else {
pc->erase(pc->begin(), pc->begin() + tpc.size());
pc->erase(pc->begin(), pc->begin() + nb_msgs);
}
return ret;