libDwm-0.6.0
DwmPingDestinationEntry.hh
Go to the documentation of this file.
1
//===========================================================================
2
// @(#) $DwmPath: dwm/libDwm/tags/libDwm-0.6.0/include/DwmPingDestinationEntry.hh 8401 $
3
// @(#) $Id: DwmPingDestinationEntry.hh 8401 2016-04-17 06:44:31Z dwm $
4
//===========================================================================
5
// Copyright (c) Daniel W. McRobb 2008, 2016
6
// All rights reserved.
7
//
8
// Redistribution and use in source and binary forms, with or without
9
// modification, are permitted provided that the following conditions
10
// are met:
11
//
12
// 1. Redistributions of source code must retain the above copyright
13
// notice, this list of conditions and the following disclaimer.
14
// 2. Redistributions in binary form must reproduce the above copyright
15
// notice, this list of conditions and the following disclaimer in the
16
// documentation and/or other materials provided with the distribution.
17
// 3. The names of the authors and copyright holders may not be used to
18
// endorse or promote products derived from this software without
19
// specific prior written permission.
20
//
21
// IN NO EVENT SHALL DANIEL W. MCROBB BE LIABLE TO ANY PARTY FOR
22
// DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
23
// INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE,
24
// EVEN IF DANIEL W. MCROBB HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
25
// DAMAGE.
26
//
27
// THE SOFTWARE PROVIDED HEREIN IS ON AN "AS IS" BASIS, AND
28
// DANIEL W. MCROBB HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
29
// UPDATES, ENHANCEMENTS, OR MODIFICATIONS. DANIEL W. MCROBB MAKES NO
30
// REPRESENTATIONS AND EXTENDS NO WARRANTIES OF ANY KIND, EITHER
31
// IMPLIED OR EXPRESS, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
32
// WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE,
33
// OR THAT THE USE OF THIS SOFTWARE WILL NOT INFRINGE ANY PATENT,
34
// TRADEMARK OR OTHER RIGHTS.
35
//===========================================================================
36
37
//---------------------------------------------------------------------------
40
//---------------------------------------------------------------------------
41
42
#ifndef _DWMPINGDESTINATIONENTRY_HH_
43
#define _DWMPINGDESTINATIONENTRY_HH_
44
45
#include <map>
46
47
#include "
DwmTimeValue.hh
"
48
#include "
DwmPingDestination.hh
"
49
50
namespace
Dwm
{
51
52
//--------------------------------------------------------------------------
60
//--------------------------------------------------------------------------
61
class
PingSequencesInFlight
62
{
63
public
:
64
//------------------------------------------------------------------------
66
//------------------------------------------------------------------------
67
PingSequencesInFlight
();
68
69
//------------------------------------------------------------------------
71
//------------------------------------------------------------------------
72
void
Destination
(
const
PingDestination
& destination);
73
74
//------------------------------------------------------------------------
76
//------------------------------------------------------------------------
77
bool
AddSent
(uint16_t seq,
const
TimeValue
& sendTime);
78
79
//------------------------------------------------------------------------
81
//------------------------------------------------------------------------
82
bool
ProcessReceive
(uint16_t seq,
const
TimeValue
& recvTime,
83
TimeValue
& rtt);
84
85
//------------------------------------------------------------------------
88
//------------------------------------------------------------------------
89
bool
Outstanding
()
const
;
90
91
protected
:
92
PingDestination
_destination;
93
std::map<uint16_t,TimeValue> _sequences;
94
95
void
CleanupOld();
96
};
97
98
//--------------------------------------------------------------------------
100
//--------------------------------------------------------------------------
101
class
PingDestinationEntry
102
{
103
public
:
104
//------------------------------------------------------------------------
106
//------------------------------------------------------------------------
107
PingDestinationEntry
();
108
109
//------------------------------------------------------------------------
111
//------------------------------------------------------------------------
112
void
Destination
(
const
PingDestination
& destination);
113
114
//------------------------------------------------------------------------
116
//------------------------------------------------------------------------
117
const
PingSequencesInFlight
& Sequences()
const
;
118
119
//------------------------------------------------------------------------
121
//------------------------------------------------------------------------
122
PingSequencesInFlight
& Sequences();
123
124
//------------------------------------------------------------------------
126
//------------------------------------------------------------------------
127
uint64_t PacketsSent()
const
;
128
129
//------------------------------------------------------------------------
131
//------------------------------------------------------------------------
132
uint64_t PacketsSent(uint64_t packetsSent);
133
134
//------------------------------------------------------------------------
136
//------------------------------------------------------------------------
137
uint64_t PacketsReceived()
const
;
138
139
//------------------------------------------------------------------------
141
//------------------------------------------------------------------------
142
uint64_t PacketsReceived(uint64_t packetsReceived);
143
144
//------------------------------------------------------------------------
149
//------------------------------------------------------------------------
150
bool
Primed()
const
;
151
152
//------------------------------------------------------------------------
157
//------------------------------------------------------------------------
158
bool
Primed(
bool
primed);
159
160
protected
:
161
PingDestination
_destination;
162
PingSequencesInFlight
_sequences;
163
uint64_t _packetsSent;
164
uint64_t _packetsReceived;
165
bool
_primed;
166
};
167
168
}
// namespace Dwm
169
170
#endif // _DWMPINGDESTINATIONENTRY_HH_
Dwm::TimeValue
This class encapsulates a time value beyond the UNIX epoch, with microsecond granularity.
Definition:
DwmTimeValue.hh:72
Dwm::PingSequencesInFlight::AddSent
bool AddSent(uint16_t seq, const TimeValue &sendTime)
Adds to the cache.
Dwm::PingSequencesInFlight::Outstanding
bool Outstanding() const
Returns true if we have sent packets for which we have not yet received a response.
Dwm::PingDestinationEntry
Holds state information for a destination being pinged.
Definition:
DwmPingDestinationEntry.hh:101
Dwm::PingSequencesInFlight::ProcessReceive
bool ProcessReceive(uint16_t seq, const TimeValue &recvTime, TimeValue &rtt)
Process a received packet.
Dwm::PingDestination
Common interface for an IPv4 destination we wish to ping with ICMP or TCP.
Definition:
DwmPingDestination.hh:56
DwmTimeValue.hh
Dwm::TimeValue class definition.
Dwm::PingSequencesInFlight
Used to cache information about packets whose responses have not yet been received.
Definition:
DwmPingDestinationEntry.hh:61
DwmPingDestination.hh
Dwm::PingDestination class definition.
Dwm
Definition:
DwmBZ2IO.hh:67
Dwm::PingSequencesInFlight::PingSequencesInFlight
PingSequencesInFlight()
Constructor.
Dwm::PingSequencesInFlight::Destination
void Destination(const PingDestination &destination)
Sets the destination.
include
DwmPingDestinationEntry.hh
(dwmcrobb@me.com)