Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
VsnetSocketBase Class Referenceabstract

#include <vsnet_socketbase.h>

Inheritance diagram for VsnetSocketBase:
ServerSocket VsnetHTTPSocket VsnetSocket ServerSocketTCP ServerSocketUDP VsnetTCPSocket VsnetUDPSocket

Public Member Functions

 VsnetSocketBase (int fd, const char *socktype, SocketSet &set)
 
virtual ~VsnetSocketBase ()
 
bool valid () const
 
int get_fd () const
 
int close_fd ()
 
const char * get_socktype () const
 
bool set_block ()
 
bool set_nonblock ()
 
bool get_nonblock () const
 
virtual bool isActive ()=0
 
void disconnect (const char *s)
 
virtual bool lower_selected (int datalen=-1)=0
 
virtual bool need_test_writable ()
 
virtual bool write_on_negative ()
 
virtual int get_write_fd () const
 
virtual int lower_sendbuf ()
 
virtual void lower_clean_sendbuf ()
 
virtual bool isReadyToSend (fd_set *)
 
void setSet (SocketSet *set)
 

Protected Member Functions

virtual void child_disconnect (const char *s)
 

Protected Attributes

int _fd
 
SocketSet_set
 

Detailed Description

Definition at line 38 of file vsnet_socketbase.h.

Constructor & Destructor Documentation

VsnetSocketBase::VsnetSocketBase ( int  fd,
const char *  socktype,
SocketSet set 
)

Definition at line 57 of file vsnet_socketbase.cpp.

References MAKE_VALID, SocketSet::set(), set_block(), and VsnetSocketBase().

Referenced by VsnetSocketBase().

57  :
58  _fd( fd )
59  , _set( &sets )
60  , _noblock( -1 )
61 {
63 
64  char buf[100];
65 
66  sprintf( buf, "%d", fd );
67  unsigned int len = strlen( socktype )+strlen( buf )+4;
68  _socktype = new char[len];
69 
70  sprintf( _socktype, "%s (%s)", buf, socktype );
71 
72  assert( strlen( _socktype ) == len-1 );
73  if (fd >= 0)
74  set_block();
75  sets.set( this );
76 }
VsnetSocketBase::~VsnetSocketBase ( )
virtual

Definition at line 81 of file vsnet_socketbase.cpp.

References _set, CHECK_VALID, MAKE_INVALID, and SocketSet::unset().

82 {
84  if (_set) _set->unset( this );
85  delete[] _socktype;
87 }

Member Function Documentation

virtual void VsnetSocketBase::child_disconnect ( const char *  s)
inlineprotectedvirtual

Reimplemented in VsnetTCPSocket, and ServerSocket.

Definition at line 86 of file vsnet_socketbase.h.

Referenced by disconnect().

86 {}
void VsnetSocketBase::disconnect ( const char *  s)

Definition at line 156 of file vsnet_socketbase.cpp.

References _fd, _set, CHECK_VALID, child_disconnect(), and SocketSet::unset().

157 {
159  if (_fd > 0)
160  if (_set) _set->unset( this );
161  child_disconnect( s );
162 }
bool VsnetSocketBase::get_nonblock ( ) const

Definition at line 150 of file vsnet_socketbase.cpp.

References CHECK_VALID.

Referenced by VsnetTCPSocket::lower_selected().

151 {
153  return _noblock == 1;
154 }
const char * VsnetSocketBase::get_socktype ( ) const

Definition at line 96 of file vsnet_socketbase.cpp.

97 {
98  return _socktype;
99 }
virtual int VsnetSocketBase::get_write_fd ( ) const
inlinevirtual

Reimplemented in VsnetTCPSocket.

Definition at line 70 of file vsnet_socketbase.h.

References _fd.

Referenced by VsnetHTTPSocket::isReadyToSend(), and isReadyToSend().

71  {
72  return _fd;
73  }
virtual bool VsnetSocketBase::isActive ( )
pure virtual
bool VsnetSocketBase::isReadyToSend ( fd_set *  write_set_select)
virtual

Reimplemented in VsnetHTTPSocket.

Definition at line 77 of file vsnet_socketbase.cpp.

References get_write_fd().

78 {
79  return get_write_fd() >= 0 && FD_ISSET( get_write_fd(), write_set_select );
80 }
virtual void VsnetSocketBase::lower_clean_sendbuf ( )
inlinevirtual

Called when we noticed that the primary file descriptor is closed but data remains in the send queue.

Reimplemented in VsnetTCPSocket, and VsnetHTTPSocket.

Definition at line 81 of file vsnet_socketbase.h.

81 {}
virtual bool VsnetSocketBase::lower_selected ( int  datalen = -1)
pure virtual
virtual int VsnetSocketBase::lower_sendbuf ( )
inlinevirtual

Reimplemented in VsnetTCPSocket, and VsnetHTTPSocket.

Definition at line 74 of file vsnet_socketbase.h.

75  {
76  return 0;
77  }
virtual bool VsnetSocketBase::need_test_writable ( )
inlinevirtual

Reimplemented in VsnetTCPSocket, and VsnetHTTPSocket.

Definition at line 62 of file vsnet_socketbase.h.

63  {
64  return false;
65  }
bool VsnetSocketBase::set_block ( )

Definition at line 137 of file vsnet_socketbase.cpp.

References _fd, CHECK_VALID, COUT, VsnetOSS::set_blocking(), and valid().

Referenced by VsnetSocketBase().

138 {
140  if ( !valid() ) {
141  COUT<<"Failed to set blocking socket "<<_socktype<<std::endl;
142  return false;
143  }
144  bool ret = VsnetOSS::set_blocking( _fd, true );
145  if (ret)
146  _noblock = 0;
147  return ret;
148 }
bool VsnetSocketBase::set_nonblock ( )

Definition at line 124 of file vsnet_socketbase.cpp.

References _fd, CHECK_VALID, COUT, VsnetOSS::set_blocking(), and valid().

125 {
127  if ( !valid() ) {
128  COUT<<"Failed to set blocking socket "<<_socktype<<std::endl;
129  return false;
130  }
131  bool ret = VsnetOSS::set_blocking( _fd, false );
132  if (ret)
133  _noblock = 1;
134  return ret;
135 }
void VsnetSocketBase::setSet ( SocketSet set)

Definition at line 89 of file vsnet_socketbase.cpp.

References _set, SocketSet::set(), and SocketSet::unset().

90 {
91  if (this->_set) this->_set->unset( this );
92  this->_set = set;
93  if (this->_set) this->_set->set( this );
94 }
bool VsnetSocketBase::valid ( ) const

Definition at line 101 of file vsnet_socketbase.cpp.

References _fd, and CHECK_VALID.

Referenced by set_block(), set_nonblock(), and VsnetTCPSocket::~VsnetTCPSocket().

102 {
104  return _fd >= 0;
105 }
virtual bool VsnetSocketBase::write_on_negative ( )
inlinevirtual

Reimplemented in VsnetHTTPSocket.

Definition at line 66 of file vsnet_socketbase.h.

67  {
68  return false;
69  }

Member Data Documentation


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