Add Respond Processor
This commit is contained in:
parent
5a55dc297c
commit
7b7bf20188
69
respond_processor.h
Normal file
69
respond_processor.h
Normal file
@ -0,0 +1,69 @@
|
||||
//
|
||||
// Created by eric on 5/17/20.
|
||||
//
|
||||
|
||||
#ifndef TGCLIC_RESPOND_PROCESSOR_H
|
||||
#define TGCLIC_RESPOND_PROCESSOR_H
|
||||
|
||||
#include <map>
|
||||
#include <functional>
|
||||
|
||||
|
||||
#include "tg.h"
|
||||
#include "utils.h"
|
||||
#include "info_pool.h"
|
||||
|
||||
namespace tgclc {
|
||||
|
||||
// Dealing And Recording With Responds From Client
|
||||
class RespondProcessor {
|
||||
public:
|
||||
|
||||
void deal(Client::Response response) {
|
||||
if (!response.object) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (response.id == 0) {
|
||||
return process_update(std::move(response.object));
|
||||
}
|
||||
this->record(response.id, std::move(response.object));
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
InfoPool& infoPool = singleton<InfoPool>::instance();
|
||||
|
||||
std::vector<std::function<void(td_api::Update &)>> event_processor;
|
||||
|
||||
void record(std::uint64_t id, object_p object) {
|
||||
infoPool.setHandlerRespondObject(id, std::move(object));
|
||||
}
|
||||
|
||||
void process_update(td_api::object_ptr<td_api::Object> update) {
|
||||
td_api::downcast_call(
|
||||
*update, overloaded(
|
||||
[this](td_api::updateAuthorizationState &update_authorization_state) {
|
||||
event_processor[0](update_authorization_state);
|
||||
},
|
||||
[this](td_api::updateNewChat &update_new_chat) {
|
||||
event_processor[1](update_new_chat);
|
||||
},
|
||||
[this](td_api::updateChatTitle &update_chat_title) {
|
||||
|
||||
},
|
||||
[this](td_api::updateUser &update_user) {
|
||||
|
||||
},
|
||||
[this](td_api::updateNewMessage &update_new_message) {
|
||||
|
||||
},
|
||||
[](auto &update) {}));
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
||||
#endif //TGCLIC_RESPOND_PROCESSOR_H
|
Loading…
Reference in New Issue
Block a user