Public Member Functions
PeerInfo Class Reference

Brief description of class still missing. More...

#include <PeerInfo.h>

List of all members.

Public Member Functions

void addDestination (const Address &destination)
const Addressaddress () const
void beaconReceived ()
void calculate ()
void connect (const Address &peer, uint16_t port)
double lastBeaconDelay ()
const LinkInfolink () const
const MasterTimemasterTime () const
 PeerInfo (const Address &a)
const MasterTimepeerMasterTime () const
void setLink (const LinkInfo &l)
void setMasterTime (const MasterTime &m)
void setPeerMasterTime (const MasterTime &m)
void setStream (LinkStream *stream)
const LinkStreamstream () const
 ~PeerInfo ()

Detailed Description

Brief description of class still missing.

Full description of class still missing


Constructor & Destructor Documentation

PeerInfo::PeerInfo ( const Address a)

Description of constructor still missing

{
  _address=a;
  _timer=0;
  _stream=0;
}

Description of destructor still missing

References GpCoreTools::Stream::close().

{
  delete _timer;
  if(_stream) _stream->close();
}

Member Function Documentation

void PeerInfo::addDestination ( const Address destination)
const Address& PeerInfo::address ( ) const [inline]
void PeerInfo::beaconReceived ( ) [inline]

References GpCoreTools::Chrono::start().

Referenced by PeerTracker::event().

{_lastBeacon.start();}

Link and peer master time must be up-to-date.

References LinkInfo::isLinked(), LinkInfo::latency(), MasterTime::setTimeFromMaster(), MasterTime::setTimeToMaster(), LinkInfo::slownessFromPeer(), LinkInfo::slownessToPeer(), MasterTime::timeFromMaster(), and MasterTime::timeToMaster().

Referenced by PeerTracker::setLink().

{
  if(_link.isLinked()) {
    if(_peerMasterTime.timeToMaster()<1e99) {
      _masterTime.setTimeToMaster(_peerMasterTime.timeToMaster()+_link.latency()+128*_link.slownessToPeer());
    }
    if(_peerMasterTime.timeFromMaster()<1e99) {
      _masterTime.setTimeFromMaster(_peerMasterTime.timeFromMaster()+_link.latency()+128*_link.slownessFromPeer());
    }
  } else {
    _masterTime.setTimeToMaster(1e99);
    _masterTime.setTimeFromMaster(1e99);
  }
}
void PeerInfo::connect ( const Address peer,
uint16_t  port 
)

References LinkTimer::exec(), and GpCoreTools::Timer::start().

{
  if(!_timer) {
    _timer=new LinkTimer(peer, port);
  }
  // Try to connect right now
  if(_timer->exec()) {
    _timer->start(); // retry later
  }
}
double PeerInfo::lastBeaconDelay ( ) [inline]

References GpCoreTools::Chrono::elapsed().

Referenced by PeerTracker::checkDeadPeers().

{return _lastBeacon.elapsed();}
const LinkInfo& PeerInfo::link ( ) const [inline]
{return _link;}
const MasterTime& PeerInfo::masterTime ( ) const [inline]
const MasterTime& PeerInfo::peerMasterTime ( ) const [inline]
{return _peerMasterTime;}
void PeerInfo::setLink ( const LinkInfo l) [inline]

Referenced by PeerTracker::setLink().

{_link=l;}
void PeerInfo::setMasterTime ( const MasterTime m) [inline]
{_masterTime=m;}
void PeerInfo::setPeerMasterTime ( const MasterTime m) [inline]

Referenced by PeerTracker::setLink().

{_peerMasterTime=m;}
void PeerInfo::setStream ( LinkStream stream)

References stream().

Referenced by PeerTracker::start().

{
  _stream=stream;
}
const LinkStream* PeerInfo::stream ( ) const [inline]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines