waranrouted/PeerInfo.h
Go to the documentation of this file.
00001 /***************************************************************************
00002 **
00003 **  This file is part of waranrouted.
00004 **
00005 **  This file may be distributed and/or modified under the terms of the
00006 **  GNU General Public License version 2 or 3 as published by the Free
00007 **  Software Foundation and appearing in the file LICENSE.GPL included
00008 **  in the packaging of this file.
00009 **
00010 **  This file is distributed in the hope that it will be useful, but WITHOUT
00011 **  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00012 **  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
00013 **  more details.
00014 **
00015 **  You should have received a copy of the GNU General Public License
00016 **  along with this program. If not, see <http://www.gnu.org/licenses/>.
00017 **
00018 **  See http://www.geopsy.org for more information.
00019 **
00020 **  Created : 2009-08-23
00021 **  Authors:
00022 **    Marc Wathelet
00023 **    Marc Wathelet (LGIT, Grenoble, France)
00024 **
00025 ***************************************************************************/
00026 
00027 #ifndef PEERINFO_H
00028 #define PEERINFO_H
00029 
00030 #include <GpCoreTools.h>
00031 #include "MasterTime.h"
00032 #include "LinkInfo.h"
00033 
00034 class LinkTimer;
00035 class LinkStream;
00036 
00037 class PeerInfo
00038 {
00039 public:
00040   PeerInfo(const Address& a);
00041   ~PeerInfo();
00042 
00043   const Address& address() const {return _address;}
00044 
00045   void beaconReceived() {_lastBeacon.start();}
00046   double lastBeaconDelay() {return _lastBeacon.elapsed();}
00047 
00048   void connect(const Address& peer, uint16_t port);
00049   void setStream(LinkStream * stream);
00050   const LinkStream * stream() const {return _stream;}
00051 
00052   const LinkInfo& link() const {return _link;}
00053   void setLink(const LinkInfo& l) {_link=l;}
00054 
00055   const MasterTime& peerMasterTime() const {return _peerMasterTime;}
00056   void setPeerMasterTime(const MasterTime& m) {_peerMasterTime=m;}
00057 
00058   const MasterTime& masterTime() const {return _masterTime;}
00059   void setMasterTime(const MasterTime& m) {_masterTime=m;}
00060 
00061   void calculate();
00062 
00063   void addDestination(const Address& destination);
00064 private:
00065   Address _address;
00066   LinkTimer * _timer;
00067   LinkStream * _stream;
00068   LinkInfo _link;
00069   MasterTime _peerMasterTime;
00070   MasterTime _masterTime;
00071   Chrono _lastBeacon;
00072 };
00073 
00074 #endif // PEERINFO_H
00075 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines