CCodecStream init fixes

unstable
Tom Early 4 years ago
parent 6f528df70c
commit e876bebc10

@ -39,6 +39,7 @@ CCodecStream::CCodecStream(CPacketStream *PacketStream, uint16_t streamid, ECode
m_uiTimeoutPackets = 0; m_uiTimeoutPackets = 0;
m_PacketStream = PacketStream; m_PacketStream = PacketStream;
m_TCReader = reader; m_TCReader = reader;
InitCodecStream();
} }
//////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////
@ -76,13 +77,11 @@ CCodecStream::~CCodecStream()
//////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////
// initialization // initialization
bool CCodecStream::Init() void CCodecStream::InitCodecStream(void)
{ {
m_TCWriter.SetUp(REF2TC); m_TCWriter.SetUp(REF2TC);
keep_running = true; keep_running = true;
m_Future = std::async(std::launch::async, &CCodecStream::Thread, this); m_Future = std::async(std::launch::async, &CCodecStream::Thread, this);
return true;
} }
//////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////

@ -35,9 +35,6 @@ public:
// destructor // destructor
virtual ~CCodecStream(); virtual ~CCodecStream();
// initialization
bool Init();
// get // get
uint16_t GetStreamId(void) const { return m_uiStreamId; } uint16_t GetStreamId(void) const { return m_uiStreamId; }
bool IsEmpty(void) const; bool IsEmpty(void) const;
@ -47,6 +44,8 @@ public:
void Task(void); void Task(void);
protected: protected:
// initialization
void InitCodecStream(void);
// data // data
uint16_t m_uiStreamId; uint16_t m_uiStreamId;
uint16_t m_uiPort; uint16_t m_uiPort;

@ -39,8 +39,6 @@ CPacketStream::CPacketStream(std::shared_ptr<CUnixDgramReader> reader)
bool CPacketStream::OpenPacketStream(const CDvHeaderPacket &DvHeader, std::shared_ptr<CClient>client) bool CPacketStream::OpenPacketStream(const CDvHeaderPacket &DvHeader, std::shared_ptr<CClient>client)
{ {
bool ok = false;
// not already open? // not already open?
if ( !m_bOpen ) if ( !m_bOpen )
{ {
@ -52,12 +50,23 @@ bool CPacketStream::OpenPacketStream(const CDvHeaderPacket &DvHeader, std::share
m_OwnerClient = client; m_OwnerClient = client;
m_LastPacketTime.start(); m_LastPacketTime.start();
#ifdef TRANSCODED_MODULES #ifdef TRANSCODED_MODULES
if (std::string::npos != std::string(TRANSCODED_MODULES).find(DvHeader.GetRpt2Module())) auto mod = DvHeader.GetRpt2Module();
m_CodecStream = std::make_shared<CCodecStream>(this, m_uiStreamId, DvHeader.GetCodecIn(), m_TCReader); if (std::string::npos != std::string(TRANSCODED_MODULES).find(mod))
{
m_CodecStream = std::unique_ptr<CCodecStream>(new CCodecStream(this, m_uiStreamId, DvHeader.GetCodecIn(), m_TCReader));
return true;
}
else
{
std::cerr << "Could not find module '" << mod << " in the transcoded list, '" << TRANSCODED_MODULES << "'" << std::endl;
return false;
}
#else
return true;
#endif #endif
ok = true;
} }
return ok;
return false;
} }
void CPacketStream::ClosePacketStream(void) void CPacketStream::ClosePacketStream(void)

@ -66,6 +66,6 @@ protected:
std::shared_ptr<CClient> m_OwnerClient; std::shared_ptr<CClient> m_OwnerClient;
#ifdef TRANSCODED_MODULES #ifdef TRANSCODED_MODULES
std::shared_ptr<CUnixDgramReader> m_TCReader; std::shared_ptr<CUnixDgramReader> m_TCReader;
std::shared_ptr<CCodecStream> m_CodecStream; std::unique_ptr<CCodecStream> m_CodecStream;
#endif #endif
}; };

@ -204,13 +204,15 @@ std::shared_ptr<CPacketStream> CReflector::OpenStream(std::unique_ptr<CDvHeaderP
client->Heard(); client->Heard();
// report // report
std::cout << "Opening stream on module " << module << " for client " << client->GetCallsign() << " with sid " << DvHeader->GetStreamId() << " by user " << DvHeader->GetMyCallsign() << std::endl; std::cout << std::showbase << std::hex;
std::cout << "Opening stream on module " << module << " for client " << client->GetCallsign() << " with sid " << ntohs(DvHeader->GetStreamId()) << " by user " << DvHeader->GetMyCallsign() << std::endl;
std::cout << std::noshowbase << std::dec;
// and push header packet // and push header packet
stream->Push(std::move(DvHeader)); stream->Push(std::move(DvHeader));
// notify // notify
g_Reflector.OnStreamOpen(stream->GetUserCallsign()); OnStreamOpen(stream->GetUserCallsign());
} }
stream->Unlock(); stream->Unlock();

Loading…
Cancel
Save

Powered by TurnKey Linux.