//==========================================================================
/**
* @file Server.h
*
* @author Baranidharan K.
*/
//==========================================================================
#ifndef _BPING_SERVER_H_
#define _BPING_SERVER_H_
#include<iostream>
#include "ace/Reactor.h"
#include "ace/TP_Reactor.h"
#include "ace/Task_T.h"
#include "ipmi_task.h"
#include "parser_task.h"
#include "ace/Trace.h"
#include "ace/Log_Msg.h"
#define IGNORE_STATIC_SERVICES 1
#define IGNORE_DEFAULT_SVC_CONF_FILE 1
using namespace std;
class BPing_Server
{
private :
Parser_Task *pa_ta;
Ipmi_Task *ipmi_ta;
/**
* BPing_Server() constructor initilizes the all task pointers
*/
BPing_Server(void);
~BPing_Server(void);
static BPing_Server *server;
public :
static BPing_Server* instance(void);
/// start_server() fuction calling the all task open functions
void start_server(void);
Ipmi_Task *get_ipmi_task(void);
};
#endif
#include "Server.h"
#include "ace/Service_Config.h"
BPing_Server* BPing_Server::server = 0;
Ipmi_Task * BPing_Server::get_ipmi_task(void)
{
return ipmi_ta;
}
BPing_Server::BPing_Server(void)
{
pa_ta = Parser_Task::instance();
ipmi_ta = new Ipmi_Task();
}
BPing_Server::~BPing_Server(void) {}
void BPing_Server::start_server(void)
{
ipmi_ta->open();
ACE_Reactor *reactor_ = new ACE_Reactor();
pa_ta->start(reactor_);
ACE_Thread_Manager::instance ()->wait ();
}
BPing_Server* BPing_Server::instance(void)
{
if (BPing_Server::server == 0)
{
ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon,
*ACE_Static_Object_Lock::instance (), 0));
if (BPing_Server::server == 0)
ACE_NEW_RETURN (BPing_Server::server, BPing_Server, 0);
}
return BPing_Server::server;
}
int handle_signals ( int signum )
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) received signal %S\n"),
signum));
switch ( signum )
{
case SIGPIPE:
ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%D|%t) handled SIGPIPE\n")));
return 0;
}
return 0;
}
static ACE_THR_FUNC_RETURN asynchronous_signal_handler (void *)
{
ACE_Sig_Set sigset;
sigset.sig_add ( SIGPIPE );
ACE_Sig_Action sa (sigset,(ACE_SignalHandler) handle_signals);
ACE_UNUSED_ARG (sa);
return 0;
}
int main(int argc, char **argv)
{
//ACE_Select_Reactor sr;
ACE_TP_Reactor sr;
ACE_Reactor new_reactor(&sr);
ACE_Reactor::instance(&new_reactor);
if(ACE_Service_Config :: open (1,
argv,
ACE_DEFAULT_LOGGER_KEY,1,0) < 0 )
ACE_ERROR_RETURN ((LM_ERROR,
ACE_TEXT ("(%D) %p Service Config open error in Bping")),
-1);
asynchronous_signal_handler (0);
BPing_Server::instance()->start_server();
return 0;
}
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Openipmi-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openipmi-developer