|
KiCad PCB EDA Suite
|
Base class for API handlers related to library management. More...
#include <api_handler_libraries.h>
Public Member Functions | |
| API_HANDLER_LIBRARIES (LIBRARY_TABLE_TYPE aType=LIBRARY_TABLE_TYPE::DESIGN_BLOCK) | |
| ~API_HANDLER_LIBRARIES () override | |
| 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 | |
| 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) |
| virtual bool | packLibraryItem (const LIB_ID &aId, google::protobuf::Any &aOutput) const |
| LIBRARY_TABLE_TYPE | libraryType () const |
| virtual LIBRARY_MANAGER_ADAPTER * | adapterForProject (PROJECT &aProject) const |
| virtual std::vector< wxString > | getItemNames (LIBRARY_MANAGER_ADAPTER &aAdapter, const wxString &aNickname) const |
| Returns the names of all entries in the given library, or an empty vector if the library is not loaded (or cannot be enumerated). | |
| 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_HANDLER > | m_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 |
| KIWAY * | m_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. | |
Base class for API handlers related to library management.
These are separate from the API_HANDLER_EDITOR derived classes because libraries (other than design blocks) need to be opened in a kiface context, but not associated with one particular frame.
Definition at line 46 of file api_handler_libraries.h.
|
protectedinherited |
A handler for outer messages (envelopes) that will unpack to inner messages and call a specific handler function.
Definition at line 76 of file api_handler.h.
| API_HANDLER_LIBRARIES::API_HANDLER_LIBRARIES | ( | LIBRARY_TABLE_TYPE | aType = LIBRARY_TABLE_TYPE::DESIGN_BLOCK | ) |
Definition at line 45 of file api_handler_libraries.cpp.
References DESIGN_BLOCK, handleGetItemsFromLibrary(), handleGetLibraryItems(), handleGetLibraryStatuses(), handleLoadAllLibraries(), handleReloadLibrary(), m_type, and API_HANDLER::registerHandler().
Referenced by API_HANDLER_FP_LIBRARIES::API_HANDLER_FP_LIBRARIES(), and API_HANDLER_SCH_LIBRARIES::API_HANDLER_SCH_LIBRARIES().
|
overridedefault |
|
protectedvirtual |
Reimplemented in API_HANDLER_FP_LIBRARIES, and API_HANDLER_SCH_LIBRARIES.
Definition at line 68 of file api_handler_libraries.cpp.
References PROJECT::DesignBlockLibs().
Referenced by handleGetItemsFromLibrary(), handleGetLibraryItems(), and loadAllLibraries().
|
protectedvirtual |
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 in API_HANDLER_FP_LIBRARIES, and API_HANDLER_SCH_LIBRARIES.
Definition at line 74 of file api_handler_libraries.cpp.
Referenced by handleGetLibraryItems().
|
inherited |
Attempt to handle the given API request, if a handler exists in this class for the message.
| aMsg | is a request to attempt to handle |
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().
|
protected |
Definition at line 428 of file api_handler_libraries.cpp.
References adapterForProject(), SETTINGS_MANAGER::GetProjectForPath(), PGM_BASE::GetSettingsManager(), LIBRARY_MANAGER_ADAPTER::LoadLibraryEntry(), m_type, packLibraryItem(), Pgm(), SETTINGS_MANAGER::Prj(), project, HANDLER_CONTEXT< RequestMessageType >::Request, and ToProtoEnum().
Referenced by API_HANDLER_LIBRARIES().
|
protected |
Definition at line 82 of file api_handler_libraries.cpp.
References adapterForProject(), getItemNames(), PGM_BASE::GetSettingsManager(), LIBRARY_MANAGER_ADAPTER::LoadLibraryEntry(), m_type, Pgm(), SETTINGS_MANAGER::Prj(), project, HANDLER_CONTEXT< RequestMessageType >::Request, LIBRARY_MANAGER_ADAPTER::Rows(), and ToProtoEnum().
Referenced by API_HANDLER_LIBRARIES().
|
protected |
Definition at line 170 of file api_handler_libraries.cpp.
References LIBRARY_MANAGER::Adapter(), DESIGN_BLOCK, FOOTPRINT, FromProtoEnum(), PGM_BASE::GetLibraryManager(), LIBRARY_MANAGER_ADAPTER::GetLibraryStatus(), packLibraryStatusEntry(), Pgm(), HANDLER_CONTEXT< RequestMessageType >::Request, LIBRARY_MANAGER::Rows(), SYMBOL, and UNINITIALIZED.
Referenced by API_HANDLER_LIBRARIES().
|
protected |
Definition at line 323 of file api_handler_libraries.cpp.
References DESIGN_BLOCK, KIWAY::FACE_PCB, KIWAY::FACE_SCH, FOOTPRINT, FromProtoEnum(), KIWAY::KiFACE(), kiface(), KIWAY::KIWAY_FACE_COUNT, loadAllLibraries(), m_handlerRegisterCallback, m_kiway, Pgm(), HANDLER_CONTEXT< RequestMessageType >::Request, and SYMBOL.
Referenced by API_HANDLER_LIBRARIES().
|
protected |
Definition at line 239 of file api_handler_libraries.cpp.
References LIBRARY_MANAGER::Adapter(), FromProtoEnum(), PGM_BASE::GetLibraryManager(), LIBRARY_MANAGER::GetRow(), GLOBAL, LIBRARY_MANAGER::LoadLibraryEntry(), Pgm(), PROJECT, LIBRARY_MANAGER::ReloadLibraryEntry(), HANDLER_CONTEXT< RequestMessageType >::Request, and LIBRARY_MANAGER::Rows().
Referenced by API_HANDLER_LIBRARIES().
|
inlineprotected |
Definition at line 86 of file api_handler_libraries.h.
References m_type.
|
protected |
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().
|
inlineprotectedvirtual |
Reimplemented in API_HANDLER_FP_LIBRARIES, and API_HANDLER_SCH_LIBRARIES.
Definition at line 81 of file api_handler_libraries.h.
Referenced by handleGetItemsFromLibrary().
|
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.
| RequestType | is a protobuf message type containing a command |
| ResponseType | is a protobuf message type containing a command response |
| HandlerType | is the implied type of the API_HANDLER subclass |
| aHandler | is 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().
|
inline |
Definition at line 53 of file api_handler_libraries.h.
References m_kiway.
Referenced by CLI::API_SERVER_COMMAND::doPerform().
|
inline |
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().
|
inlineprivateinherited |
Definition at line 136 of file api_handler.h.
Referenced by registerHandler().
|
staticprotectedinherited |
Definition at line 131 of file api_handler.h.
Referenced by API_HANDLER_EDITOR::pushCurrentCommit().
|
private |
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().
|
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().
|
private |
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().
|
private |
Definition at line 97 of file api_handler_libraries.h.
Referenced by API_HANDLER_LIBRARIES(), handleGetItemsFromLibrary(), handleGetLibraryItems(), and libraryType().