libzmq  master
ZeroMQ C++ Core Engine (LIBZMQ)
zmq::session_base_t Class Reference

#include <session_base.hpp>

Inheritance diagram for zmq::session_base_t:
Collaboration diagram for zmq::session_base_t:

Public Member Functions

void attach_pipe (zmq::pipe_t *pipe_)
 
void engine_error (zmq::stream_engine_t::error_reason_t reason)
 
void flush ()
 
socket_base_tget_socket ()
 
void hiccuped (zmq::pipe_t *pipe_)
 
void pipe_terminated (zmq::pipe_t *pipe_)
 
virtual int pull_msg (msg_t *msg_)
 
virtual int push_msg (msg_t *msg_)
 
void read_activated (zmq::pipe_t *pipe_)
 
int read_zap_msg (msg_t *msg_)
 
virtual void reset ()
 
void write_activated (zmq::pipe_t *pipe_)
 
int write_zap_msg (msg_t *msg_)
 
int zap_connect ()
 
bool zap_enabled ()
 
- Public Member Functions inherited from zmq::own_t
 own_t (zmq::ctx_t *parent_, uint32_t tid_)
 
 own_t (zmq::io_thread_t *io_thread_, const options_t &options_)
 
void inc_seqnum ()
 
void register_term_acks (int count_)
 
void unregister_term_ack ()
 
- Public Member Functions inherited from zmq::object_t
 object_t (zmq::ctx_t *ctx_, uint32_t tid_)
 
 object_t (object_t *parent_)
 
virtual ~object_t ()
 
ctx_tget_ctx ()
 
uint32_t get_tid ()
 
void process_command (zmq::command_t &cmd_)
 
void send_bind (zmq::own_t *destination_, zmq::pipe_t *pipe_, bool inc_seqnum_=true)
 
void send_inproc_connected (zmq::socket_base_t *socket_)
 
void set_tid (uint32_t id)
 
- Public Member Functions inherited from zmq::io_object_t
 io_object_t (zmq::io_thread_t *io_thread_=NULL)
 
 ~io_object_t ()
 
void plug (zmq::io_thread_t *io_thread_)
 
void unplug ()
 
- Public Member Functions inherited from zmq::i_poll_events
virtual ~i_poll_events ()
 
- Public Member Functions inherited from zmq::i_pipe_events
virtual ~i_pipe_events ()
 

Static Public Member Functions

static session_base_tcreate (zmq::io_thread_t *io_thread_, bool active_, zmq::socket_base_t *socket_, const options_t &options_, address_t *addr_)
 

Protected Member Functions

 session_base_t (zmq::io_thread_t *io_thread_, bool active_, zmq::socket_base_t *socket_, const options_t &options_, address_t *addr_)
 
virtual ~session_base_t ()
 
- Protected Member Functions inherited from zmq::own_t
virtual ~own_t ()
 
bool is_terminating ()
 
void launch_child (own_t *object_)
 
virtual void process_destroy ()
 
void term_child (own_t *object_)
 
void terminate ()
 
- Protected Member Functions inherited from zmq::object_t
zmq::io_thread_tchoose_io_thread (uint64_t affinity_)
 
void connect_pending (const char *addr_, zmq::socket_base_t *bind_socket_)
 
void destroy_socket (zmq::socket_base_t *socket_)
 
zmq::endpoint_t find_endpoint (const char *addr_)
 
void log (const char *format_,...)
 
void pend_connection (const std::string &addr_, const endpoint_t &endpoint, pipe_t **pipes_)
 
virtual void process_activate_read ()
 
virtual void process_activate_write (uint64_t msgs_read_)
 
virtual void process_bind (zmq::pipe_t *pipe_)
 
virtual void process_hiccup (void *pipe_)
 
virtual void process_pipe_term ()
 
virtual void process_pipe_term_ack ()
 
virtual void process_reap (zmq::socket_base_t *socket_)
 
virtual void process_reaped ()
 
virtual void process_stop ()
 
int register_endpoint (const char *addr_, const zmq::endpoint_t &endpoint_)
 
void send_activate_read (zmq::pipe_t *destination_)
 
void send_activate_write (zmq::pipe_t *destination_, uint64_t msgs_read_)
 
void send_attach (zmq::session_base_t *destination_, zmq::i_engine *engine_, bool inc_seqnum_=true)
 
void send_done ()
 
void send_hiccup (zmq::pipe_t *destination_, void *pipe_)
 
void send_own (zmq::own_t *destination_, zmq::own_t *object_)
 
void send_pipe_term (zmq::pipe_t *destination_)
 
void send_pipe_term_ack (zmq::pipe_t *destination_)
 
void send_plug (zmq::own_t *destination_, bool inc_seqnum_=true)
 
void send_reap (zmq::socket_base_t *socket_)
 
void send_reaped ()
 
void send_stop ()
 
void send_term (zmq::own_t *destination_, int linger_)
 
void send_term_ack (zmq::own_t *destination_)
 
void send_term_req (zmq::own_t *destination_, zmq::own_t *object_)
 
int unregister_endpoint (const std::string &addr_, socket_base_t *socket_)
 
void unregister_endpoints (zmq::socket_base_t *socket_)
 
- Protected Member Functions inherited from zmq::io_object_t
handle_t add_fd (fd_t fd_)
 
void add_timer (int timout_, int id_)
 
void cancel_timer (int id_)
 
void in_event ()
 
void out_event ()
 
void reset_pollin (handle_t handle_)
 
void reset_pollout (handle_t handle_)
 
void rm_fd (handle_t handle_)
 
void set_pollin (handle_t handle_)
 
void set_pollout (handle_t handle_)
 

Private Types

enum  { linger_timer_id = 0x20 }
 

Private Member Functions

 session_base_t (const session_base_t &)
 
void clean_pipes ()
 
const session_base_toperator= (const session_base_t &)
 
void process_attach (zmq::i_engine *engine_)
 
void process_plug ()
 
void process_term (int linger_)
 
void reconnect ()
 
void start_connecting (bool wait_)
 
void timer_event (int id_)
 

Private Attributes

const bool active
 
address_taddr
 
zmq::i_engineengine
 
bool has_linger_timer
 
bool incomplete_in
 
zmq::io_thread_tio_thread
 
bool pending
 
zmq::pipe_tpipe
 
zmq::socket_base_tsocket
 
std::set< pipe_t * > terminating_pipes
 
zmq::pipe_tzap_pipe
 

Additional Inherited Members

- Protected Types inherited from zmq::io_object_t
typedef poller_t::handle_t handle_t
 
- Protected Attributes inherited from zmq::own_t
options_t options
 

Detailed Description

Definition at line 51 of file session_base.hpp.

Member Enumeration Documentation

anonymous enum
private
Enumerator
linger_timer_id 

Definition at line 158 of file session_base.hpp.

Constructor & Destructor Documentation

zmq::session_base_t::session_base_t ( zmq::io_thread_t io_thread_,
bool  active_,
zmq::socket_base_t socket_,
const options_t options_,
address_t addr_ 
)
protected

Definition at line 97 of file session_base.cpp.

zmq::session_base_t::~session_base_t ( )
protectedvirtual

Definition at line 115 of file session_base.cpp.

References addr, zmq::io_object_t::cancel_timer(), engine, has_linger_timer, LIBZMQ_DELETE, linger_timer_id, pipe, zmq::i_engine::terminate(), zap_pipe, and zmq_assert.

Here is the call graph for this function:

zmq::session_base_t::session_base_t ( const session_base_t )
private

Member Function Documentation

void zmq::session_base_t::attach_pipe ( zmq::pipe_t pipe_)

Definition at line 133 of file session_base.cpp.

References zmq::own_t::is_terminating(), pipe, zmq::pipe_t::set_event_sink(), and zmq_assert.

Referenced by zmq::socket_base_t::connect().

Here is the call graph for this function:

Here is the caller graph for this function:

void zmq::session_base_t::clean_pipes ( )
private

Definition at line 211 of file session_base.cpp.

References zmq::msg_t::close(), errno_assert, zmq::pipe_t::flush(), incomplete_in, zmq::msg_t::init(), pipe, pull_msg(), zmq::pipe_t::rollback(), and zmq_assert.

Referenced by engine_error().

Here is the call graph for this function:

Here is the caller graph for this function:

zmq::session_base_t * zmq::session_base_t::create ( zmq::io_thread_t io_thread_,
bool  active_,
zmq::socket_base_t socket_,
const options_t options_,
address_t addr_ 
)
static
void zmq::session_base_t::engine_error ( zmq::stream_engine_t::error_reason_t  reason)
void zmq::session_base_t::flush ( )

Definition at line 205 of file session_base.cpp.

References zmq::pipe_t::flush(), and pipe.

Referenced by zmq::stream_engine_t::error(), zmq::udp_engine_t::in_event(), zmq::stream_engine_t::in_event(), zmq::stream_engine_t::mechanism_ready(), zmq::stream_engine_t::plug(), and zmq::stream_engine_t::restart_input().

Here is the call graph for this function:

Here is the caller graph for this function:

zmq::socket_base_t * zmq::session_base_t::get_socket ( )

Definition at line 309 of file session_base.cpp.

References socket.

Referenced by zmq::socks_connecter_t::socks_connecter_t(), and zmq::tcp_connecter_t::tcp_connecter_t().

Here is the caller graph for this function:

void zmq::session_base_t::hiccuped ( zmq::pipe_t pipe_)
virtual

Implements zmq::i_pipe_events.

Definition at line 302 of file session_base.cpp.

References zmq_assert.

const session_base_t& zmq::session_base_t::operator= ( const session_base_t )
private
void zmq::session_base_t::process_plug ( )
privatevirtual

Reimplemented from zmq::object_t.

Definition at line 314 of file session_base.cpp.

References active, and start_connecting().

Here is the call graph for this function:

void zmq::session_base_t::process_term ( int  linger_)
privatevirtual
int zmq::session_base_t::pull_msg ( msg_t msg_)
virtual
void zmq::session_base_t::read_activated ( zmq::pipe_t pipe_)
virtual
int zmq::session_base_t::read_zap_msg ( msg_t msg_)

Definition at line 168 of file session_base.cpp.

References ENOTCONN, zmq::pipe_t::read(), and zap_pipe.

Referenced by zmq::null_mechanism_t::receive_and_process_zap_reply(), and zmq::plain_server_t::receive_and_process_zap_reply().

Here is the call graph for this function:

Here is the caller graph for this function:

void zmq::session_base_t::reconnect ( )
private

Definition at line 499 of file session_base.cpp.

References addr, zmq::pipe_t::hiccup(), zmq::options_t::immediate, zmq::own_t::options, pipe, zmq::address_t::protocol, zmq::options_t::reconnect_ivl, reset(), start_connecting(), zmq::pipe_t::terminate(), terminating_pipes, zmq::options_t::type, ZMQ_SUB, and ZMQ_XSUB.

Referenced by engine_error().

Here is the call graph for this function:

Here is the caller graph for this function:

void zmq::session_base_t::reset ( )
virtual

Reimplemented in zmq::dish_session_t, zmq::req_session_t, and zmq::radio_session_t.

Definition at line 201 of file session_base.cpp.

Referenced by reconnect(), zmq::radio_session_t::reset(), zmq::req_session_t::reset(), and zmq::dish_session_t::reset().

Here is the caller graph for this function:

void zmq::session_base_t::timer_event ( int  id_)
privatevirtual

Reimplemented from zmq::io_object_t.

Definition at line 487 of file session_base.cpp.

References has_linger_timer, linger_timer_id, pipe, zmq::pipe_t::terminate(), and zmq_assert.

Here is the call graph for this function:

void zmq::session_base_t::write_activated ( zmq::pipe_t pipe_)
virtual

Implements zmq::i_pipe_events.

Definition at line 290 of file session_base.cpp.

References engine, pipe, zmq::i_engine::restart_input(), terminating_pipes, and zmq_assert.

Here is the call graph for this function:

int zmq::session_base_t::write_zap_msg ( msg_t msg_)

Definition at line 183 of file session_base.cpp.

References ENOTCONN, errno_assert, zmq::msg_t::flags, zmq::pipe_t::flush(), zmq::msg_t::init(), zmq::msg_t::more, zmq::pipe_t::write(), zap_pipe, and zmq_assert.

Referenced by zmq::null_mechanism_t::send_zap_request(), and zmq::plain_server_t::send_zap_request().

Here is the call graph for this function:

Here is the caller graph for this function:

bool zmq::session_base_t::zap_enabled ( )

Definition at line 366 of file session_base.cpp.

References zmq::options_t::mechanism, zmq::own_t::options, zmq::options_t::zap_domain, and ZMQ_NULL.

Referenced by zmq::stream_engine_t::handshake().

Here is the caller graph for this function:

Member Data Documentation

const bool zmq::session_base_t::active
private

Definition at line 128 of file session_base.hpp.

Referenced by engine_error(), process_plug(), and start_connecting().

address_t* zmq::session_base_t::addr
private

Definition at line 164 of file session_base.hpp.

Referenced by reconnect(), start_connecting(), and ~session_base_t().

bool zmq::session_base_t::has_linger_timer
private

Definition at line 161 of file session_base.hpp.

Referenced by pipe_terminated(), process_term(), timer_event(), and ~session_base_t().

bool zmq::session_base_t::incomplete_in
private

Definition at line 141 of file session_base.hpp.

Referenced by clean_pipes(), and pull_msg().

zmq::io_thread_t* zmq::session_base_t::io_thread
private

Definition at line 155 of file session_base.hpp.

Referenced by process_attach(), and start_connecting().

bool zmq::session_base_t::pending
private

Definition at line 145 of file session_base.hpp.

Referenced by pipe_terminated(), and process_term().

zmq::socket_base_t* zmq::session_base_t::socket
private

Definition at line 151 of file session_base.hpp.

Referenced by get_socket(), and process_attach().

std::set<pipe_t *> zmq::session_base_t::terminating_pipes
private
zmq::pipe_t* zmq::session_base_t::zap_pipe
private