#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 : 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