#ifndef OSDEV_COMPONENTS_ORMTHREAD_H #define OSDEV_COMPONENTS_ORMTHREAD_H #include #include #include "ormreldata.h" /* ______________________________________ * / Good day to deal with people in high \ * | places; particularly lonely | * \ stewardesses. / * -------------------------------------- * \ * \ * .--. * |o_o | * |:_/ | * // \ \ * (| | ) * /'\_ _/`\ * \___)=(___/ *//*! * \brief This class *manages* the thread, the ORM layer will be started in. * Derived from QThread it isn't the thread itself but implements the * 'run()' method that'll start the thread. (QThread isn't meant to be * instantiated. It has to be derived.. :) ) * * And sometimes it can be a Stewardess. That's polymorphism for yah! */ namespace osdev { namespace components { class ORMThread : public QThread { Q_OBJECT public: ORMThread(); // Deleted copy-constructor ORMThread( const ORMThread& ) = delete; ORMThread( const ORMThread&& ) = delete; ORMThread& operator=( const ORMThread& ) = delete; ORMThread& operator=( const ORMThread&& ) = delete; /*! * \brief Destructor */ virtual ~ORMThread(); /*! * \brief Override from QThread. This will actually create and start the thread. * Objects used here are "moved" to the new thread and run */ void run() override; /*! * \brief Send the data to the intended thread. * \param data Data coming from the plugin. Ownership is moved to the thread and that * specific thread is responsible for cleaning up. */ void dataToThread( const QSharedPointer& data ); signals: /*! * \brief Used to send the datastructure to the thread. * \param data Data coming from the plugin. */ void signalSendData( const QSharedPointer& data ); /*! * \brief If the thread is unable to process the data that was sent, it will "reject" this. * Normally it would then be send to a subsystem, capable of storing the data and * resend it for re-processing. * \param data Data originally comming from the plugin (it can be enriched along the way). */ void signalRejectedData( const QSharedPointer& data ); }; } /* End namespace components */ } /* End namespace osdev */ #endif /* OSDEV_COMPONENTS_ORMTHREAD_H */