00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef __PION_TCPTIMER_HEADER__
00011 #define __PION_TCPTIMER_HEADER__
00012
00013 #include <boost/asio.hpp>
00014 #include <boost/shared_ptr.hpp>
00015 #include <boost/enable_shared_from_this.hpp>
00016 #include <boost/thread/mutex.hpp>
00017 #include <pion/PionConfig.hpp>
00018 #include <pion/net/TCPConnection.hpp>
00019
00020
00021 namespace pion {
00022 namespace net {
00023
00024
00028 class TCPTimer
00029 : public boost::enable_shared_from_this<TCPTimer>
00030 {
00031 public:
00032
00038 TCPTimer(TCPConnectionPtr& conn_ptr);
00039
00045 void start(const boost::uint32_t seconds);
00046
00048 void cancel(void);
00049
00050
00051 private:
00052
00058 void timerCallback(const boost::system::error_code& ec);
00059
00060
00062 TCPConnectionPtr m_conn_ptr;
00063
00065 boost::asio::deadline_timer m_timer;
00066
00068 boost::mutex m_mutex;
00069
00071 bool m_timer_active;
00072
00074 bool m_was_cancelled;
00075 };
00076
00077
00079 typedef boost::shared_ptr<TCPTimer> TCPTimerPtr;
00080
00081
00082 }
00083 }
00084
00085 #endif