kget
announcetask.h
Go to the documentation of this file.00001 /*************************************************************************** 00002 * Copyright (C) 2005 by Joris Guisson * 00003 * joris.guisson@gmail.com * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU General Public License as published by * 00007 * the Free Software Foundation; either version 2 of the License, or * 00008 * (at your option) any later version. * 00009 * * 00010 * This program is distributed in the hope that it will be useful, * 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00013 * GNU General Public License for more details. * 00014 * * 00015 * You should have received a copy of the GNU General Public License * 00016 * along with this program; if not, write to the * 00017 * Free Software Foundation, Inc., * 00018 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * 00019 ***************************************************************************/ 00020 #ifndef DHTANNOUNCETASK_H 00021 #define DHTANNOUNCETASK_H 00022 00023 #include "task.h" 00024 #include "kbucket.h" 00025 00026 namespace dht 00027 { 00028 class Database; 00029 00030 class KBucketEntryAndToken : public KBucketEntry 00031 { 00032 Key token; 00033 public: 00034 KBucketEntryAndToken() {} 00035 KBucketEntryAndToken(const KBucketEntry & e,const Key & token) 00036 : KBucketEntry(e),token(token) {} 00037 virtual ~KBucketEntryAndToken() {} 00038 00039 const Key & getToken() const {return token;} 00040 }; 00041 00045 class AnnounceTask : public Task 00046 { 00047 public: 00048 AnnounceTask(Database* db,RPCServer* rpc, Node* node,const dht::Key & info_hash,bt::Uint16 port); 00049 virtual ~AnnounceTask(); 00050 00051 virtual void callFinished(RPCCall* c, MsgBase* rsp); 00052 virtual void callTimeout(RPCCall* c); 00053 virtual void update(); 00054 00061 bool takeItem(DBItem & item); 00062 private: 00063 dht::Key info_hash; 00064 bt::Uint16 port; 00065 QList<KBucketEntryAndToken> answered; // nodes which have answered with values 00066 QList<KBucketEntry> answered_visited; // nodes which have answered with values which have been visited 00067 Database* db; 00068 DBItemList returned_items; 00069 00070 }; 00071 00072 } 00073 00074 #endif
KDE 4.2 API Reference