Files
pip/src_main/introspection/piintrospection_threads_p.h

64 lines
1.7 KiB
C++

/*
PIP - Platform Independent Primitives
Introspection module - implementation of threads
Copyright (C) 2019 Ivan Pelipenko peri4ko@yandex.ru
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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<PIThread*, ThreadInfo> threads;
PIMutex mutex;
};
PIByteArray & operator <<(PIByteArray & b, const PIIntrospectionThreads::ThreadInfo & v);
PIByteArray & operator >>(PIByteArray & b, PIIntrospectionThreads::ThreadInfo & v);
#endif // PIINTROSPECTION_THREADS_P_H