#pragma once #ifndef TIPC_SERVER_H #define TIPC_SERVER_H // Toonz includes #include "tcommon.h" // STL includes #include // Qt includes #include #include #include #include #include #undef DVAPI #undef DVVAR #ifdef TNZCORE_EXPORTS #define DVAPI DV_EXPORT_API #define DVVAR DV_EXPORT_VAR #else #define DVAPI DV_IMPORT_API #define DVVAR DV_IMPORT_VAR #endif namespace tipc { class MessageParser; //******************************************************************************* // Server declaration //******************************************************************************* /*! The tipc::Server class is the base server class for inter-process communication in Toonz-related applications. A tipc::Server is a specialized QLocalServer which stores header/message-callback associations to perform message parsing. */ class DVAPI Server final : public QLocalServer { Q_OBJECT QHash m_parsers; bool m_lock; public: Server(); ~Server(); void addParser(MessageParser *parser); void removeParser(QString header); //! Generic dispatcher function for socket messages. //! Acceptable socket messages are composed of a header and a body part. //! The header part, containing an explanation of the message's body, is //! the first line of the message, and is expected to be at max 1024 chars //! long. //! Depending on the header content, the rest of the message is read in //! specialized message handler functions. void dispatchSocket(QLocalSocket *socket); public Q_SLOTS: //! Receives a client connection to the server and prepares a socket for the //! connection. void onNewConnection(); void onError(QLocalSocket::LocalSocketError); }; } // namespace tipc #endif // TIPC_SERVER_H