Repo created
This commit is contained in:
parent
81b91f4139
commit
f8c34fa5ee
22732 changed files with 4815320 additions and 2 deletions
52
TMessagesProj/jni/voip/libtgvoip/MessageThread.h
Executable file
52
TMessagesProj/jni/voip/libtgvoip/MessageThread.h
Executable file
|
|
@ -0,0 +1,52 @@
|
|||
//
|
||||
// Created by Grishka on 17.06.2018.
|
||||
//
|
||||
|
||||
#ifndef LIBTGVOIP_MESSAGETHREAD_H
|
||||
#define LIBTGVOIP_MESSAGETHREAD_H
|
||||
|
||||
#include "threading.h"
|
||||
#include "utils.h"
|
||||
#include <vector>
|
||||
#include <functional>
|
||||
|
||||
namespace tgvoip{
|
||||
class MessageThread : public Thread{
|
||||
public:
|
||||
TGVOIP_DISALLOW_COPY_AND_ASSIGN(MessageThread);
|
||||
MessageThread();
|
||||
virtual ~MessageThread();
|
||||
uint32_t Post(std::function<void()> func, double delay=0, double interval=0);
|
||||
void Cancel(uint32_t id);
|
||||
void CancelSelf();
|
||||
void Stop();
|
||||
|
||||
enum{
|
||||
INVALID_ID=0
|
||||
};
|
||||
private:
|
||||
struct Message{
|
||||
uint32_t id;
|
||||
double deliverAt;
|
||||
double interval;
|
||||
std::function<void()> func;
|
||||
};
|
||||
|
||||
void Run();
|
||||
void InsertMessageInternal(Message& m);
|
||||
|
||||
bool running=true;
|
||||
std::vector<Message> queue;
|
||||
Mutex queueMutex;
|
||||
uint32_t lastMessageID=1;
|
||||
bool cancelCurrent=false;
|
||||
|
||||
#ifdef _WIN32
|
||||
HANDLE event;
|
||||
#else
|
||||
pthread_cond_t cond;
|
||||
#endif
|
||||
};
|
||||
}
|
||||
|
||||
#endif //LIBTGVOIP_MESSAGETHREAD_H
|
||||
Loading…
Add table
Add a link
Reference in a new issue