void CMultiXL2Link::OnAcceptCompleted(CMultiXL2Link &Listener) { int IoError = MultiXNoError; m_LinkType = Listener.m_LinkType; m_MaxReadSize = Listener.m_MaxReadSize; m_OpenMode = MultiXOpenModeAccept; #ifdef OPENSSL_SUPPORT if(Listener.m_pOpenSSLIF) { IoError = Listener.m_pOpenSSLIF->Accept(&m_pOpenSSLIF); } #endif GetConnectionParams(m_LocalName,m_LocalPort,m_RemoteName,m_RemotePort); Connected() = true; ConnectPending() = false; WritePending() = false; ReadPending() = false; CMultiXL2Event *Event = new CMultiXL2Event(CMultiXEvent::L2AcceptCompleted,Owner(),Owner()->UpperLayer()); Event->L2LinkID() = Listener.ID(); Event->IoError() = IoError; if(IoError == MultiXNoError) { Event->NewL2LinkID() = ID(); Read(); } else { Close(); } Owner()->MultiX().QueueEvent(Event); Read(); }
void CMultiXL2Link::OnConnectCompleted(MultiXError IoError) { if(IoError == MultiXNoError) { if(!ClosePending()) { GetConnectionParams(m_LocalName,m_LocalPort,m_RemoteName,m_RemotePort); Connected() = true; ConnectPending() = false; WritePending() = false; ReadPending() = false; #ifdef OPENSSL_SUPPORT if(m_pOpenSSLIF) { IoError = m_pOpenSSLIF->Connect(m_RemoteName); } #endif } else return; } CMultiXL2Event *Event = new CMultiXL2Event(CMultiXEvent::L2ConnectCompleted,Owner(),Owner()->UpperLayer()); Event->L2LinkID() = ID(); Event->IoError() = IoError; Owner()->MultiX().QueueEvent(Event); if(IoError == 0) Read(); }
IPTVStreamHandlerReadHelper::IPTVStreamHandlerReadHelper( IPTVStreamHandler *p, QUdpSocket *s, uint stream) : m_parent(p), m_socket(s), m_sender(p->m_sender[stream]), m_stream(stream) { connect(m_socket, SIGNAL(readyRead()), this, SLOT(ReadPending())); }
void CMultiXL2Link::OnReadCompleted(CMultiXBuffer &BytesRead, MultiXError IoError) { if(IoError) { this->Close(); return; } CMultiXBuffer *Buf = NULL; #ifdef OPENSSL_SUPPORT if(m_pOpenSSLIF) { this->QueueSSLData(NULL); m_LastError = m_pOpenSSLIF->WriteBytesReceived(BytesRead); if(m_LastError) { Close(); return; } CMultiXBuffer *Received = Owner()->MultiX().AllocateBuffer(); m_LastError = m_pOpenSSLIF->ReadBytesReceived(*Received); if(m_LastError != MultiXNoError) { Received->ReturnBuffer(); Close(); return; } if(Received->Length() > 0) Buf = Received->Clone(); Received->ReturnBuffer(); } else { Buf = BytesRead.Clone(); } #else Buf = BytesRead.Clone(); #endif if(Buf) { CMultiXL2Event *Event = new CMultiXL2Event(CMultiXEvent::L2NewBlockReceived,Owner(),Owner()->UpperLayer()); Event->L2LinkID() = ID(); Event->IoError() = MultiXNoError; Event->Buf() = Buf->Clone(); Owner()->MultiX().QueueEvent(Event); Buf->ReturnBuffer(); } ReadPending() = false; Read(); }
bool CMultiXL2Link::Read() { if(ReadPending()) { m_LastError = L2ErrReadPending; return false; } if(!Connected()) { m_LastError = L2ErrLinkNotConnected; return false; } CMultiXL1ReadReq L1Req(Owner(),Owner()->LowerLayer()); L1Req.m_L1LinkID = m_L1LinkID; if(!Owner()->LowerLayer()->RequestHandler(L1Req)) { m_LastError = Owner()->LowerLayer()->GetLastError(); return false; } ReadPending() = true; return SendNext(); }
MythUDPListener::MythUDPListener() { uint udp_port = gCoreContext->GetNumSetting("UDPNotifyPort", 0); m_socket = new QUdpSocket(this); connect(m_socket, SIGNAL(readyRead()), this, SLOT(ReadPending())); if (m_socket->bind(udp_port)) { VERBOSE(VB_GENERAL, LOC + QString("bound to port %1").arg(udp_port)); } else { VERBOSE(VB_GENERAL, LOC + QString("failed to bind to port %1").arg(udp_port)); } }