1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

refine rtmp protocol stack, refer to go.rtmp

This commit is contained in:
winlin 2014-04-29 13:39:16 +08:00
parent 2e5337a26e
commit ebf6203c3b
17 changed files with 1583 additions and 261 deletions

View file

@ -175,15 +175,15 @@ int SrsEdgeIngester::ingest()
}
// read from client.
SrsCommonMessage* msg = NULL;
if ((ret = client->recv_message(&msg)) != ERROR_SUCCESS) {
__SrsMessage* msg = NULL;
if ((ret = client->__recv_message(&msg)) != ERROR_SUCCESS) {
srs_error("ingest recv origin server message failed. ret=%d", ret);
return ret;
}
srs_verbose("edge loop recv message. ret=%d", ret);
srs_assert(msg);
SrsAutoFree(SrsCommonMessage, msg, false);
SrsAutoFree(__SrsMessage, msg, false);
if ((ret = process_publish_message(msg)) != ERROR_SUCCESS) {
return ret;
@ -193,7 +193,7 @@ int SrsEdgeIngester::ingest()
return ret;
}
int SrsEdgeIngester::process_publish_message(SrsCommonMessage* msg)
int SrsEdgeIngester::process_publish_message(__SrsMessage* msg)
{
int ret = ERROR_SUCCESS;
@ -217,12 +217,13 @@ int SrsEdgeIngester::process_publish_message(SrsCommonMessage* msg)
// process onMetaData
if (msg->header.is_amf0_data() || msg->header.is_amf3_data()) {
if ((ret = msg->decode_packet(client->get_protocol())) != ERROR_SUCCESS) {
SrsPacket* pkt = NULL;
if ((ret = client->__decode_message(msg, &pkt)) != ERROR_SUCCESS) {
srs_error("decode onMetaData message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsPacket, pkt, false);
SrsPacket* pkt = msg->get_packet();
if (dynamic_cast<SrsOnMetaDataPacket*>(pkt)) {
SrsOnMetaDataPacket* metadata = dynamic_cast<SrsOnMetaDataPacket*>(pkt);
if ((ret = source->on_meta_data(msg, metadata)) != ERROR_SUCCESS) {
@ -419,8 +420,8 @@ int SrsEdgeForwarder::cycle()
// read from client.
if (true) {
SrsCommonMessage* msg = NULL;
ret = client->recv_message(&msg);
__SrsMessage* msg = NULL;
ret = client->__recv_message(&msg);
srs_verbose("edge loop recv message. ret=%d", ret);
if (ret != ERROR_SUCCESS && ret != ERROR_SOCKET_TIMEOUT) {
@ -434,7 +435,7 @@ int SrsEdgeForwarder::cycle()
// forward all messages.
int count = 0;
SrsSharedPtrMessage** msgs = NULL;
__SrsSharedPtrMessage** msgs = NULL;
if ((ret = queue->get_packets(0, msgs, count)) != ERROR_SUCCESS) {
srs_error("get message to forward to origin failed. ret=%d", ret);
return ret;
@ -455,16 +456,16 @@ int SrsEdgeForwarder::cycle()
srs_verbose("no packets to forward.");
continue;
}
SrsAutoFree(SrsSharedPtrMessage*, msgs, true);
SrsAutoFree(__SrsSharedPtrMessage*, msgs, true);
// all msgs to forward.
for (int i = 0; i < count; i++) {
SrsSharedPtrMessage* msg = msgs[i];
__SrsSharedPtrMessage* msg = msgs[i];
srs_assert(msg);
msgs[i] = NULL;
if ((ret = client->send_message(msg)) != ERROR_SUCCESS) {
if ((ret = client->__send_and_free_message(msg)) != ERROR_SUCCESS) {
srs_error("edge publish forwarder send message to server failed. ret=%d", ret);
return ret;
}
@ -474,7 +475,7 @@ int SrsEdgeForwarder::cycle()
return ret;
}
int SrsEdgeForwarder::proxy(SrsCommonMessage* msg)
int SrsEdgeForwarder::proxy(__SrsMessage* msg)
{
int ret = ERROR_SUCCESS;
@ -494,8 +495,8 @@ int SrsEdgeForwarder::proxy(SrsCommonMessage* msg)
}
// TODO: FIXME: use utility to copy msg to shared ptr msg.
SrsSharedPtrMessage* copy = new SrsSharedPtrMessage();
SrsAutoFree(SrsSharedPtrMessage, copy, false);
__SrsSharedPtrMessage* copy = new __SrsSharedPtrMessage();
SrsAutoFree(__SrsSharedPtrMessage, copy, false);
if ((ret = copy->initialize(msg)) != ERROR_SUCCESS) {
srs_error("initialize the msg failed. ret=%d", ret);
return ret;
@ -723,7 +724,7 @@ int SrsPublishEdge::on_client_publish()
return ret;
}
int SrsPublishEdge::on_proxy_publish(SrsCommonMessage* msg)
int SrsPublishEdge::on_proxy_publish(__SrsMessage* msg)
{
return forwarder->proxy(msg);
}