Как отправлять данные на сервер каждые n секунд, а если они не доставлены, то сохранять каждые m секунд?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как отправлять данные на сервер каждые n секунд, а если они не доставлены, то сохранять каждые m секунд?

Сообщение Anonymous »

У меня есть класс Manager, который запускает одну из нескольких задач (Poco::Util::TimerTask), которые периодически выполняются в отдельном потоке с использованием Poco::Util::Timer. При выполнении определенного условия эта задача должна остановиться и сообщить менеджеру о запуске другой задачи и так далее.
Чтобы быть более конкретным, мне нужно отправлять данные на сервер каждые n секунд, а если данные не могут быть отправлены, то сохранять их в файл каждые m секунд.
  • Нужно ли мне оформлять их по-другому? как мне спроектировать классы, чтобы избавиться от циклической зависимости (между Менеджером и задачами)
  • Может быть, у вас есть идеи, как проще отправлять и сохранять?
Я могу показать это прямо сейчас
class Manager {
Poco::AutoPtr sendTask;
Poco::AutoPtr saveTask;
Poco::Util::Timer timer;
public:
void start() {
timer.scheduleAtFixedRate(sendTask, 15000, 15000);
}

void setSendTask() {
timer.cancel();
sendTaskPtr_.reset(new SendTimerTask( sender_, saver_, *this, agent_ ));
timer.scheduleAtFixedRate(sendTaskPtr_, 0, 15000);
}

void setSaveTask() {
timer.cancel();
saveTaskPtr_.reset(new SaveTimerTask( saver_, sender_, *this, agent_ ));
timer.scheduleAtFixedRate(saveTaskPtr_, 0, 20000);
}
};

class SendTask : public Poco::Util::TimerTask{
public:
void run() override {
// sending to server

if (condition) {
manager.setSaveTask();
}
}
private:
Manager manager;
};


Подробнее здесь: https://stackoverflow.com/questions/792 ... livered-th
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»