// 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); stage = Stage::waitingForBundles; } Shared::VCard * Core::DelayManager::Info::claim() { if (stage != Stage::waitingForBundles) throw 246; Shared::VCard* res = info; info = nullptr; return res; }