$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Sebastian Redl (sebastian.redl_at_[hidden])
Date: 2005-12-21 08:54:42
Christopher Kohlhoff wrote:
>>I think the following code-snippet in the tutorial could be
>>written more elegantly, through an interface change of the
>>deadline_timer:
>>
>>{ boost::asio::deadline_timer t; ...
>>t.expires_at(t.expires_at() + boost::posix_time::seconds(1));
>>}
>>
>>by giving direct access to the time member.
>>
>>t.expiry_date()+=boost::posix_time::seconds(1); For more
>>complex cases or error-checking, some proxy classes could be
>>used.
>>
>>
>
>Doesn't such an approach force a particular internal
>implementation on the timer?
>
>
Actually, no. It's pretty easy to write a proxy object to do this stuff.
A minimal object, just for the above example:
class expiry_date_proxy
{
deadline_timer &timer;
public:
expiry_date_proxy(deadline_timer &t) : timer(t) {}
expiry_date_proxy & operator +=(timespan ts) {
timer.expires_at(timer.expires_at() + ts);
}
};
class deadline_timer
{
...
expiry_date_proxy expiry_date() { return expiry_date_proxy(*this); }
};
I'm not saying that this necessarily should be done (in particular,
where do you stop making properties?), but it's possible.
Sebastian Redl