BaseProtocol *InboundHTTP4RTMP::Bind(string sid) { BaseProtocol *pResult = NULL; if (_pNearProtocol == NULL) { //14. This might be a new connection. Do we have that sid generated? if (!MAP_HAS1(_generatedSids, sid)) { FATAL("Invalid sid: %s", STR(sid)); return false; } //15. See if we have to generate a new connection or we just pick up //a disconnected one if (MAP_HAS1(_protocolsBySid, sid)) { pResult = ProtocolManager::GetProtocol(_protocolsBySid[sid]); } else { pResult = new InboundRTMPProtocol(); pResult->Initialize(GetCustomParameters()); pResult->SetApplication(GetApplication()); _protocolsBySid[sid] = pResult->GetId(); SetNearProtocol(pResult); pResult->SetFarProtocol(this); } } else { pResult = _pNearProtocol; } return pResult; }
bool InboundRTMPSDiscriminatorProtocol::BindSSL(IOBuffer &buffer) { //1. Create the RTMP protocol BaseProtocol *pRTMP = new InboundRTMPProtocol(); if (!pRTMP->Initialize(GetCustomParameters())) { FATAL("Unable to create RTMP protocol"); pRTMP->EnqueueForDelete(); return false; } //2. Destroy the link BaseProtocol *pFar = _pFarProtocol; pFar->ResetNearProtocol(); ResetFarProtocol(); //3. Create the new links pFar->SetNearProtocol(pRTMP); pRTMP->SetFarProtocol(pFar); //4. Set the application pRTMP->SetApplication(GetApplication()); //5. Enqueue for delete this protocol EnqueueForDelete(); //6. Process the data if (!pRTMP->SignalInputData(buffer)) { FATAL("Unable to process data"); pRTMP->EnqueueForDelete(); } return true; }
bool InboundMJPGHTTPStreamProtocol::Initialize(Variant ¶meters) { if ((parameters["crossDomainFile"] != V_STRING) || (parameters["crossDomainFile"] == "")) { FATAL("crossDomainFile not specified"); return false; } GetCustomParameters() = parameters; _crossDomainFile = (string) parameters["crossDomainFile"]; return true; }
bool RTSPProtocol::Initialize(Variant ¶meters) { GetCustomParameters() = parameters; return true; }
bool InboundHTTP4RTMP::Initialize(Variant ¶meters) { GetCustomParameters()=parameters; return true; }
bool InboundRTMPSDiscriminatorProtocol::Initialize(Variant ¶meters) { GetCustomParameters() = parameters; return true; }
bool NATTraversalProtocol::Initialize(Variant ¶meters) { GetCustomParameters() = parameters; return true; }