Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

sstream Class Reference

#include <sstream.h>

List of all members.

Public Member Functions

 sstream ()
 sstream (char *name, char *service)
 sstream (char *name, char *service, char *from)
 ~sstream ()
const char * hostname ()
const char * servicename ()
int is_connected ()
void connectTo (char *name, char *service)
void connectTo (char *name, char *service, char *from)
void disconnect ()

Private Attributes

char _name [256]
char _service [256]
int connected


Detailed Description

Author:
Herbert Straub
Date:
2002 Change the original hierachy [(C) Thomas Gschwind] from fstream -> sstream to iosockinet -> sstream This is for g++ >= 3.0 necessary.

Bug:
Documentation is missing.

Definition at line 24 of file sstream.h.


Constructor & Destructor Documentation

sstream::sstream  )  [inline]
 

Definition at line 29 of file sstream.h.

References _service, and connected.

00029                   :iosockinet(sockbuf::sock_stream) {
00030                 _name[0] = '\0';
00031                 _service[0] = '\0';
00032                 connected = 0;
00033                 setstate(std::ios::badbit);
00034                 rdbuf()->setname ("upstream server socket");
00035         } sstream(char *name,

sstream::sstream char *  name,
char *  service
[inline]
 

Definition at line 35 of file sstream.h.

00036                                 :iosockinet(sockbuf::sock_stream) {
00037                 rdbuf()->setname ("upstream server socket");
00038                 connectTo(name, service);
00039         }

sstream::sstream char *  name,
char *  service,
char *  from
[inline]
 

Definition at line 40 of file sstream.h.

References connectTo().

00041                            :iosockinet(sockbuf::sock_stream) {
00042                 rdbuf()->setname ("upstream server socket");
00043                 connectTo(name, service, from);
00044         }

sstream::~sstream  )  [inline]
 

Definition at line 45 of file sstream.h.

References disconnect().

00045                    {
00046                 disconnect();
00047         }


Member Function Documentation

void sstream::connectTo char *  name,
char *  service,
char *  from
 

Definition at line 23 of file sstream.cc.

References _service, connected, disconnect(), is_connected(), slog, and VERB.

00024 {
00025         char buf[1024];
00026 
00027         if (is_connected())
00028                 disconnect();
00029         strcpy(_name, name);
00030         strcpy(_service, service);
00031 
00032         try {
00033                 if ((strcmp(from, "") != 0)) {
00034                         VERB(slog.
00035                              p(Logger::
00036                                Debug) <<
00037                              "sstream::connectTo using interface " << from
00038                              << "\n");
00039                         sockinetaddr bindAddr(from);
00040                         (*((iosockinet *) this))->bind(bindAddr);
00041                 }
00042         }
00043         catch(sockerr e) {
00044                 sprintf(buf, "can't bind to %s\n", from);
00045                 slog.
00046                     p(Logger::
00047                       Error) << "sstream::connectTo: can't bind to " <<
00048                     from << " sockerr code: " << e.serrno()
00049                     << " sockerr operation: " << e.operation()
00050                     << " sockerrtext: " << e.errstr() << "\n";
00051                 setstate(ios::badbit);
00052                 return;
00053         }
00054 
00055         try {
00056                 VERB(slog.
00057                      p(Logger::
00058                        Debug) << "sstream::connectTo connecting to " <<
00059                      name << " service " << service << "\n");
00060                 sockinetaddr serverAddr(name, service);
00061                 (*this)->connect(serverAddr);
00062         }
00063         catch(sockerr e) {
00064                 sprintf(buf, "cannot connect to %s (%s)\n", name, service);
00065                 slog.
00066                     p(Logger::
00067                       Error) << "sstream::connectTo can't connect to " <<
00068                     name << " " << service << " sockerr code: " << e.
00069                     serrno() << " sockerr operation: " << e.operation()
00070                     << " sockerrtext: " << e.errstr() << "\n";
00071                 setstate(ios::badbit);
00072                 return;
00073         }
00074 
00075         try {
00076                 (*this)->recvtimeout(-1);
00077                 //(*this)->sendtimeout (-1);
00078                 (*this)->keepalive(1);
00079         }
00080         catch(sockerr e) {
00081                 slog.
00082                     p(Logger::
00083                       Error) <<
00084                     "sstream::connectTo: setting keepalive error " <<
00085                     " sockerr code: " << e.
00086                     serrno() << " sockerr operation: " << e.operation()
00087                     << " sockerrtext: " << e.errstr() << "\n";
00088                 // FIXME: is this a fatal error?
00089         }
00090 
00091         connected = 1;
00092         clear();
00093 }

void sstream::connectTo char *  name,
char *  service
 

Definition at line 18 of file sstream.cc.

Referenced by RServer::connect(), and sstream().

00019 {
00020         connectTo(name, service, "");
00021 }

void sstream::disconnect  ) 
 

Definition at line 95 of file sstream.cc.

References _service, connected, Logger::p(), slog, and VERB.

Referenced by connectTo(), and ~sstream().

00096 {
00097         sockbuf *pS;
00098 
00099         VERB(slog.p(Logger::Debug) << "sstream::disconnect()\n");
00100         try {
00101                 pS = rdbuf();
00102                 pS->shutdown(sockbuf::shut_readwrite);
00103         } catch (sockerr e) {
00104                 VERB(slog.p(Logger::Debug) << "sstream::disconnect() sockerror"
00105                         << e.serrno() << " sockerr operation: "
00106                         << e.operation() << " sockerrtext: " << e.errstr()
00107                         << "\n");
00108         }
00109         _name[0] = '\0';
00110         _service[0] = '\0';
00111         connected = 0;
00112         setstate(ios::badbit);
00113 }

const char* sstream::hostname  )  [inline]
 

Definition at line 49 of file sstream.h.

00049                                {
00050                 return _name;
00051         }

int sstream::is_connected  ) 
 

Definition at line 115 of file sstream.cc.

References connected.

Referenced by connectTo().

00116 {
00117         return connected;
00118 }

const char* sstream::servicename  )  [inline]
 

Definition at line 52 of file sstream.h.

References _service.

00052                                   {
00053                 return _service;
00054         }


Member Data Documentation

char sstream::_name[256] [private]
 

Definition at line 25 of file sstream.h.

char sstream::_service[256] [private]
 

Definition at line 26 of file sstream.h.

Referenced by connectTo(), disconnect(), servicename(), and sstream().

int sstream::connected [private]
 

Definition at line 27 of file sstream.h.

Referenced by connectTo(), disconnect(), is_connected(), and sstream().


The documentation for this class was generated from the following files:
Generated on Fri Aug 20 10:58:12 2004 for NewsCache by doxygen 1.3.6-20040222