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
00050
00051 const ProxNodeHandle ProxNodeHandle::UNSPECIFIED_NODE;
00052
00053 ProxNodeHandle::ProxNodeHandle()
00054 {
00055
00056
00057 }
00058
00059 ProxNodeHandle::~ProxNodeHandle()
00060 {
00061
00062 }
00063
00064 ProxNodeHandle::ProxNodeHandle(const NodeHandle& nodeHandle)
00065 : NodeHandle(nodeHandle), prox(prox)
00066 {
00067
00068 }
00069
00070 ProxNodeHandle::ProxNodeHandle(const NodeHandle& nodeHandle, const Prox& prox)
00071 : NodeHandle(nodeHandle), prox(prox)
00072 {
00073
00074 }
00075
00076 std::ostream& operator<<(std::ostream& os, const Prox& prox)
00077 {
00078 if (prox == Prox::PROX_SELF) os << "[self]";
00079 else if (prox == Prox::PROX_UNKNOWN) os << "[unknown]";
00080 else if (prox == Prox::PROX_TIMEOUT) os << "[timeout]";
00081 else {
00082 os << prox.proximity;
00083 if (prox.accuracy != 1) os << " (a=" << prox.accuracy << ")";
00084 }
00085 return os;
00086 }
00087