forked from premiere/premiere-libtorrent
extend peer_plugin to also be notified of disconnects and successful connect events
This commit is contained in:
parent
45607520e9
commit
f7ec370723
|
@ -49,6 +49,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "libtorrent/config.hpp"
|
#include "libtorrent/config.hpp"
|
||||||
#include "libtorrent/buffer.hpp"
|
#include "libtorrent/buffer.hpp"
|
||||||
#include "libtorrent/socket.hpp"
|
#include "libtorrent/socket.hpp"
|
||||||
|
#include "libtorrent/error_code.hpp"
|
||||||
|
|
||||||
namespace libtorrent
|
namespace libtorrent
|
||||||
{
|
{
|
||||||
|
@ -147,6 +148,15 @@ namespace libtorrent
|
||||||
// this is not called for web seeds
|
// this is not called for web seeds
|
||||||
virtual void add_handshake(entry&) {}
|
virtual void add_handshake(entry&) {}
|
||||||
|
|
||||||
|
// called when the peer is being disconnected.
|
||||||
|
virtual void on_disconnect(error_code const& ec) {}
|
||||||
|
|
||||||
|
// called when the peer is successfully connected. Note that
|
||||||
|
// incoming connections will have been connected by the time
|
||||||
|
// the peer plugin is attached to it, and won't have this hook
|
||||||
|
// called.
|
||||||
|
virtual void on_connected() {}
|
||||||
|
|
||||||
// throwing an exception from any of the handlers (except add_handshake)
|
// throwing an exception from any of the handlers (except add_handshake)
|
||||||
// closes the connection
|
// closes the connection
|
||||||
|
|
||||||
|
@ -168,51 +178,21 @@ namespace libtorrent
|
||||||
// it will break the plugin chain traversing and not let
|
// it will break the plugin chain traversing and not let
|
||||||
// anyone else handle the message, including the default
|
// anyone else handle the message, including the default
|
||||||
// handler.
|
// handler.
|
||||||
|
virtual bool on_choke() { return false; }
|
||||||
virtual bool on_choke()
|
virtual bool on_unchoke() { return false; }
|
||||||
{ return false; }
|
virtual bool on_interested() { return false; }
|
||||||
|
virtual bool on_not_interested() { return false; }
|
||||||
virtual bool on_unchoke()
|
virtual bool on_have(int /*index*/) { return false; }
|
||||||
{ return false; }
|
virtual bool on_dont_have(int /*index*/) { return false; }
|
||||||
|
virtual bool on_bitfield(bitfield const& /*bitfield*/) { return false; }
|
||||||
virtual bool on_interested()
|
virtual bool on_have_all() { return false; }
|
||||||
{ return false; }
|
virtual bool on_have_none() { return false; }
|
||||||
|
virtual bool on_allowed_fast(int /*index*/) { return false; }
|
||||||
virtual bool on_not_interested()
|
virtual bool on_request(peer_request const&) { return false; }
|
||||||
{ return false; }
|
virtual bool on_piece(peer_request const& /*piece*/, disk_buffer_holder& /*data*/) { return false; }
|
||||||
|
virtual bool on_cancel(peer_request const&) { return false; }
|
||||||
virtual bool on_have(int /*index*/)
|
virtual bool on_reject(peer_request const&) { return false; }
|
||||||
{ return false; }
|
virtual bool on_suggest(int /*index*/) { return false; }
|
||||||
|
|
||||||
virtual bool on_dont_have(int /*index*/)
|
|
||||||
{ return false; }
|
|
||||||
|
|
||||||
virtual bool on_bitfield(bitfield const& /*bitfield*/)
|
|
||||||
{ return false; }
|
|
||||||
|
|
||||||
virtual bool on_have_all()
|
|
||||||
{ return false; }
|
|
||||||
|
|
||||||
virtual bool on_have_none()
|
|
||||||
{ return false; }
|
|
||||||
|
|
||||||
virtual bool on_allowed_fast(int /*index*/)
|
|
||||||
{ return false; }
|
|
||||||
|
|
||||||
virtual bool on_request(peer_request const&)
|
|
||||||
{ return false; }
|
|
||||||
|
|
||||||
virtual bool on_piece(peer_request const& /*piece*/, disk_buffer_holder& /*data*/)
|
|
||||||
{ return false; }
|
|
||||||
|
|
||||||
virtual bool on_cancel(peer_request const&)
|
|
||||||
{ return false; }
|
|
||||||
|
|
||||||
virtual bool on_reject(peer_request const&)
|
|
||||||
{ return false; }
|
|
||||||
|
|
||||||
virtual bool on_suggest(int /*index*/)
|
|
||||||
{ return false; }
|
|
||||||
|
|
||||||
// called when an extended message is received. If returning true,
|
// called when an extended message is received. If returning true,
|
||||||
// the message is not processed by any other plugin and if false
|
// the message is not processed by any other plugin and if false
|
||||||
|
|
|
@ -3469,6 +3469,13 @@ namespace libtorrent
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef TORRENT_DISABLE_EXTENSIONS
|
||||||
|
for (extension_list_t::iterator i = m_extensions.begin()
|
||||||
|
, end(m_extensions.end()); i != end; ++i)
|
||||||
|
{
|
||||||
|
(*i)->on_disconnect(ec);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
// for incoming connections, we get invalid argument errors
|
// for incoming connections, we get invalid argument errors
|
||||||
// when asking for the remote endpoint and the socket already
|
// when asking for the remote endpoint and the socket already
|
||||||
// closed, which is an edge case, but possible to happen when
|
// closed, which is an edge case, but possible to happen when
|
||||||
|
@ -5576,6 +5583,14 @@ namespace libtorrent
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef TORRENT_DISABLE_EXTENSIONS
|
||||||
|
for (extension_list_t::iterator i = m_extensions.begin()
|
||||||
|
, end(m_extensions.end()); i != end; ++i)
|
||||||
|
{
|
||||||
|
(*i)->on_connected();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
on_connected();
|
on_connected();
|
||||||
setup_send();
|
setup_send();
|
||||||
setup_receive();
|
setup_receive();
|
||||||
|
|
Loading…
Reference in New Issue