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:
parent
2e5337a26e
commit
ebf6203c3b
17 changed files with 1583 additions and 261 deletions
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue