29 : _type((size_t)HANDSHAKE_INVALID), _lifetime(0)
34 : _type((size_t)type), _lifetime(lifetime)
43 void NodeHandshake::clear()
45 for (item_set::const_iterator iter = _items.begin(); iter != _items.end(); ++iter)
56 _requests.insert(identifier);
61 return (_requests.find(identifier) != _requests.end());
76 _items.push_back(item);
81 for (item_set::const_iterator iter = _items.begin(); iter != _items.end(); ++iter)
92 for (item_set::const_iterator iter = _items.begin(); iter != _items.end(); ++iter)
113 std::stringstream ss;
117 ss <<
"HANDSHAKE_INVALID";
121 ss <<
"HANDSHAKE_REQUEST";
125 ss <<
"HANDSHAKE_RESPONSE";
129 ss <<
"HANDSHAKE_NOTIFICATION";
141 for (request_set::const_iterator iter = _requests.begin(); iter != _requests.end(); ++iter)
151 for (item_set::const_iterator iter = _items.begin(); iter != _items.end(); ++iter)
172 stream << number_of_items;
174 for (NodeHandshake::request_set::const_iterator iter = hs._requests.begin(); iter != hs._requests.end(); ++iter)
183 stream << hs._lifetime;
187 stream << number_of_items;
189 for (NodeHandshake::item_set::const_iterator iter = hs._items.begin(); iter != hs._items.end(); ++iter)
220 stream >> number_of_items;
222 for (
size_t i = 0; number_of_items > i; ++i)
226 hs._requests.insert(req);
232 stream >> hs._lifetime;
236 stream >> number_of_items;
238 for (
size_t i = 0; number_of_items > i; ++i)
250 std::stringstream &data = hs._raw_items.get(
id);
253 ibrcommon::BLOB::copy(data, stream, len.get<std::streamsize>());
260 NodeHandshake::StreamMap::StreamMap()
264 NodeHandshake::StreamMap::~StreamMap()
271 stream_map::iterator i = _map.find(identifier);
272 return (i != _map.end());
275 std::stringstream& NodeHandshake::StreamMap::get(
const dtn::data::Number &identifier)
277 stream_map::iterator i = _map.find(identifier);
281 std::pair<stream_map::iterator, bool> p =
282 _map.insert(std::pair<dtn::data::Number, std::stringstream* >(identifier,
new stringstream()));
286 return (*(*i).second);
291 stream_map::iterator i = _map.find(identifier);
296 _map.erase(identifier);
300 void NodeHandshake::StreamMap::clear()
302 for (stream_map::iterator iter = _map.begin(); iter != _map.end(); ++iter)
304 delete (*iter).second;
const std::string toString() const
virtual const dtn::data::Number & getIdentifier() const =0
virtual std::ostream & serialize(std::ostream &) const =0
BloomFilterSummaryVector()
void addItem(NodeHandshakeItem *item)
std::ostream & serialize(std::ostream &) const
std::istream & operator>>(std::istream &stream, NodeHandshake &hs)
bool hasItem(const dtn::data::Number &identifier) const
const dtn::data::Number & getLifetime() const
virtual ~BloomFilterPurgeVector()
bool hasRequest(const dtn::data::Number &identifier) const
std::istream & deserialize(std::istream &)
std::list< NodeHandshakeItem * > item_set
std::string toString() const
MESSAGE_TYPE getType() const
static const dtn::data::Number identifier
dtn::data::Length getLength() const
const dtn::data::Number & getIdentifier() const
const dtn::data::Number & getIdentifier() const
const request_set & getRequests() const
virtual dtn::data::Length getLength() const =0
const dtn::data::BundleSet & getVector() const
const item_set & getItems() const
std::ostream & operator<<(std::ostream &stream, const NodeHandshake &hs)
const dtn::data::BundleSet & getVector() const
std::ostream & serialize(std::ostream &) const
dtn::data::Length getLength() const
static const dtn::data::Number identifier
std::set< dtn::data::Number > request_set
void addRequest(const dtn::data::Number &identifier)
virtual ~BloomFilterSummaryVector()
std::istream & deserialize(std::istream &)