/* * Squawk messenger. * Copyright (C) 2019 Yury Gubich * * 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 . */ #include "info.h" Core::DelayManager::Info::Info(Id p_id, Type p_type) : Job(p_id, p_type), stage(Stage::waitingForVCard), info(nullptr) {} Core::DelayManager::Info::Info(const Info& other) : Job(other), stage(other.stage), info(nullptr) {} Core::DelayManager::Info::~Info() { if (stage == Stage::waitingForBundles) { delete info; } } Core::DelayManager::Info::Stage Core::DelayManager::Info::getStage() const { return stage; } void Core::DelayManager::Info::receivedVCard(const Shared::VCard& card) { if (stage != Stage::waitingForVCard) throw 245; info = new Shared::VCard(card); #ifdef WITH_OMEMO stage = Stage::waitingForBundles; #endif } Shared::VCard * Core::DelayManager::Info::claim() { if (stage != Stage::waitingForBundles) throw 246; Shared::VCard* res = info; info = nullptr; return res; }