Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Bot::on_incoming_packet(const websocketpp::connection_hdl &, const client::message_ptr &msg) {
- /**
- * @brief Incoming packet handler
- *
- * @param[in] msg Incoming message from the discord gateway.
- *
- * @return void
- */
- nlohmann::json j = nlohmann::json::parse(msg->get_payload());
- switch (j["op"].get<int>()) {
- case (9):
- if (disconnected) {
- std::this_thread::sleep_for(std::chrono::milliseconds(5000));
- con->send(get_identify_packet());
- }
- break;
- case (10):
- hello_packet = j;
- con->send(get_identify_packet());
- break;
- case (11):
- heartbeat_acked = true;
- break;
- default:
- if (!waiting_event_map.empty()) {
- for (auto waiting_event : waiting_event_map) {
- auto findResult = std::find_if(event_m.begin(), event_m.end(), [&](const std::pair<std::string, int> &pair) {
- return pair.second == waiting_event->event;
- });
- if (findResult != event_m.end()) {
- std::cout << "FOUND EVENT - RESULT: " << j["d"].dump() << std::endl;
- waiting_event->hasBeenCalled = true;
- waiting_event->result = j;
- waiting_event_map.erase(std::find(waiting_event_map.begin(), waiting_event_map.end(), waiting_event));
- break;
- }
- }
- }
- handle_event(j, get_value(j, "t", ""));
- break;
- }
- packet_counter++;
- }
- nlohmann::json Bot::wait_for_event(events event, double time_out_ms) {
- wait_event_struct temp = { event, NULL, false };
- waiting_event_map.insert(waiting_event_map.end(), std::make_shared<wait_event_struct>(temp));
- auto waiting_event = waiting_event_map.back();
- while (!waiting_event->hasBeenCalled && time_out_ms > 0) {
- time_t start = time(0);
- time_out_ms -= start;
- if (time_out_ms < 0) {
- std::cout << "TIMED OUT" << std::endl;
- waiting_event->result = nlohmann::json::parse("{\"TIMED_OUT\":\"TRUE\"}");
- waiting_event_map.erase(std::find(waiting_event_map.begin(), waiting_event_map.end(), waiting_event));
- }
- }
- return waiting_event->result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement