/* PIP - Platform Independent Primitives Introspection module - implementation of threads 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 "pibase.h" #if defined(PIP_INTROSPECTION) && !defined(PIP_FORCE_NO_PIINTROSPECTION) #include "pimap.h" #include "pithread.h" class PIP_EXPORT PIIntrospectionThreads { public: PIIntrospectionThreads(); enum ThreadState { sStopped = 1, sStarting, sRunning, sWaiting, }; struct PIP_EXPORT ThreadInfo { ThreadInfo(); PIString classname, name; int id, delay; ThreadState state; short priority; ullong run_us, run_count; }; // clang-format off 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); // clang-format on PIMap threads; PIMutex mutex; }; BINARY_STREAM_WRITE(PIIntrospectionThreads::ThreadInfo) { s << v.classname << v.name << v.id << v.state << v.priority << v.delay << v.run_us << v.run_count; return s; } BINARY_STREAM_READ(PIIntrospectionThreads::ThreadInfo) { s >> v.classname >> v.name >> v.id >> v.state >> v.priority >> v.delay >> v.run_us >> v.run_count; return s; } #endif // #if defined(PIP_INTROSPECTION) && !defined(PIP_FORCE_NO_PIINTROSPECTION) #endif // PIINTROSPECTION_THREADS_P_H