libktorrent  2.1.1
kclosestnodessearch.h
1 /***************************************************************************
2  * Copyright (C) 2005 by Joris Guisson *
3  * joris.guisson@gmail.com *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) any later version. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License *
16  * along with this program; if not, write to the *
17  * Free Software Foundation, Inc., *
18  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
19  ***************************************************************************/
20 #ifndef DHTKCLOSESTNODESSEARCH_H
21 #define DHTKCLOSESTNODESSEARCH_H
22 
23 #include <map>
24 #include "key.h"
25 #include "kbucket.h"
26 
27 namespace dht
28 {
29  class PackedNodeContainer;
30 
37  class KClosestNodesSearch
38  {
39  dht::Key key;
40  std::map<dht::Key, KBucketEntry> emap;
41  bt::Uint32 max_entries;
42  public:
49  KClosestNodesSearch(const dht::Key & key, bt::Uint32 max_entries);
50  virtual ~KClosestNodesSearch();
51 
52  typedef std::map<dht::Key, KBucketEntry>::iterator Itr;
53  typedef std::map<dht::Key, KBucketEntry>::const_iterator CItr;
54 
55  Itr begin() {return emap.begin();}
56  Itr end() {return emap.end();}
57 
58  CItr begin() const {return emap.begin();}
59  CItr end() const {return emap.end();}
60 
62  const dht::Key & getSearchTarget() const {return key;}
63 
65  bt::Uint32 getNumEntries() const {return emap.size();}
66 
71  void tryInsert(const KBucketEntry & e);
72 
77  void pack(PackedNodeContainer* cnt);
78  };
79 
80 }
81 
82 #endif
dht::Key
Key in the distributed hash table.
Definition: key.h:57
dht::KClosestNodesSearch::tryInsert
void tryInsert(const KBucketEntry &e)
dht::KClosestNodesSearch::pack
void pack(PackedNodeContainer *cnt)
dht::KClosestNodesSearch::KClosestNodesSearch
KClosestNodesSearch(const dht::Key &key, bt::Uint32 max_entries)
dht::KClosestNodesSearch::getSearchTarget
const dht::Key & getSearchTarget() const
Get the target key of the search3.
Definition: kclosestnodessearch.h:80
dht::KClosestNodesSearch::getNumEntries
bt::Uint32 getNumEntries() const
Get the number of entries.
Definition: kclosestnodessearch.h:83