/* PIP - Platform Independent Primitives Introspection module - implementation of threads Copyright (C) 2020 Ivan Pelipenko peri4ko@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef PIINTROSPECTION_THREADS_P_H #define PIINTROSPECTION_THREADS_P_H #include "pimap.h" #include "pithread.h" class PIP_EXPORT PIIntrospectionThreads { public: PIIntrospectionThreads(); enum ThreadState { sStopped = 1, sStarting, sRunning, sWaiting, }; struct ThreadInfo { ThreadInfo(); PIString classname, name; int id, delay; ThreadState state; short priority; ullong run_us, run_count; }; void threadNew (PIThread * t); void threadDelete (PIThread * t); void threadStart (PIThread * t); void threadRun (PIThread * t); void threadWait (PIThread * t); void threadStop (PIThread * t); void threadRunDone(PIThread * t, ullong us); PIMap threads; PIMutex mutex; }; PIByteArray & operator <<(PIByteArray & b, const PIIntrospectionThreads::ThreadInfo & v); PIByteArray & operator >>(PIByteArray & b, PIIntrospectionThreads::ThreadInfo & v); #endif // PIINTROSPECTION_THREADS_P_H