Bitcoin Core  0.18.99
P2P Digital Currency
Public Types | Public Member Functions | Public Attributes | Static Private Member Functions | Private Attributes | List of all members
TorControlConnection Class Reference

Low-level handling for Tor control connection. More...

Collaboration diagram for TorControlConnection:

Public Types

typedef std::function< void(TorControlConnection &)> ConnectionCB
typedef std::function< void(TorControlConnection &, const TorControlReply &)> ReplyHandlerCB

Public Member Functions

 TorControlConnection (struct event_base *base)
 Create a new TorControlConnection. More...
 ~TorControlConnection ()
bool Connect (const std::string &target, const ConnectionCB &connected, const ConnectionCB &disconnected)
 Connect to a Tor control port. More...
void Disconnect ()
 Disconnect from Tor control port. More...
bool Command (const std::string &cmd, const ReplyHandlerCB &reply_handler)
 Send a command, register a handler for the reply. More...

Public Attributes

boost::signals2::signal< void(TorControlConnection &, const TorControlReply &)> async_handler
 Response handlers for async replies. More...

Static Private Member Functions

static void readcb (struct bufferevent *bev, void *ctx)
 Libevent handlers: internal. More...
static void eventcb (struct bufferevent *bev, short what, void *ctx)

Private Attributes

std::function< void(TorControlConnection &)> connected
 Callback when ready for use. More...
std::function< void(TorControlConnection &)> disconnected
 Callback when connection lost. More...
struct event_base * base
 Libevent event base. More...
struct bufferevent * b_conn
 Connection to control socket. More...
TorControlReply message
 Message being received. More...
std::deque< ReplyHandlerCBreply_handlers
 Response handlers. More...

Detailed Description

Low-level handling for Tor control connection.

Speaks the SMTP-like protocol as defined in torspec/control-spec.txt

Definition at line 70 of file torcontrol.cpp.

Member Typedef Documentation

◆ ConnectionCB

Definition at line 73 of file torcontrol.cpp.

◆ ReplyHandlerCB

Definition at line 74 of file torcontrol.cpp.

Constructor & Destructor Documentation

◆ TorControlConnection()

TorControlConnection::TorControlConnection ( struct event_base *  base)

Create a new TorControlConnection.

Definition at line 122 of file torcontrol.cpp.

◆ ~TorControlConnection()

TorControlConnection::~TorControlConnection ( )

Definition at line 127 of file torcontrol.cpp.

Member Function Documentation

◆ Command()

bool TorControlConnection::Command ( const std::string &  cmd,
const ReplyHandlerCB reply_handler 

Send a command, register a handler for the reply.

A trailing CRLF is automatically added. Return true on success.

Definition at line 232 of file torcontrol.cpp.

◆ Connect()

bool TorControlConnection::Connect ( const std::string &  target,
const ConnectionCB connected,
const ConnectionCB disconnected 

Connect to a Tor control port.

target is address of the form host:port. connected is the handler that is called when connection is successfully established. disconnected is a handler that is called when the connection is broken. Return true on success.

Definition at line 195 of file torcontrol.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Disconnect()

void TorControlConnection::Disconnect ( )

Disconnect from Tor control port.

Definition at line 225 of file torcontrol.cpp.

Here is the caller graph for this function:

◆ eventcb()

void TorControlConnection::eventcb ( struct bufferevent *  bev,
short  what,
void *  ctx 

Definition at line 178 of file torcontrol.cpp.

◆ readcb()

void TorControlConnection::readcb ( struct bufferevent *  bev,
void *  ctx 

Libevent handlers: internal.

Definition at line 133 of file torcontrol.cpp.

Member Data Documentation

◆ async_handler

boost::signals2::signal<void(TorControlConnection &,const TorControlReply &)> TorControlConnection::async_handler

Response handlers for async replies.

Definition at line 102 of file torcontrol.cpp.

◆ b_conn

struct bufferevent* TorControlConnection::b_conn

Connection to control socket.

Definition at line 111 of file torcontrol.cpp.

◆ base

struct event_base* TorControlConnection::base

Libevent event base.

Definition at line 109 of file torcontrol.cpp.

◆ connected

std::function<void(TorControlConnection&)> TorControlConnection::connected

Callback when ready for use.

Definition at line 105 of file torcontrol.cpp.

◆ disconnected

std::function<void(TorControlConnection&)> TorControlConnection::disconnected

Callback when connection lost.

Definition at line 107 of file torcontrol.cpp.

◆ message

TorControlReply TorControlConnection::message

Message being received.

Definition at line 113 of file torcontrol.cpp.

◆ reply_handlers

std::deque<ReplyHandlerCB> TorControlConnection::reply_handlers

Response handlers.

Definition at line 115 of file torcontrol.cpp.

The documentation for this class was generated from the following file: