2015-02-15 06:17:09 +01:00
|
|
|
/*
|
|
|
|
|
2018-04-09 09:04:33 +02:00
|
|
|
Copyright (c) 2015-2018, Arvid Norberg
|
2015-02-15 06:17:09 +01:00
|
|
|
All rights reserved.
|
|
|
|
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
|
|
modification, are permitted provided that the following conditions
|
|
|
|
are met:
|
|
|
|
|
|
|
|
* Redistributions of source code must retain the above copyright
|
|
|
|
notice, this list of conditions and the following disclaimer.
|
|
|
|
* Redistributions in binary form must reproduce the above copyright
|
|
|
|
notice, this list of conditions and the following disclaimer in
|
|
|
|
the documentation and/or other materials provided with the distribution.
|
|
|
|
* Neither the name of the author nor the names of its
|
|
|
|
contributors may be used to endorse or promote products derived
|
|
|
|
from this software without specific prior written permission.
|
|
|
|
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
|
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
|
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
|
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
|
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
|
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
|
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
|
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
|
|
POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef TORRENT_OPERATIONS_HPP_INCLUDED
|
|
|
|
#define TORRENT_OPERATIONS_HPP_INCLUDED
|
|
|
|
|
2017-06-15 00:46:11 +02:00
|
|
|
#include "libtorrent/config.hpp"
|
|
|
|
#include <cstdint>
|
|
|
|
|
2017-04-12 19:00:57 +02:00
|
|
|
namespace libtorrent {
|
|
|
|
|
2015-02-15 06:17:09 +01:00
|
|
|
// these constants are used to identify the operation that failed, causing a
|
|
|
|
// peer to disconnect
|
2017-06-15 00:46:11 +02:00
|
|
|
enum class operation_t : std::uint8_t
|
|
|
|
{
|
2017-06-18 00:18:19 +02:00
|
|
|
// the error was unexpected and it is unknown which operation caused it
|
|
|
|
unknown,
|
|
|
|
|
2017-06-15 00:46:11 +02:00
|
|
|
// this is used when the bittorrent logic
|
|
|
|
// determines to disconnect
|
2017-06-18 00:18:19 +02:00
|
|
|
bittorrent,
|
2017-06-15 00:46:11 +02:00
|
|
|
|
|
|
|
// a call to iocontrol failed
|
|
|
|
iocontrol,
|
|
|
|
|
2019-12-19 02:18:56 +01:00
|
|
|
// a call to ``getpeername()`` failed (querying the remote IP of a
|
2017-06-15 00:46:11 +02:00
|
|
|
// connection)
|
|
|
|
getpeername,
|
|
|
|
|
|
|
|
// a call to getname failed (querying the local IP of a
|
|
|
|
// connection)
|
|
|
|
getname,
|
|
|
|
|
|
|
|
// an attempt to allocate a receive buffer failed
|
|
|
|
alloc_recvbuf,
|
|
|
|
|
|
|
|
// an attempt to allocate a send buffer failed
|
|
|
|
alloc_sndbuf,
|
|
|
|
|
|
|
|
// writing to a file failed
|
|
|
|
file_write,
|
|
|
|
|
|
|
|
// reading from a file failed
|
|
|
|
file_read,
|
|
|
|
|
|
|
|
// a non-read and non-write file operation failed
|
|
|
|
file,
|
|
|
|
|
|
|
|
// a socket write operation failed
|
|
|
|
sock_write,
|
|
|
|
|
|
|
|
// a socket read operation failed
|
|
|
|
sock_read,
|
|
|
|
|
|
|
|
// a call to open(), to create a socket socket failed
|
|
|
|
sock_open,
|
|
|
|
|
|
|
|
// a call to bind() on a socket failed
|
|
|
|
sock_bind,
|
|
|
|
|
|
|
|
// an attempt to query the number of bytes available to read from a socket
|
|
|
|
// failed
|
|
|
|
available,
|
|
|
|
|
|
|
|
// a call related to bittorrent protocol encryption failed
|
|
|
|
encryption,
|
|
|
|
|
|
|
|
// an attempt to connect a socket failed
|
|
|
|
connect,
|
|
|
|
|
|
|
|
// establishing an SSL connection failed
|
|
|
|
ssl_handshake,
|
|
|
|
|
|
|
|
// a connection failed to satisfy the bind interface setting
|
|
|
|
get_interface,
|
|
|
|
|
2017-06-18 00:18:19 +02:00
|
|
|
// a call to listen() on a socket
|
|
|
|
sock_listen,
|
|
|
|
|
|
|
|
// a call to the ioctl to bind a socket to a specific network device or
|
2019-12-19 02:18:56 +01:00
|
|
|
// adapter
|
2017-06-18 00:18:19 +02:00
|
|
|
sock_bind_to_device,
|
|
|
|
|
|
|
|
// a call to accept() on a socket
|
|
|
|
sock_accept,
|
|
|
|
|
|
|
|
// convert a string into a valid network address
|
|
|
|
parse_address,
|
|
|
|
|
|
|
|
// enumeration network devices or adapters
|
|
|
|
enum_if,
|
|
|
|
|
2019-12-19 02:18:56 +01:00
|
|
|
// invoking stat() on a file
|
2017-06-18 00:18:19 +02:00
|
|
|
file_stat,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// copying a file
|
2017-06-18 00:18:19 +02:00
|
|
|
file_copy,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// allocating storage for a file
|
2017-06-18 00:18:19 +02:00
|
|
|
file_fallocate,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// creating a hard link
|
2017-06-18 00:18:19 +02:00
|
|
|
file_hard_link,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// removing a file
|
2017-06-18 00:18:19 +02:00
|
|
|
file_remove,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// renaming a file
|
2017-06-18 00:18:19 +02:00
|
|
|
file_rename,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// opening a file
|
2017-06-18 00:18:19 +02:00
|
|
|
file_open,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// creating a directory
|
2017-06-18 00:18:19 +02:00
|
|
|
mkdir,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// check fast resume data against files on disk
|
2017-06-18 00:18:19 +02:00
|
|
|
check_resume,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// an unknown exception
|
2017-06-18 00:18:19 +02:00
|
|
|
exception,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// allocate space for a piece in the cache
|
2017-06-18 00:18:19 +02:00
|
|
|
alloc_cache_piece,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// move a part-file
|
2017-06-18 00:18:19 +02:00
|
|
|
partfile_move,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// read from a part file
|
2017-06-18 00:18:19 +02:00
|
|
|
partfile_read,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// write to a part-file
|
2017-06-18 00:18:19 +02:00
|
|
|
partfile_write,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// a hostname lookup
|
2017-06-18 20:35:05 +02:00
|
|
|
hostname_lookup,
|
2019-12-19 02:18:56 +01:00
|
|
|
|
|
|
|
// create or read a symlink
|
2019-02-26 14:44:16 +01:00
|
|
|
symlink,
|
2017-06-15 00:46:11 +02:00
|
|
|
};
|
|
|
|
|
2017-06-18 00:18:19 +02:00
|
|
|
// maps an operation id (from peer_error_alert and peer_disconnected_alert)
|
|
|
|
// to its name. See peer_connection for the constants
|
|
|
|
TORRENT_EXPORT char const* operation_name(operation_t op);
|
|
|
|
|
2018-04-26 09:01:14 +02:00
|
|
|
#if TORRENT_ABI_VERSION == 1
|
2017-06-15 00:46:11 +02:00
|
|
|
enum deprecated_operation_t : std::uint8_t
|
2015-02-15 06:17:09 +01:00
|
|
|
{
|
2017-06-18 00:18:19 +02:00
|
|
|
// the error was unexpected and it is unknown which operation caused it
|
|
|
|
op_unknown TORRENT_DEPRECATED_ENUM,
|
|
|
|
|
2015-02-15 06:17:09 +01:00
|
|
|
// this is used when the bittorrent logic
|
|
|
|
// determines to disconnect
|
2017-06-18 00:18:19 +02:00
|
|
|
op_bittorrent TORRENT_DEPRECATED_ENUM ,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
2019-12-19 02:18:56 +01:00
|
|
|
// a call to ``iocontrol()`` failed
|
2017-06-15 00:46:11 +02:00
|
|
|
op_iocontrol TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
2019-12-19 02:18:56 +01:00
|
|
|
// a call to ``getpeername()`` failed (querying the remote IP of a
|
2015-02-15 06:17:09 +01:00
|
|
|
// connection)
|
2017-06-15 00:46:11 +02:00
|
|
|
op_getpeername TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
2019-12-19 02:18:56 +01:00
|
|
|
// a call to ``getsockname()`` failed (querying the local IP of a
|
2015-02-15 06:17:09 +01:00
|
|
|
// connection)
|
2017-06-15 00:46:11 +02:00
|
|
|
op_getname TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
|
|
|
// an attempt to allocate a receive buffer failed
|
2017-06-15 00:46:11 +02:00
|
|
|
op_alloc_recvbuf TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
|
|
|
// an attempt to allocate a send buffer failed
|
2017-06-15 00:46:11 +02:00
|
|
|
op_alloc_sndbuf TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
|
|
|
// writing to a file failed
|
2017-06-15 00:46:11 +02:00
|
|
|
op_file_write TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
|
|
|
// reading from a file failed
|
2017-06-15 00:46:11 +02:00
|
|
|
op_file_read TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
|
|
|
// a non-read and non-write file operation failed
|
2017-06-15 00:46:11 +02:00
|
|
|
op_file TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
|
|
|
// a socket write operation failed
|
2017-06-15 00:46:11 +02:00
|
|
|
op_sock_write TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
|
|
|
// a socket read operation failed
|
2017-06-15 00:46:11 +02:00
|
|
|
op_sock_read TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
|
|
|
// a call to open(), to create a socket socket failed
|
2017-06-15 00:46:11 +02:00
|
|
|
op_sock_open TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
|
|
|
// a call to bind() on a socket failed
|
2017-06-15 00:46:11 +02:00
|
|
|
op_sock_bind TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
|
|
|
// an attempt to query the number of bytes available to read from a socket
|
|
|
|
// failed
|
2017-06-15 00:46:11 +02:00
|
|
|
op_available TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
|
|
|
// a call related to bittorrent protocol encryption failed
|
2017-06-15 00:46:11 +02:00
|
|
|
op_encryption TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
2016-02-19 16:50:17 +01:00
|
|
|
// an attempt to connect a socket failed
|
2017-06-15 00:46:11 +02:00
|
|
|
op_connect TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
|
|
|
// establishing an SSL connection failed
|
2017-06-15 00:46:11 +02:00
|
|
|
op_ssl_handshake TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
|
|
|
|
// a connection failed to satisfy the bind interface setting
|
2017-06-15 00:46:11 +02:00
|
|
|
op_get_interface TORRENT_DEPRECATED_ENUM,
|
2015-02-15 06:17:09 +01:00
|
|
|
};
|
2017-06-15 00:46:11 +02:00
|
|
|
#endif
|
2015-02-15 06:17:09 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // TORRENT_OPERATIONS_HPP_INCLUDED
|