libassa  3.5.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Private Types | Private Member Functions | Private Attributes
ASSA::RemoteLogger Class Reference

#include <RemoteLogger.h>

Inheritance diagram for ASSA::RemoteLogger:
ASSA::Logger_Impl ASSA::ServiceHandler< ASSA::IPv4Socket > ASSA::EventHandler

List of all members.

Public Member Functions

 RemoteLogger ()
virtual int open ()
 Called by Connector upon establishing connection.
virtual int handle_close (int fd_)
 Called by Reactor when we close connection with log_close()
virtual int log_open (const char *appname_, const char *logfname_, u_long groups_, u_long maxsize_, Reactor *reactor_)
 Calling results into sending SIGN-ON message.
virtual int log_close (void)
 Close connection to the assa-logd.
virtual void log_resync (void)
 Flush output buffer.
virtual int log_msg (Group g_, size_t indent_level_, const string &func_name_, size_t expected_sz_, const char *fmt_, va_list)
virtual int log_func (Group g_, size_t indent_level_, const string &func_name_, marker_t type_)
- Public Member Functions inherited from ASSA::Logger_Impl
 Logger_Impl ()
virtual ~Logger_Impl ()
void enable_group (Group g_)
void disable_group (Group g_)
void enable_groups (u_long g_)
void disable_groups (u_long g_)
void enable_all_groups (void)
void disable_all_groups (void)
bool group_enabled (Group g_) const
void enable_timestamp (void)
void disable_timestamp (void)
bool timestamp_enabled (void) const
void set_timezone (int zone_)
void set_indent_step (u_short step_)
u_short get_indent_step (void) const
virtual int log_open (u_long groups_)
 Open StdErr Logger.
virtual int log_open (const char *logfname_, u_long groups_, u_long maxsize_)
 Open File Logger.
- Public Member Functions inherited from ASSA::ServiceHandler< ASSA::IPv4Socket >
 ServiceHandler ()
 Default constructor.
 ServiceHandler (ASSA::IPv4Socket *ps_)
 Constructor that takes PEER_STREAM as a parameter.
virtual ~ServiceHandler ()
 Destructor closes and deletes PEER_STREAM.
virtual void close (void)
 Pure virtual method defined by subclass.
 operator ASSA::IPv4Socket & ()
 Conversion operator to type PEER_STREAM &.
ASSA::IPv4Socketget_stream ()
 Return referenct to underlying PEER_STREAM.
- Public Member Functions inherited from ASSA::EventHandler
 EventHandler ()
 Constructor.
virtual ~EventHandler ()
 Virtual destructor.
virtual int handle_read (int fd)
 Read event callback.
virtual int handle_write (int fd)
 Write handler callback.
virtual int handle_except (int fd)
 Exception handler callback.
virtual int handle_timeout (TimerId tid)
 Timeout handler callback.
virtual int handle_signal (int signum_)
 Signal handler callback.
virtual void resetState (void)
 A hook for derived class to reset internal state as needed.
void set_id (const std::string &id_)
 Set EventHandler ID.
std::string get_id () const
 Retrieve EventHandler ID.

Private Types

enum  state_t { opened, closed }
enum  msg_t { SIGN_ON = 0, SIGN_OFF, LOG_MSG }

Private Member Functions

 RemoteLogger (const RemoteLogger &)
RemoteLoggeroperator= (const RemoteLogger &)

Private Attributes

state_t m_state
Reactorm_reactor
bool m_recursive_call
 If true, recursive call is in progress.

Additional Inherited Members

- Static Public Attributes inherited from ASSA::Logger_Impl
static const unsigned int LOGGER_MAXLINE = 6660
 Maximum length of the formatted message.
- Protected Member Functions inherited from ASSA::Logger_Impl
virtual u_short add_timestamp (ostream &sink_)
virtual u_short indent_func_name (ostream &sink_, const string &funcname_, size_t indent_level_, marker_t type_)
char * format_msg (size_t expected_sz_, const char *fmt_, va_list vap_, bool &release_)
 Format and put the message in the buffer.
- Protected Attributes inherited from ASSA::Logger_Impl
u_short m_indent_step
 Indentation step.
u_long m_groups
 Enabled groups.
string m_logfname
 Log file name.
bool m_tmflg
 Timestamp on/off flag.
int m_tz
 Timezone: 0-GMT, 1-Local.
- Protected Attributes inherited from ASSA::ServiceHandler< ASSA::IPv4Socket >
ASSA::IPv4Socketm_peerStream
 Concrete Socket instance.
- Protected Attributes inherited from ASSA::EventHandler
std::string m_id
- Static Protected Attributes inherited from ASSA::Logger_Impl
static char m_msgbuf [LOGGER_MAXLINE]
 Static buffer for formatted message.

Detailed Description

Definition at line 38 of file RemoteLogger.h.


Member Enumeration Documentation

Enumerator:
SIGN_ON 
SIGN_OFF 
LOG_MSG 

Definition at line 83 of file RemoteLogger.h.

Enumerator:
opened 
closed 

Definition at line 82 of file RemoteLogger.h.


Constructor & Destructor Documentation

RemoteLogger::RemoteLogger ( )

Definition at line 30 of file RemoteLogger.cpp.

:
{
// no-op
}
ASSA::RemoteLogger::RemoteLogger ( const RemoteLogger )
private

Member Function Documentation

int RemoteLogger::handle_close ( int  fd_)
virtual

Called by Reactor when we close connection with log_close()

Reimplemented from ASSA::EventHandler.

Definition at line 105 of file RemoteLogger.cpp.

References closed, ASSA::Logger_Impl::m_logfname, and m_state.

{
m_logfname.empty ();
return 0;
}
int RemoteLogger::log_close ( void  )
virtual

Close connection to the assa-logd.

Send SIGN_OFF message to the log server and stop data processing. We are managed by Logger class.

Implements ASSA::Logger_Impl.

Definition at line 89 of file RemoteLogger.cpp.

References ASSA::flush(), ASSA::ServiceHandler< ASSA::IPv4Socket >::get_stream(), m_reactor, m_recursive_call, m_state, opened, ASSA::READ_EVENT, ASSA::Reactor::removeHandler(), and SIGN_OFF.

{
if (m_state == opened) {
get_stream () << 1234567890 << SIGN_OFF << 0 << ASSA::flush;
}
return 0;
}
int RemoteLogger::log_func ( Group  g_,
size_t  indent_level_,
const string &  func_name_,
marker_t  type_ 
)
virtual

Header + body (preamble;LOG_MSG;length;msg)

Implements ASSA::Logger_Impl.

Definition at line 175 of file RemoteLogger.cpp.

References ASSA::Logger_Impl::add_timestamp(), closed, ASSA::flush(), ASSA::FUNC_ENTRY, ASSA::ServiceHandler< ASSA::IPv4Socket >::get_stream(), ASSA::Logger_Impl::group_enabled(), ASSA::Logger_Impl::indent_func_name(), LOG_MSG, m_recursive_call, m_state, and ASSA::Socket::xdr_length().

{
return 0;
}
if (m_state == closed) {
return -1;
}
if (! group_enabled (groups_)) {
return 0;
}
std::ostringstream os;
indent_func_name (os, func_name_, indent_level_, type_);
os << ((type_ == FUNC_ENTRY) ? "---v---\n" : "---^---\n");
if (get_stream ().good ()) {
get_stream () << 1234567890 << LOG_MSG << Socket::xdr_length (os.str ())
<< os.str () << ASSA::flush;
}
else {
}
return 0;
}
int RemoteLogger::log_msg ( Group  g_,
size_t  indent_level_,
const string &  func_name_,
size_t  expected_sz_,
const char *  fmt_,
va_list  msg_list_ 
)
virtual

Header + body (preamble;LOG_MSG;length;msg)

Implements ASSA::Logger_Impl.

Definition at line 125 of file RemoteLogger.cpp.

References ASSA::Logger_Impl::add_timestamp(), Assure_exit, closed, ASSA::flush(), ASSA::Logger_Impl::format_msg(), ASSA::FUNC_MSG, ASSA::ServiceHandler< ASSA::IPv4Socket >::get_stream(), ASSA::Logger_Impl::group_enabled(), ASSA::Logger_Impl::indent_func_name(), LOG_MSG, m_recursive_call, m_state, and ASSA::Socket::xdr_length().

{
return 0;
}
if (m_state == closed) {
return -1;
}
if (!group_enabled (groups_)) {
return 0;
}
std::ostringstream os;
indent_func_name (os, func_name_, indent_level_, FUNC_MSG);
bool release = false;
char* msgbuf_ptr = format_msg (expected_sz_, fmt_, msg_list_, release);
if (msgbuf_ptr == NULL) {
return -1; // failed to format
}
os << msgbuf_ptr;
if (release) {
delete [] msgbuf_ptr;
}
if (get_stream ()) {
Assure_exit (os.str ().length () != 0);
get_stream () << 1234567890 << LOG_MSG << Socket::xdr_length (os.str ())
<< os.str () << ASSA::flush;
}
else {
}
return 0;
}
int RemoteLogger::log_open ( const char *  appname_,
const char *  logfname_,
u_long  groups_,
u_long  maxsize_,
Reactor reactor_ 
)
virtual

Calling results into sending SIGN-ON message.

Put stream in a blocking mode. Otherwise, fast clients can override log server.

Send SIGN_ON message to the log server.

Header + Body

Reimplemented from ASSA::Logger_Impl.

Definition at line 46 of file RemoteLogger.cpp.

References ASSA::flush(), ASSA::ServiceHandler< ASSA::IPv4Socket >::get_stream(), ASSA::Logger_Impl::m_groups, ASSA::Logger_Impl::m_logfname, m_reactor, m_recursive_call, m_state, ASSA::Socket::nonblocking, opened, ASSA::READ_EVENT, ASSA::Reactor::registerIOHandler(), SIGN_ON, ASSA::Socket::turnOptionOff(), and ASSA::Socket::xdr_length().

{
return 0;
}
if (m_state == opened) {
return 0;
}
m_logfname = logfname_;
m_groups = groups_;
m_reactor = reactor_;
m_reactor->registerIOHandler (this, get_stream ().getHandler(),
size_t len = sizeof (maxsize_) +
Socket::xdr_length (appname_) +
Socket::xdr_length (logfname_);
get_stream () << 1234567890 << SIGN_ON << len
<< maxsize_ << appname_ << logfname_ << ASSA::flush;
return 0;
}
void RemoteLogger::log_resync ( void  )
virtual

Flush output buffer.

Reimplemented from ASSA::Logger_Impl.

Definition at line 114 of file RemoteLogger.cpp.

References ASSA::flush(), ASSA::ServiceHandler< ASSA::IPv4Socket >::get_stream(), m_recursive_call, m_state, and opened.

{
if (m_state == opened) {
}
}
int RemoteLogger::open ( void  )
virtual

Called by Connector upon establishing connection.

Implements ASSA::ServiceHandler< ASSA::IPv4Socket >.

Definition at line 39 of file RemoteLogger.cpp.

{
return 0;
}
RemoteLogger& ASSA::RemoteLogger::operator= ( const RemoteLogger )
private

Member Data Documentation

Reactor* ASSA::RemoteLogger::m_reactor
private

Definition at line 86 of file RemoteLogger.h.

Referenced by log_close(), and log_open().

bool ASSA::RemoteLogger::m_recursive_call
private

If true, recursive call is in progress.

Definition at line 89 of file RemoteLogger.h.

Referenced by log_close(), log_func(), log_msg(), log_open(), and log_resync().

state_t ASSA::RemoteLogger::m_state
private

Definition at line 85 of file RemoteLogger.h.

Referenced by handle_close(), log_close(), log_func(), log_msg(), log_open(), and log_resync().


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