mirror of https://github.com/ShaYmez/xlxd.git
Revert "Merge pull request #120 from nonoo/master"
This reverts commit2c902aad20
, reversing changes made tob3360b66e2
.
This commit is contained in:
parent
3e8d910cb0
commit
640f7c5c9c
|
@ -68,7 +68,7 @@ void CDcsProtocol::Task(void)
|
|||
CCallsign Callsign;
|
||||
char ToLinkModule;
|
||||
CDvHeaderPacket *Header;
|
||||
CDvFramePacket *Frame = NULL;
|
||||
CDvFramePacket *Frame;
|
||||
|
||||
// handle incoming packets
|
||||
if ( m_Socket.Receive(&Buffer, &Ip, 20) != -1 )
|
||||
|
@ -89,12 +89,16 @@ void CDcsProtocol::Task(void)
|
|||
//std::cout << "DCS DV frame" << std::endl;
|
||||
OnDvFramePacketIn(Frame, &Ip);
|
||||
}
|
||||
else
|
||||
{
|
||||
//std::cout << "DCS DV last frame" << std::endl;
|
||||
OnDvLastFramePacketIn((CDvLastFramePacket *)Frame, &Ip);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
delete Header;
|
||||
delete Frame;
|
||||
Frame = NULL;
|
||||
}
|
||||
}
|
||||
else if ( IsValidConnectPacket(Buffer, &Callsign, &ToLinkModule) )
|
||||
|
@ -184,11 +188,6 @@ void CDcsProtocol::Task(void)
|
|||
// handle queue from reflector
|
||||
HandleQueue();
|
||||
|
||||
if ( Frame != NULL && Frame->IsLastPacket() )
|
||||
{
|
||||
CloseStreamForDvLastFramePacket((CDvLastFramePacket *)Frame, &Ip);
|
||||
}
|
||||
|
||||
// keep client alive
|
||||
if ( m_LastKeepaliveTime.DurationSinceNow() > DCS_KEEPALIVE_PERIOD )
|
||||
{
|
||||
|
|
|
@ -69,7 +69,7 @@ void CDextraProtocol::Task(void)
|
|||
int ProtRev;
|
||||
CDvHeaderPacket *Header;
|
||||
CDvFramePacket *Frame;
|
||||
CDvLastFramePacket *LastFrame = NULL;
|
||||
CDvLastFramePacket *LastFrame;
|
||||
|
||||
// any incoming packet ?
|
||||
if ( m_Socket.Receive(&Buffer, &Ip, 20) != -1 )
|
||||
|
@ -101,9 +101,9 @@ void CDextraProtocol::Task(void)
|
|||
else if ( (LastFrame = IsValidDvLastFramePacket(Buffer)) != NULL )
|
||||
{
|
||||
//std::cout << "DExtra DV last frame" << std::endl;
|
||||
|
||||
|
||||
// handle it
|
||||
OnDvFramePacketIn(LastFrame, &Ip);
|
||||
OnDvLastFramePacketIn(LastFrame, &Ip);
|
||||
}
|
||||
else if ( IsValidConnectPacket(Buffer, &Callsign, &ToLinkModule, &ProtRev) )
|
||||
{
|
||||
|
@ -193,11 +193,6 @@ void CDextraProtocol::Task(void)
|
|||
// handle queue from reflector
|
||||
HandleQueue();
|
||||
|
||||
if ( LastFrame != NULL )
|
||||
{
|
||||
CloseStreamForDvLastFramePacket(LastFrame, &Ip);
|
||||
}
|
||||
|
||||
// keep client alive
|
||||
if ( m_LastKeepaliveTime.DurationSinceNow() > DEXTRA_KEEPALIVE_PERIOD )
|
||||
{
|
||||
|
|
|
@ -93,7 +93,7 @@ void CDmrmmdvmProtocol::Task(void)
|
|||
uint8 CallType;
|
||||
CDvHeaderPacket *Header;
|
||||
CDvFramePacket *Frames[3];
|
||||
CDvLastFramePacket *LastFrame = NULL;
|
||||
CDvLastFramePacket *LastFrame;
|
||||
|
||||
// handle incoming packets
|
||||
if ( m_Socket.Receive(&Buffer, &Ip, 20) != -1 )
|
||||
|
@ -128,9 +128,8 @@ void CDmrmmdvmProtocol::Task(void)
|
|||
else if ( IsValidDvLastFramePacket(Buffer, &LastFrame) )
|
||||
{
|
||||
//std::cout << "DMRmmdvm DV last frame" << std::endl;
|
||||
|
||||
// handle it
|
||||
OnDvFramePacketIn(LastFrame, &Ip);
|
||||
|
||||
OnDvLastFramePacketIn(LastFrame, &Ip);
|
||||
}
|
||||
else if ( IsValidConnectPacket(Buffer, &Callsign, Ip) )
|
||||
{
|
||||
|
@ -258,10 +257,6 @@ void CDmrmmdvmProtocol::Task(void)
|
|||
// handle queue from reflector
|
||||
HandleQueue();
|
||||
|
||||
if ( LastFrame != NULL )
|
||||
{
|
||||
CloseStreamForDvLastFramePacket(LastFrame, &Ip);
|
||||
}
|
||||
|
||||
// keep client alive
|
||||
if ( m_LastKeepaliveTime.DurationSinceNow() > DMRMMDVM_KEEPALIVE_PERIOD )
|
||||
|
|
|
@ -83,7 +83,6 @@ void CDmrplusProtocol::Task(void)
|
|||
char ToLinkModule;
|
||||
CDvHeaderPacket *Header;
|
||||
CDvFramePacket *Frames[3];
|
||||
int CloseStreamFrameNr = -1;
|
||||
|
||||
// handle incoming packets
|
||||
if ( m_Socket.Receive(&Buffer, &Ip, 20) != -1 )
|
||||
|
@ -100,11 +99,12 @@ void CDmrplusProtocol::Task(void)
|
|||
/*if ( !Frames[i]->IsLastPacket() )
|
||||
{
|
||||
//std::cout << "DMRplus DV frame" << std::endl;
|
||||
OnDvFramePacketIn(Frames[i], &Ip);
|
||||
}
|
||||
else
|
||||
{
|
||||
//std::cout << "DMRplus DV last frame" << std::endl;
|
||||
CloseStreamFrameNr = i;
|
||||
OnDvLastFramePacketIn((CDvLastFramePacket *)Frames[i], &Ip);
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
@ -190,10 +190,6 @@ void CDmrplusProtocol::Task(void)
|
|||
// handle queue from reflector
|
||||
HandleQueue();
|
||||
|
||||
if ( CloseStreamFrameNr >= 0 )
|
||||
{
|
||||
CloseStreamForDvLastFramePacket((CDvLastFramePacket *)Frames[CloseStreamFrameNr], &Ip);
|
||||
}
|
||||
|
||||
// keep client alive
|
||||
if ( m_LastKeepaliveTime.DurationSinceNow() > DMRPLUS_KEEPALIVE_PERIOD )
|
||||
|
|
|
@ -69,7 +69,7 @@ void CDplusProtocol::Task(void)
|
|||
CCallsign Callsign;
|
||||
CDvHeaderPacket *Header;
|
||||
CDvFramePacket *Frame;
|
||||
CDvLastFramePacket *LastFrame = NULL;
|
||||
CDvLastFramePacket *LastFrame;
|
||||
|
||||
// handle incoming packets
|
||||
if ( m_Socket.Receive(&Buffer, &Ip, 20) != -1 )
|
||||
|
@ -100,9 +100,9 @@ void CDplusProtocol::Task(void)
|
|||
else if ( (LastFrame = IsValidDvLastFramePacket(Buffer)) != NULL )
|
||||
{
|
||||
//std::cout << "DPlus DV last frame" << std::endl;
|
||||
|
||||
|
||||
// handle it
|
||||
OnDvFramePacketIn(LastFrame, &Ip);
|
||||
OnDvLastFramePacketIn(LastFrame, &Ip);
|
||||
}
|
||||
else if ( IsValidConnectPacket(Buffer) )
|
||||
{
|
||||
|
@ -180,11 +180,6 @@ void CDplusProtocol::Task(void)
|
|||
// handle queue from reflector
|
||||
HandleQueue();
|
||||
|
||||
if ( LastFrame )
|
||||
{
|
||||
CloseStreamForDvLastFramePacket(LastFrame, &Ip);
|
||||
}
|
||||
|
||||
// keep client alive
|
||||
if ( m_LastKeepaliveTime.DurationSinceNow() > DPLUS_KEEPALIVE_PERIOD )
|
||||
{
|
||||
|
|
|
@ -148,6 +148,22 @@ void CProtocol::OnDvFramePacketIn(CDvFramePacket *Frame, const CIp *Ip)
|
|||
}
|
||||
}
|
||||
|
||||
void CProtocol::OnDvLastFramePacketIn(CDvLastFramePacket *Frame, const CIp *Ip)
|
||||
{
|
||||
// find the stream
|
||||
CPacketStream *stream = GetStream(Frame->GetStreamId(), Ip);
|
||||
if ( stream != NULL )
|
||||
{
|
||||
// push
|
||||
stream->Lock();
|
||||
stream->Push(Frame);
|
||||
stream->Unlock();
|
||||
|
||||
// and close the stream
|
||||
g_Reflector.CloseStream(stream);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////
|
||||
// stream handle helpers
|
||||
|
||||
|
@ -171,15 +187,6 @@ CPacketStream *CProtocol::GetStream(uint16 uiStreamId, const CIp *Ip)
|
|||
return stream;
|
||||
}
|
||||
|
||||
void CProtocol::CloseStreamForDvLastFramePacket(CDvLastFramePacket *Frame, const CIp *Ip)
|
||||
{
|
||||
CPacketStream *stream = GetStream(Frame->GetStreamId(), Ip);
|
||||
if ( stream != NULL )
|
||||
{
|
||||
g_Reflector.CloseStream(stream);
|
||||
}
|
||||
}
|
||||
|
||||
void CProtocol::CheckStreamsTimeout(void)
|
||||
{
|
||||
for ( int i = 0; i < m_Streams.size(); i++ )
|
||||
|
|
|
@ -100,10 +100,10 @@ protected:
|
|||
// stream helpers
|
||||
virtual bool OnDvHeaderPacketIn(CDvHeaderPacket *, const CIp &) { return false; }
|
||||
virtual void OnDvFramePacketIn(CDvFramePacket *, const CIp * = NULL);
|
||||
virtual void OnDvLastFramePacketIn(CDvLastFramePacket *, const CIp * = NULL);
|
||||
|
||||
// stream handle helpers
|
||||
CPacketStream *GetStream(uint16, const CIp * = NULL);
|
||||
void CloseStreamForDvLastFramePacket(CDvLastFramePacket *, const CIp * = NULL);
|
||||
void CheckStreamsTimeout(void);
|
||||
|
||||
// queue helper
|
||||
|
|
|
@ -71,7 +71,7 @@ void CXlxProtocol::Task(void)
|
|||
CVersion Version;
|
||||
CDvHeaderPacket *Header;
|
||||
CDvFramePacket *Frame;
|
||||
CDvLastFramePacket *LastFrame = NULL;
|
||||
CDvLastFramePacket *LastFrame;
|
||||
|
||||
// any incoming packet ?
|
||||
if ( m_Socket.Receive(&Buffer, &Ip, 20) != -1 )
|
||||
|
@ -104,10 +104,8 @@ void CXlxProtocol::Task(void)
|
|||
{
|
||||
//std::cout << "XLX (DExtra) DV last frame" << std::endl;
|
||||
|
||||
// tag packet as remote peer origin
|
||||
LastFrame->SetRemotePeerOrigin();
|
||||
|
||||
OnDvFramePacketIn((CDvFramePacket *)LastFrame, &Ip);
|
||||
// handle it
|
||||
OnDvLastFramePacketIn(LastFrame, &Ip);
|
||||
}
|
||||
else if ( IsValidConnectPacket(Buffer, &Callsign, Modules, &Version) )
|
||||
{
|
||||
|
@ -221,11 +219,6 @@ void CXlxProtocol::Task(void)
|
|||
// handle queue from reflector
|
||||
HandleQueue();
|
||||
|
||||
if ( LastFrame != NULL )
|
||||
{
|
||||
CloseStreamForDvLastFramePacket(LastFrame, &Ip);
|
||||
}
|
||||
|
||||
// keep alive
|
||||
if ( m_LastKeepaliveTime.DurationSinceNow() > XLX_KEEPALIVE_PERIOD )
|
||||
{
|
||||
|
@ -474,6 +467,15 @@ void CXlxProtocol::OnDvFramePacketIn(CDvFramePacket *DvFrame, const CIp *Ip)
|
|||
CDextraProtocol::OnDvFramePacketIn(DvFrame, Ip);
|
||||
}
|
||||
|
||||
void CXlxProtocol::OnDvLastFramePacketIn(CDvLastFramePacket *DvFrame, const CIp *Ip)
|
||||
{
|
||||
// tag packet as remote peer origin
|
||||
DvFrame->SetRemotePeerOrigin();
|
||||
|
||||
// anc call base class
|
||||
CDextraProtocol::OnDvLastFramePacketIn(DvFrame, Ip);
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////
|
||||
// packet decoding helpers
|
||||
|
|
|
@ -63,6 +63,7 @@ protected:
|
|||
// stream helpers
|
||||
bool OnDvHeaderPacketIn(CDvHeaderPacket *, const CIp &);
|
||||
void OnDvFramePacketIn(CDvFramePacket *, const CIp * = NULL);
|
||||
void OnDvLastFramePacketIn(CDvLastFramePacket *, const CIp * = NULL);
|
||||
|
||||
// packet decoding helpers
|
||||
bool IsValidKeepAlivePacket(const CBuffer &, CCallsign *);
|
||||
|
|
Loading…
Reference in New Issue