/* Copyright © 2015-2016 Gluzskiy Alexandr (sss) This file is part of Unknown Download Manager (UDM). UDM 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 2 of the License, or (at your option) any later version. UDM 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 UDM. If not, see . */ #include "event_subscription_repeated.h" #include extern boost::asio::io_service io_service_server; event_subscription_repeated::event_subscription_repeated(client_event_subscription_request *req) : event_subscription_base(req) { subtype = EVENT_SUBTYPE_REPEATED; timer = new deadline_timer(io_service_server, boost::posix_time::milliseconds(req->interval())); timer->async_wait(boost::bind(&event_subscription_repeated::timer_handler, this, _1)); } event_subscription_repeated::~event_subscription_repeated() { delete timer; } void event_subscription_repeated::timer_handler(const boost::system::error_code &e) { if(!e) { //TODO: fire event if(!subscription_request.one_time()) { timer->expires_from_now(boost::posix_time::milliseconds(subscription_request.interval())); timer->async_wait(boost::bind(&event_subscription_repeated::timer_handler, this, _1)); } else { //TODO: remove entry from events subscription list in client object delete this; } } else { //TODO: handle error //TODO: remove entry from events subscription list in client object delete this; } }