ProxNodeHandle.cc
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00025 #include "ProxNodeHandle.h"
00026
00027
00028
00029
00030 #define MAXTIME_DBL 9223372036.854775807
00031
00032 const Prox Prox::PROX_SELF(0, 1);
00033 const Prox Prox::PROX_UNKNOWN(MAXTIME_DBL, 0);
00034 const Prox Prox::PROX_TIMEOUT(MAXTIME_DBL, 1);
00035
00036
00037 Prox::operator double() { return proximity; };
00038 Prox::operator simtime_t() { return (proximity >= MAXTIME_DBL)
00039 ? MAXTIME : proximity; };
00040
00041 Prox::Prox() {}
00042 Prox::Prox(simtime_t prox) : proximity(SIMTIME_DBL(prox)), accuracy(1) {}
00043 Prox::Prox(simtime_t prox, double acc) : proximity(SIMTIME_DBL(prox)), accuracy(acc) {}
00044 Prox::Prox(double prox, double acc) : proximity(prox), accuracy(acc) {}
00045
00046 bool Prox::operator==(Prox p) const { return proximity == p.proximity && accuracy == p.accuracy; }
00047 bool Prox::operator!=(Prox p) const { return !(*this == p); }
00048
00049 ProxNodeHandle::ProxNodeHandle()
00050 {
00051
00052
00053 }
00054
00055 ProxNodeHandle::~ProxNodeHandle()
00056 {
00057
00058 }
00059
00060 ProxNodeHandle::ProxNodeHandle(const NodeHandle& nodeHandle)
00061 : NodeHandle(nodeHandle), prox(prox)
00062 {
00063
00064 }
00065
00066 ProxNodeHandle::ProxNodeHandle(const NodeHandle& nodeHandle, const Prox& prox)
00067 : NodeHandle(nodeHandle), prox(prox)
00068 {
00069
00070 }
00071
00072 std::ostream& operator<<(std::ostream& os, const Prox& prox)
00073 {
00074 if (prox == Prox::PROX_SELF) os << "[self]";
00075 else if (prox == Prox::PROX_UNKNOWN) os << "[unknown]";
00076 else if (prox == Prox::PROX_TIMEOUT) os << "[timeout]";
00077 else {
00078 os << prox.proximity;
00079 if (prox.accuracy != 1) os << " (a=" << prox.accuracy << ")";
00080 }
00081 return os;
00082 }
00083