56 lines
861 B
C++
56 lines
861 B
C++
//
|
|
// Created by dongl on 23-5-17.
|
|
//
|
|
|
|
#ifndef IM2_TIMELINE_H
|
|
#define IM2_TIMELINE_H
|
|
|
|
#include <string>
|
|
#include <queue>
|
|
#include "proto/mp.mp.pb.h"
|
|
#include "storage/db_base.h"
|
|
|
|
|
|
struct SynMsg {
|
|
uint64_t message_id;
|
|
time_t time;
|
|
};
|
|
|
|
struct StorageMsg {
|
|
mp::MP_SUB_TYPE msg_type;
|
|
mp::MP_SUB_TYPE session_type;
|
|
int64_t message_id;
|
|
time_t time;
|
|
int64_t account;
|
|
std::string im_msg_data;
|
|
};
|
|
|
|
template<class T>
|
|
class TimeLine {
|
|
public:
|
|
void push(T ele) {
|
|
mutex.lock();
|
|
queue.push(ele);
|
|
mutex.unlock();
|
|
}
|
|
|
|
T pull() {
|
|
std::lock_guard lockGuard(mutex);
|
|
auto ele = queue.front();
|
|
queue.pop();
|
|
return ele;
|
|
}
|
|
|
|
std::queue<T>& value() {
|
|
return queue;
|
|
}
|
|
private:
|
|
std::mutex mutex;
|
|
std::queue<T> queue;
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif //IM2_TIMELINE_H
|