00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <iostream>
00019
00020 #include "LocalServer.h"
00021 #include "Socket.h"
00022 #include "SocketBuilder.h"
00023 #include "Message.h"
00024
00025 using namespace CODEX_Quorum;
00026
00027 LocalServer::LocalServer( int port, const SocketBuilder& socketBuilder ) :
00028 m_port( port ),
00029 m_socket( 0 ),
00030 m_builder( socketBuilder )
00031 {
00032 }
00033
00034 LocalServer::~LocalServer()
00035 {
00036 if ( 0 != m_socket )
00037 delete m_socket;
00038 }
00039
00040 void
00041 LocalServer::enable()
00042 {
00043 if ( 0 != m_socket )
00044 {
00045 cerr << "Service on port " << m_port << " is already enabled." << endl;
00046 return;
00047 }
00048 m_socket = m_builder();
00049 m_socket->setup(m_port, 0);
00050 }
00051
00052 void
00053 LocalServer::disable()
00054 {
00055 if ( 0 != m_socket )
00056 {
00057 delete m_socket;
00058 m_socket = 0;
00059 }
00060 }
00061
00062 int
00063 LocalServer::port() const
00064 {
00065 return m_port;
00066 }
00067
00068 int
00069 LocalServer::set_fd( fd_set* fd_bitmap, SocketBase::StateType s )
00070 {
00071 if ( 0 == m_socket ) return -1;
00072 return m_socket->set_fd( fd_bitmap, s );
00073 }
00074
00075 bool
00076 LocalServer::isset_fd( const fd_set* fd_bitmap, SocketBase::StateType s )
00077 {
00078 if ( 0 == m_socket ) return false;
00079 return m_socket->isset_fd( fd_bitmap, s );
00080 }
00081
00082 SocketBase*
00083 LocalServer::socket() const
00084 {
00085 return m_socket;
00086 }