| Flow 1.0.2
    Flow project: Full implementation reference. | 
Convenience class that simply stores a Logger and/or Component passed into a constructor; and returns this Logger and Component via get_logger() and get_log_component() public accessors. More...
#include <log.hpp>
| Public Member Functions | |
| Log_context (Logger *logger=0) | |
| Constructs Log_context by storing the given pointer to a Logger and a null Component.  More... | |
| template<typename Component_payload > | |
| Log_context (Logger *logger, Component_payload component_payload) | |
| Constructs Log_context by storing the given pointer to a Logger and a new Component storing the specified generically typed payload (an enumvalue).  More... | |
| Log_context (const Log_context &src) | |
| Copy constructor that stores equal Logger*and Component values as the source.  More... | |
| Log_context (Log_context &&src) | |
| Move constructor that makes this equal to src, while the latter becomes as-if default-constructed.  More... | |
| Log_context & | operator= (const Log_context &src) | 
| Assignment operator that behaves similarly to the copy constructor.  More... | |
| Log_context & | operator= (Log_context &&src) | 
| Move assignment operator that behaves similarly to the move constructor.  More... | |
| void | swap (Log_context &other) | 
| Swaps Logger pointers and Component objects held by *thisandother.  More... | |
| Logger * | get_logger () const | 
| Returns the stored Logger pointer, particularly as many FLOW_LOG_*()macros expect.  More... | |
| const Component & | get_log_component () const | 
| Returns reference to the stored Component object, particularly as many FLOW_LOG_*()macros expect.  More... | |
| Private Attributes | |
| Logger * | m_logger | 
| The held Logger pointer. Making the pointer itself non- constto allowoperator=()to work.  More... | |
| Component | m_component | 
| The held Component object. Making the object non- constto allowoperator=()to work.  More... | |
Convenience class that simply stores a Logger and/or Component passed into a constructor; and returns this Logger and Component via get_logger() and get_log_component() public accessors.
It's extremely useful (almost mandatory in conventional practice) for classes that want to log, as they can simply derive from it (passing in the desired Logger* and Component payload (an enum value) into the Log_context superclass constructor), at which point the get_logger() and get_log_component() functions the FLOW_LOG_...() macros expect automatically become available without any additional code having to be written in the logging class. Here is how:
Note that the operator=() allows one to change the underlying Logger anytime after construction (e.g., existing_log_context = Log_context(&some_logger, Some_enum::S_SOME_COMPONENT);).
The code could be shorter by getting rid of non-copy constuctor in favor of direct member initialization by user; and by simply omitting the API for the auto-generated copy constructor and assignment. However, in this case, I wanted to clearly document the API; and since there are more than 1 constructors, it seemed better to explicitly declare them all instead of replacing some with implicitly required direct initialization (again to make API more clearly documented).
The only operation of interest w/r/t threads is the aforementioned implicit assignment operator. Thread safety is the same as for any struct with no locking done therein. 
| 
 | explicit | 
Constructs Log_context by storing the given pointer to a Logger and a null Component.
| logger | Pointer to store. Rationale for providing the null default: To facilitate subclass = defaultno-arg ctors. | 
| 
 | explicit | 
Constructs Log_context by storing the given pointer to a Logger and a new Component storing the specified generically typed payload (an enum value). 
For more background on Component see its doc header.
| Component_payload | See Component constructor doc header: Payloadtemplate arg specifically. | 
| logger | Pointer to store. | 
| component_payload | See Component constructor doc header: payloadarg specifically. | 
| 
 | explicitdefault | 
Copy constructor that stores equal Logger* and Component values as the source. 
This is explicit, even though an unintentional copy (e.g., in a bind sans cref or ref) would just internally involve the copying a pointer (as of this writing). The reason is that it's unlikely one wants to blithely copy these objects or objects of a sub-type; most likely (at least in scenarios seen so far, as of this writing) a cref or ref is in order instead. (I am open to counter-examples and thus removing this explicit keyword if convinced by one.)
| src | Source object. | 
| flow::log::Log_context::Log_context | ( | Log_context && | src | ) | 
Move constructor that makes this equal to src, while the latter becomes as-if default-constructed. 
| src | Source object. | 
Definition at line 204 of file log.cpp.
References operator=().
| const Component & flow::log::Log_context::get_log_component | ( | ) | const | 
Returns reference to the stored Component object, particularly as many FLOW_LOG_*() macros expect. 
Definition at line 230 of file log.cpp.
References m_component.
Referenced by flow::net_flow::Node::categorize_pkts_as_dropped_on_acks(), flow::perf::Checkpointing_timer::Checkpointing_timer(), flow::net_flow::Low_lvl_packet::create_from_raw_data_packet(), flow::net_flow::Node::handle_syn_ack_ack_to_syn_rcvd(), flow::net_flow::Node::log_accumulated_acks(), flow::net_flow::Node::log_rcv_window(), flow::net_flow::Node::log_snd_window(), flow::net_flow::Node::low_lvl_packet_sent(), flow::net_flow::Node::mark_data_packet_sent(), flow::async::Cross_thread_task_loop::schedule_from_now(), flow::async::Segregated_thread_task_loop::schedule_from_now_impl(), flow::net_flow::Low_lvl_packet::serialize_to_raw_data_and_log(), flow::net_flow::Node::snd_flying_pkts_erase_one(), flow::net_flow::Node::snd_flying_pkts_push_one(), and flow::net_flow::Drop_timer::start_timer().
| Logger * flow::log::Log_context::get_logger | ( | ) | const | 
Returns the stored Logger pointer, particularly as many FLOW_LOG_*() macros expect. 
Definition at line 225 of file log.cpp.
References m_logger.
Referenced by flow::net_flow::Node::async_low_lvl_ack_send(), flow::net_flow::Node::async_low_lvl_syn_ack_ack_send_or_close_immediately(), flow::net_flow::Node::async_no_sock_low_lvl_rst_send(), flow::net_flow::asio::Node::async_op(), flow::net_flow::Node::async_rcv_wnd_recovery(), flow::net_flow::Node::async_sock_low_lvl_rst_send(), flow::net_flow::Node::async_wait_latency_then_handle_incoming(), flow::net_flow::Node::cancel_timers(), flow::net_flow::Node::categorize_pkts_as_dropped_on_acks(), flow::net_flow::Node::close_abruptly(), flow::cfg::Config_manager< S_d_value_set >::Config_manager(), flow::net_flow::Node::connect_with_metadata(), flow::net_flow::Node::connect_worker(), flow::perf::Checkpointing_timer::Aggregator::create_aggregated_result(), flow::net_flow::Node::create_syn(), flow::net_flow::Node::create_syn_ack(), flow::net_flow::Node::event_set_close(), flow::net_flow::Node::event_set_create(), flow::net_flow::Socket_buffer::feed_buf_move(), flow::net_flow::Socket_buffer::feed_bufs_copy(), flow::net_flow::Node::handle_incoming(), flow::net_flow::Node::handle_incoming_with_simulation(), flow::net_flow::Node::handle_syn_ack_ack_to_syn_rcvd(), flow::net_flow::Node::handle_syn_to_listening_server(), flow::net_flow::Node::listen(), flow::net_flow::Node::log_accumulated_acks(), flow::net_flow::Node::log_rcv_window(), flow::net_flow::Node::log_snd_window(), flow::net_flow::Node::low_lvl_packet_sent(), flow::net_flow::Node::mark_data_packet_sent(), flow::net_flow::Node::perform_regular_infrequent_tasks(), flow::async::Cross_thread_task_loop::post(), flow::async::Segregated_thread_task_loop::post_impl(), flow::net_flow::Node::receive_wnd_recovery_data_received(), flow::async::Cross_thread_task_loop::schedule_from_now(), flow::async::Segregated_thread_task_loop::schedule_from_now_impl(), flow::async::Segregated_thread_task_loop::Segregated_thread_task_loop(), flow::net_flow::Node::send_worker(), flow::net_flow::Low_lvl_packet::serialize_to_raw_data_and_log(), flow::net_flow::Node::serv_create_forward_plus_ctor_args(), flow::net_flow::Node::setup_connection_timers(), flow::net_flow::Node::setup_drop_timer(), flow::net_flow::Node::snd_flying_pkts_erase_one(), flow::net_flow::Node::snd_flying_pkts_push_one(), flow::net_flow::Node::sock_create_forward_plus_ctor_args(), flow::net_flow::Node::sock_data_to_reassembly_q_unless_overflow(), flow::net_flow::Node::sock_info(), flow::net_flow::Node::sock_track_new_data_after_gap_rexmit_off(), flow::async::Segregated_thread_task_loop::start(), flow::async::Cross_thread_task_loop::start(), flow::net_flow::Drop_timer::start_timer(), flow::net_flow::Node::sync_sock_low_lvl_rst_send(), flow::async::Task_qing_thread::Task_qing_thread(), flow::net_flow::Node::this_thread_init_logger_setup(), and flow::net_flow::Node::worker_run().
| 
 | default | 
Assignment operator that behaves similarly to the copy constructor.
| src | Source object. | 
*this. Referenced by Log_context().
| Log_context & flow::log::Log_context::operator= | ( | Log_context && | src | ) | 
Move assignment operator that behaves similarly to the move constructor.
| src | Source object. | 
*this. Definition at line 211 of file log.cpp.
References m_component, m_logger, swap(), and flow::log::swap().
| void flow::log::Log_context::swap | ( | Log_context & | other | ) | 
Swaps Logger pointers and Component objects held by *this and other. 
No-op if this == &other.
| other | Other object. | 
Definition at line 235 of file log.cpp.
References m_component, m_logger, swap(), and flow::log::swap().
Referenced by operator=(), swap(), and flow::log::swap().
| 
 | private | 
The held Component object. Making the object non-const to allow operator=() to work. 
Definition at line 1721 of file log.hpp.
Referenced by get_log_component(), operator=(), and swap().
| 
 | private | 
The held Logger pointer. Making the pointer itself non-const to allow operator=() to work. 
Definition at line 1719 of file log.hpp.
Referenced by get_logger(), operator=(), and swap().