Allow turning the API server on/off at runtime
This commit is contained in:
@@ -50,12 +50,29 @@ KICAD_API_SERVER::KICAD_API_SERVER() :
|
||||
m_token( KIID().AsStdString() ),
|
||||
m_readyToReply( false )
|
||||
{
|
||||
m_commonHandler = std::make_unique<API_HANDLER_COMMON>();
|
||||
RegisterHandler( m_commonHandler.get() );
|
||||
|
||||
if( !Pgm().GetCommonSettings()->m_Api.enable_server )
|
||||
{
|
||||
wxLogTrace( traceApi, "Server: disabled by user preferences." );
|
||||
return;
|
||||
}
|
||||
|
||||
Start();
|
||||
}
|
||||
|
||||
|
||||
KICAD_API_SERVER::~KICAD_API_SERVER()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void KICAD_API_SERVER::Start()
|
||||
{
|
||||
if( Running() )
|
||||
return;
|
||||
|
||||
wxFileName socket;
|
||||
#ifdef __WXMAC__
|
||||
socket.AssignDir( wxS( "/tmp" ) );
|
||||
@@ -88,9 +105,6 @@ KICAD_API_SERVER::KICAD_API_SERVER() :
|
||||
fmt::format( "ipc://{}", socket.GetFullPath().ToStdString() ) );
|
||||
m_server->SetCallback( [&]( std::string* aRequest ) { onApiRequest( aRequest ); } );
|
||||
|
||||
m_commonHandler = std::make_unique<API_HANDLER_COMMON>();
|
||||
RegisterHandler( m_commonHandler.get() );
|
||||
|
||||
m_logFilePath.AssignDir( PATHS::GetLogsPath() );
|
||||
m_logFilePath.SetName( s_logFileName );
|
||||
|
||||
@@ -106,8 +120,16 @@ KICAD_API_SERVER::KICAD_API_SERVER() :
|
||||
}
|
||||
|
||||
|
||||
KICAD_API_SERVER::~KICAD_API_SERVER()
|
||||
void KICAD_API_SERVER::Stop()
|
||||
{
|
||||
if( !Running() )
|
||||
return;
|
||||
|
||||
wxLogTrace( traceApi, "Stopping server" );
|
||||
Unbind( API_REQUEST_EVENT, &KICAD_API_SERVER::handleApiEvent, this );
|
||||
|
||||
m_server->Stop();
|
||||
m_server.reset( nullptr );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user