KiCad PCB EDA Suite
Loading...
Searching...
No Matches
API_HANDLER_SCH_LIBRARIES Class Reference

#include <api_handler_sch_libraries.h>

Inheritance diagram for API_HANDLER_SCH_LIBRARIES:
API_HANDLER_LIBRARIES API_HANDLER

Public Member Functions

 API_HANDLER_SCH_LIBRARIES ()
 
void SetKiway (KIWAY *aKiway)
 
void SetLibraryHandlerRegistrar (std::function< void(KIFACE *)> aRegistrar)
 Set a callback to register the handler on the API server in headless mode.
 
API_RESULT Handle (ApiRequest &aMsg)
 Attempt to handle the given API request, if a handler exists in this class for the message.
 

Protected Types

typedef std::function< HANDLER_RESULT< ApiResponse >(ApiRequest &)> REQUEST_HANDLER
 A handler for outer messages (envelopes) that will unpack to inner messages and call a specific handler function.
 

Protected Member Functions

LIBRARY_MANAGER_ADAPTERadapterForProject (PROJECT &aProject) const override
 
bool packLibraryItem (const LIB_ID &aId, google::protobuf::Any &aOutput) const override
 
std::vector< wxString > getItemNames (LIBRARY_MANAGER_ADAPTER &aAdapter, const wxString &aNickname) const override
 Returns the names of all entries in the given library, or an empty vector if the library is not loaded (or cannot be enumerated).
 
HANDLER_RESULT< kiapi::common::commands::LibraryItemsResponse > handleGetLibraryItems (const HANDLER_CONTEXT< kiapi::common::commands::GetLibraryItems > &aCtx)
 
HANDLER_RESULT< kiapi::common::commands::LibraryStatusResponse > handleGetLibraryStatuses (const HANDLER_CONTEXT< kiapi::common::commands::GetLibraryStatuses > &aCtx)
 
HANDLER_RESULT< kiapi::common::types::LibraryCommandStatus > handleReloadLibrary (const HANDLER_CONTEXT< kiapi::common::commands::ReloadLibrary > &aCtx)
 
HANDLER_RESULT< kiapi::common::types::LibraryCommandStatus > handleLoadAllLibraries (const HANDLER_CONTEXT< kiapi::common::commands::LoadAllLibraries > &aCtx)
 
kiapi::common::types::LibraryCommandStatus loadAllLibraries ()
 Starts a background load of all libraries of this handler's type.
 
HANDLER_RESULT< kiapi::common::commands::GetItemsResponse > handleGetItemsFromLibrary (const HANDLER_CONTEXT< kiapi::common::commands::GetItemsFromLibrary > &aCtx)
 
LIBRARY_TABLE_TYPE libraryType () const
 
template<class RequestType, class ResponseType, class HandlerType>
void registerHandler (HANDLER_RESULT< ResponseType >(HandlerType::*aHandler)(const HANDLER_CONTEXT< RequestType > &))
 Registers an API command handler for the given message types.
 

Protected Attributes

std::map< std::string, REQUEST_HANDLERm_handlers
 Maps type name (without the URL prefix) to a handler method.
 

Static Protected Attributes

static const wxString m_defaultCommitMessage = _( "Modification from API" )
 

Private Member Functions

template<typename MessageType>
bool tryUnpack (ApiRequest &aRequest, ApiResponse &aReply, MessageType &aDest)
 

Private Attributes

LIBRARY_TABLE_TYPE m_type
 
KIWAYm_kiway = nullptr
 Used to lazily load kifaces for LoadAllLibraries in headless; null in GUI mode.
 
std::function< void(KIFACE *)> m_handlerRegisterCallback
 Invoked with a lazily-loaded KIFACE so its handlers can be registered on the server.
 

Detailed Description

Definition at line 27 of file api_handler_sch_libraries.h.

Member Typedef Documentation

◆ REQUEST_HANDLER

typedef std::function<HANDLER_RESULT<ApiResponse>( ApiRequest& )> API_HANDLER::REQUEST_HANDLER
protectedinherited

A handler for outer messages (envelopes) that will unpack to inner messages and call a specific handler function.

See also
registerHandler.

Definition at line 76 of file api_handler.h.

Constructor & Destructor Documentation

◆ API_HANDLER_SCH_LIBRARIES()

API_HANDLER_SCH_LIBRARIES::API_HANDLER_SCH_LIBRARIES ( )
inline

Member Function Documentation

◆ adapterForProject()

LIBRARY_MANAGER_ADAPTER * API_HANDLER_SCH_LIBRARIES::adapterForProject ( PROJECT & aProject) const
overrideprotectedvirtual

Reimplemented from API_HANDLER_LIBRARIES.

Definition at line 30 of file api_handler_sch_libraries.cpp.

References PROJECT_SCH::SymbolLibAdapter().

Referenced by packLibraryItem().

◆ getItemNames()

std::vector< wxString > API_HANDLER_SCH_LIBRARIES::getItemNames ( LIBRARY_MANAGER_ADAPTER & aAdapter,
const wxString & aNickname ) const
overrideprotectedvirtual

Returns the names of all entries in the given library, or an empty vector if the library is not loaded (or cannot be enumerated).

Reimplemented from API_HANDLER_LIBRARIES.

Definition at line 36 of file api_handler_sch_libraries.cpp.

◆ Handle()

API_RESULT API_HANDLER::Handle ( ApiRequest & aMsg)
inherited

Attempt to handle the given API request, if a handler exists in this class for the message.

Parameters
aMsgis a request to attempt to handle
Returns
a response to send to the client, or an appropriate error

Definition at line 30 of file api_handler.cpp.

References m_handlers.

Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), and BOOST_AUTO_TEST_CASE().

◆ handleGetItemsFromLibrary()

HANDLER_RESULT< GetItemsResponse > API_HANDLER_LIBRARIES::handleGetItemsFromLibrary ( const HANDLER_CONTEXT< kiapi::common::commands::GetItemsFromLibrary > & aCtx)
protectedinherited

◆ handleGetLibraryItems()

HANDLER_RESULT< LibraryItemsResponse > API_HANDLER_LIBRARIES::handleGetLibraryItems ( const HANDLER_CONTEXT< kiapi::common::commands::GetLibraryItems > & aCtx)
protectedinherited

◆ handleGetLibraryStatuses()

HANDLER_RESULT< LibraryStatusResponse > API_HANDLER_LIBRARIES::handleGetLibraryStatuses ( const HANDLER_CONTEXT< kiapi::common::commands::GetLibraryStatuses > & aCtx)
protectedinherited

◆ handleLoadAllLibraries()

HANDLER_RESULT< LibraryCommandStatus > API_HANDLER_LIBRARIES::handleLoadAllLibraries ( const HANDLER_CONTEXT< kiapi::common::commands::LoadAllLibraries > & aCtx)
protectedinherited

◆ handleReloadLibrary()

HANDLER_RESULT< LibraryCommandStatus > API_HANDLER_LIBRARIES::handleReloadLibrary ( const HANDLER_CONTEXT< kiapi::common::commands::ReloadLibrary > & aCtx)
protectedinherited

◆ libraryType()

LIBRARY_TABLE_TYPE API_HANDLER_LIBRARIES::libraryType ( ) const
inlineprotectedinherited

Definition at line 86 of file api_handler_libraries.h.

References m_type.

◆ loadAllLibraries()

LibraryCommandStatus API_HANDLER_LIBRARIES::loadAllLibraries ( )
protectedinherited

Starts a background load of all libraries of this handler's type.

Definition at line 411 of file api_handler_libraries.cpp.

References adapterForProject(), LIBRARY_MANAGER_ADAPTER::AsyncLoad(), Pgm(), and Prj().

Referenced by handleLoadAllLibraries().

◆ packLibraryItem()

bool API_HANDLER_SCH_LIBRARIES::packLibraryItem ( const LIB_ID & aId,
google::protobuf::Any & aOutput ) const
overrideprotectedvirtual

◆ registerHandler()

template<class RequestType, class ResponseType, class HandlerType>
void API_HANDLER::registerHandler ( HANDLER_RESULT< ResponseType >(HandlerType::* aHandler )(const HANDLER_CONTEXT< RequestType > &))
inlineprotectedinherited

Registers an API command handler for the given message types.

When an API request matching the given type comes in, the handler will be called and its response will be packed into an envelope for sending back to the API client.

If the given message does not unpack into the request type, an envelope is returned with status AS_BAD_REQUEST, which probably indicates corruption in the message.

Template Parameters
RequestTypeis a protobuf message type containing a command
ResponseTypeis a protobuf message type containing a command response
HandlerTypeis the implied type of the API_HANDLER subclass
Parameters
aHandleris the handler function for the given request and response types

Definition at line 93 of file api_handler.h.

References HANDLER_CONTEXT< RequestMessageType >::ClientName, m_handlers, HANDLER_CONTEXT< RequestMessageType >::Request, and tryUnpack().

Referenced by API_HANDLER_BOARD::API_HANDLER_BOARD(), API_HANDLER_COMMON::API_HANDLER_COMMON(), API_HANDLER_EDITOR::API_HANDLER_EDITOR(), API_HANDLER_FOOTPRINT::API_HANDLER_FOOTPRINT(), API_HANDLER_LIBRARIES::API_HANDLER_LIBRARIES(), API_HANDLER_PCB::API_HANDLER_PCB(), and API_HANDLER_SCH::API_HANDLER_SCH().

◆ SetKiway()

void API_HANDLER_LIBRARIES::SetKiway ( KIWAY * aKiway)
inlineinherited

Definition at line 53 of file api_handler_libraries.h.

References m_kiway.

Referenced by CLI::API_SERVER_COMMAND::doPerform().

◆ SetLibraryHandlerRegistrar()

void API_HANDLER_LIBRARIES::SetLibraryHandlerRegistrar ( std::function< void(KIFACE *)> aRegistrar)
inlineinherited

Set a callback to register the handler on the API server in headless mode.

Definition at line 56 of file api_handler_libraries.h.

References m_handlerRegisterCallback.

Referenced by CLI::API_SERVER_COMMAND::doPerform().

◆ tryUnpack()

template<typename MessageType>
bool API_HANDLER::tryUnpack ( ApiRequest & aRequest,
ApiResponse & aReply,
MessageType & aDest )
inlineprivateinherited

Definition at line 136 of file api_handler.h.

Referenced by registerHandler().

Member Data Documentation

◆ m_defaultCommitMessage

const wxString API_HANDLER::m_defaultCommitMessage = _( "Modification from API" )
staticprotectedinherited

Definition at line 131 of file api_handler.h.

Referenced by API_HANDLER_EDITOR::pushCurrentCommit().

◆ m_handlerRegisterCallback

std::function<void( KIFACE* )> API_HANDLER_LIBRARIES::m_handlerRegisterCallback
privateinherited

Invoked with a lazily-loaded KIFACE so its handlers can be registered on the server.

Definition at line 103 of file api_handler_libraries.h.

Referenced by handleLoadAllLibraries(), and SetLibraryHandlerRegistrar().

◆ m_handlers

std::map<std::string, REQUEST_HANDLER> API_HANDLER::m_handlers
protectedinherited

Maps type name (without the URL prefix) to a handler method.

Definition at line 129 of file api_handler.h.

Referenced by Handle(), and registerHandler().

◆ m_kiway

KIWAY* API_HANDLER_LIBRARIES::m_kiway = nullptr
privateinherited

Used to lazily load kifaces for LoadAllLibraries in headless; null in GUI mode.

Definition at line 100 of file api_handler_libraries.h.

Referenced by handleLoadAllLibraries(), and SetKiway().

◆ m_type

LIBRARY_TABLE_TYPE API_HANDLER_LIBRARIES::m_type
privateinherited

The documentation for this class was generated from the following files: