reorder some structs to reduce padding
This commit is contained in:
parent
311ef5d3a4
commit
629baa3622
|
@ -784,6 +784,11 @@ namespace libtorrent
|
|||
// we might need more than one listen socket
|
||||
std::list<listen_socket_t> m_listen_sockets;
|
||||
|
||||
#if TORRENT_USE_I2P
|
||||
i2p_connection m_i2p_conn;
|
||||
boost::shared_ptr<socket_type> m_i2p_listen_socket;
|
||||
#endif
|
||||
|
||||
#ifdef TORRENT_USE_OPENSSL
|
||||
void ssl_handshake(error_code const& ec, boost::shared_ptr<socket_type> s);
|
||||
#endif
|
||||
|
@ -795,11 +800,6 @@ namespace libtorrent
|
|||
|
||||
void open_new_incoming_socks_connection();
|
||||
|
||||
#if TORRENT_USE_I2P
|
||||
i2p_connection m_i2p_conn;
|
||||
boost::shared_ptr<socket_type> m_i2p_listen_socket;
|
||||
#endif
|
||||
|
||||
void setup_listener(listen_socket_t* s, tcp::endpoint ep, int& retries
|
||||
, bool v6_only, int flags, error_code& ec);
|
||||
|
||||
|
@ -809,13 +809,6 @@ namespace libtorrent
|
|||
#ifndef TORRENT_DISABLE_DHT
|
||||
entry m_dht_state;
|
||||
#endif
|
||||
// set to true when the session object
|
||||
// is being destructed and the thread
|
||||
// should exit
|
||||
bool m_abort;
|
||||
|
||||
// is true if the session is paused
|
||||
bool m_paused;
|
||||
|
||||
// the number of unchoked peers as set by the auto-unchoker
|
||||
// this should always be >= m_max_uploads
|
||||
|
@ -867,12 +860,6 @@ namespace libtorrent
|
|||
int m_peak_up_rate;
|
||||
int m_peak_down_rate;
|
||||
|
||||
// is false by default and set to true when
|
||||
// the first incoming connection is established
|
||||
// this is used to know if the client is behind
|
||||
// NAT or not.
|
||||
bool m_incoming_connection;
|
||||
|
||||
void on_disk_queue();
|
||||
void on_tick(error_code const& e);
|
||||
|
||||
|
@ -1206,6 +1193,19 @@ namespace libtorrent
|
|||
// no longer needs to execute the auto-management.
|
||||
bool m_need_auto_manage;
|
||||
|
||||
// set to true when the session object
|
||||
// is being destructed and the thread
|
||||
// should exit
|
||||
bool m_abort;
|
||||
|
||||
// is true if the session is paused
|
||||
bool m_paused;
|
||||
// is false by default and set to true when
|
||||
// the first incoming connection is established
|
||||
// this is used to know if the client is behind
|
||||
// NAT or not.
|
||||
bool m_incoming_connection;
|
||||
|
||||
// redundant bytes per category
|
||||
size_type m_redundant_bytes[7];
|
||||
|
||||
|
|
|
@ -98,7 +98,12 @@ private:
|
|||
|
||||
struct entry
|
||||
{
|
||||
entry(): connecting(false), ticket(0), expires(max_time()), priority(0) {}
|
||||
entry()
|
||||
: expires(max_time())
|
||||
, ticket(0)
|
||||
, connecting(false)
|
||||
, priority(0)
|
||||
{}
|
||||
// called when the connection is initiated
|
||||
// this is when the timeout countdown starts
|
||||
boost::function<void(int)> on_connect;
|
||||
|
@ -109,11 +114,11 @@ private:
|
|||
// 2. on_connect, on_timeout
|
||||
// 3. on_timeout
|
||||
boost::function<void()> on_timeout;
|
||||
bool connecting;
|
||||
int ticket;
|
||||
ptime expires;
|
||||
time_duration timeout;
|
||||
int priority;
|
||||
boost::uint32_t ticket;
|
||||
bool connecting;
|
||||
boost::uint8_t priority;
|
||||
};
|
||||
|
||||
std::list<entry> m_queue;
|
||||
|
|
|
@ -89,13 +89,13 @@ namespace libtorrent
|
|||
struct disk_io_job
|
||||
{
|
||||
disk_io_job()
|
||||
: action(read)
|
||||
, buffer(0)
|
||||
: buffer(0)
|
||||
, buffer_size(0)
|
||||
, piece(0)
|
||||
, offset(0)
|
||||
, max_cache_line(0)
|
||||
, cache_min_time(0)
|
||||
, action(read)
|
||||
{}
|
||||
|
||||
enum action_t
|
||||
|
@ -121,14 +121,23 @@ namespace libtorrent
|
|||
#endif
|
||||
};
|
||||
|
||||
action_t action;
|
||||
|
||||
char* buffer;
|
||||
int buffer_size;
|
||||
|
||||
// this is called when operation completes
|
||||
boost::function<void(int, disk_io_job const&)> callback;
|
||||
|
||||
boost::intrusive_ptr<piece_manager> storage;
|
||||
// arguments used for read and write
|
||||
// piece is used as flags for move_storage
|
||||
int piece, offset;
|
||||
|
||||
boost::shared_ptr<entry> resume_data;
|
||||
|
||||
// the error code from the file operation
|
||||
error_code error;
|
||||
|
||||
// the time when this job was issued. This is used to
|
||||
// keep track of disk I/O congestion
|
||||
ptime start_time;
|
||||
|
||||
// used for move_storage and rename_file. On errors, this is set
|
||||
// to the error message
|
||||
std::string str;
|
||||
|
@ -137,6 +146,12 @@ namespace libtorrent
|
|||
// file the disk operation failed on
|
||||
std::string error_file;
|
||||
|
||||
int buffer_size;
|
||||
|
||||
// arguments used for read and write
|
||||
// piece is used as flags for move_storage
|
||||
int piece, offset;
|
||||
|
||||
// if this is > 0, it specifies the max number of blocks to read
|
||||
// ahead in the read cache for this access. This is only valid
|
||||
// for 'read' actions
|
||||
|
@ -146,17 +161,7 @@ namespace libtorrent
|
|||
// line caused by this operation stays in the cache
|
||||
int cache_min_time;
|
||||
|
||||
boost::shared_ptr<entry> resume_data;
|
||||
|
||||
// the error code from the file operation
|
||||
error_code error;
|
||||
|
||||
// this is called when operation completes
|
||||
boost::function<void(int, disk_io_job const&)> callback;
|
||||
|
||||
// the time when this job was issued. This is used to
|
||||
// keep track of disk I/O congestion
|
||||
ptime start_time;
|
||||
action_t action:5;
|
||||
};
|
||||
|
||||
// returns true if the fundamental operation
|
||||
|
|
|
@ -154,24 +154,6 @@ namespace libtorrent
|
|||
void check_invariant() const;
|
||||
#endif
|
||||
|
||||
// intended struct layout (on 32 bit architectures)
|
||||
// offset size alignment field
|
||||
// 0 8 4 prev_amount_upload, prev_amount_download
|
||||
// 8 4 4 connection
|
||||
// 12 2 2 last_optimistically_unchoked
|
||||
// 14 2 2 last_connected
|
||||
// 16 16 1 addr
|
||||
// 32 2 2 port
|
||||
// 34 2 2 upload_rate_limit
|
||||
// 36 2 2 download_rate_limit
|
||||
// 38 1 1 hashfails
|
||||
// 39 1 1 failcount, connectable, optimistically_unchoked, seed
|
||||
// 40 1 1 fast_reconnects, trust_points
|
||||
// 41 1 1 source, pe_support, is_v6_addr
|
||||
// 42 1 1 on_parole, banned, added_to_dht, supports_utp,
|
||||
// supports_holepunch, web_seed
|
||||
// 43 1 1 <padding>
|
||||
// 44
|
||||
struct TORRENT_EXTRA_EXPORT peer
|
||||
{
|
||||
peer(boost::uint16_t port, bool connectable, int src);
|
||||
|
@ -206,11 +188,6 @@ namespace libtorrent
|
|||
// will refer to a valid peer_connection
|
||||
peer_connection* connection;
|
||||
|
||||
// as computed by hashing our IP with the remote
|
||||
// IP of this peer
|
||||
// calculated lazily
|
||||
mutable boost::uint32_t peer_rank;
|
||||
|
||||
#ifndef TORRENT_DISABLE_GEO_IP
|
||||
#ifdef TORRENT_DEBUG
|
||||
// only used in debug mode to assert that
|
||||
|
@ -221,6 +198,11 @@ namespace libtorrent
|
|||
std::pair<const int, int>* inet_as;
|
||||
#endif
|
||||
|
||||
// as computed by hashing our IP with the remote
|
||||
// IP of this peer
|
||||
// calculated lazily
|
||||
mutable boost::uint32_t peer_rank;
|
||||
|
||||
// the time when this peer was optimistically unchoked
|
||||
// the last time. in seconds since session was created
|
||||
// 16 bits is enough to last for 18.2 hours
|
||||
|
|
|
@ -114,6 +114,8 @@ namespace libtorrent
|
|||
int m_5_sec_average;
|
||||
int m_30_sec_average;
|
||||
|
||||
// TODO: this is 4 bytes of padding!
|
||||
|
||||
// total counters
|
||||
size_type m_total_counter;
|
||||
};
|
||||
|
|
|
@ -98,6 +98,9 @@ namespace libtorrent
|
|||
e->timeout = timeout;
|
||||
++m_next_ticket;
|
||||
|
||||
if (m_next_ticket >= (1 << 29))
|
||||
m_next_ticket = 0;
|
||||
|
||||
if (m_num_connecting < m_half_open_limit
|
||||
|| m_half_open_limit == 0)
|
||||
m_timer.get_io_service().post(boost::bind(
|
||||
|
|
|
@ -637,8 +637,6 @@ namespace aux {
|
|||
#if TORRENT_USE_I2P
|
||||
, m_i2p_conn(m_io_service)
|
||||
#endif
|
||||
, m_abort(false)
|
||||
, m_paused(false)
|
||||
, m_allowed_upload_slots(8)
|
||||
, m_num_unchoked(0)
|
||||
, m_unchoke_time_scaler(0)
|
||||
|
@ -650,7 +648,6 @@ namespace aux {
|
|||
, m_cache_rotation_timer(0)
|
||||
, m_peak_up_rate(0)
|
||||
, m_peak_down_rate(0)
|
||||
, m_incoming_connection(false)
|
||||
, m_created(time_now_hires())
|
||||
, m_last_tick(m_created)
|
||||
, m_last_second_tick(m_created - milliseconds(900))
|
||||
|
@ -689,6 +686,9 @@ namespace aux {
|
|||
, m_total_redundant_bytes(0)
|
||||
, m_pending_auto_manage(false)
|
||||
, m_need_auto_manage(false)
|
||||
, m_abort(false)
|
||||
, m_paused(false)
|
||||
, m_incoming_connection(false)
|
||||
#if (defined TORRENT_DEBUG || TORRENT_RELEASE_ASSERTS) && defined BOOST_HAS_PTHREADS
|
||||
, m_network_thread(0)
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue