class header file //dividandconquer.h
#ifndef DIVIDANDCONQUER_H
#define DIVIDANDCONQUER_H
#include <iostream>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/date.hpp>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
using namespace boost::posix_time;
using namespace boost::gregorian;
class dividandconquer
{
public:
dividandconquer(boost::asio::io_service& io);
int lb =0;
int ub =1000;
int mb =0;
ptime t1;
ptime finaltimer;
void reset(int);
void print();
private:
boost::asio::deadline_timer timer_;
int count_;
};
#endif // DIVIDANDCONQUER_H
inside constructor i am trying to trigger timer at specific time(using expire_at) but its not working. But if i am using expires_from_now it works fine.
File name :dividandconquer.cpp
#include "dividandconquer.h"
dividandconquer::dividandconquer(boost::asio::io_service& io)
: timer_(io),
count_(0)
{
t1=ptime( (boost::gregorian::day_clock::local_day()), hours(15)+minutes(12));
timer_.expires_at(t1);
timer_.async_wait(boost::bind(&dividandconquer::print, this));
}
void dividandconquer::reset(int upordown)// 0 means lowebound 1 means uperbound
{
if (mb>0)
{
if (0==upordown)
{ mb=(lb+ub)/2;
ub=mb;
}
else
{
mb=(ub-lb)/2;
lb=mb;
}
}
}
void dividandconquer::print()
{
if (count_ < 5)
{
std::cout << count_ << "\n";
++count_;
//timer_.expires_at(timer_.expires_at() + boost::posix_time::seconds(1));
// timer_.async_wait(boost::bind(&printer::print, this));
}
}
main file
#include <QApplication>
#include "dividandconquer.h"
#include <boost/asio.hpp>
int main(int argc, char *argv[])
{
boost::asio::io_service io;
dividandconquer d1(io);
io.run();
return 0;
}
Aucun commentaire:
Enregistrer un commentaire