1 /****************************************************************************
2  Copyright (C) 2003-2006 Al Riddoch <alriddoch@zepler.org>
3 
4     This program is free software; you can redistribute it and/or modify
5     it under the terms of the GNU General Public License as published by
6     the Free Software Foundation; either version 2 of the License, or
7     (at your option) any later version.
8 
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13 
14     You should have received a copy of the GNU General Public License
15     along with this program; if not, write to the Free Software
16     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17 
18 ****************************************************************************/
19 
20 /**
21  * This software package has been extensively modified by members of the
22  * Worldforge Project. See the file ChangeLog for details.
23  *
24  * $Id$
25  *
26  */
27 #ifndef SKSTREAM_UNIX_H_
28 #define SKSTREAM_UNIX_H_
29 
30 #include <skstream/skstream.h>
31 
32 /////////////////////////////////////////////////////////////////////////////
33 // class unix_socket_stream
34 /////////////////////////////////////////////////////////////////////////////
35 
36 /// An iostream class that handles unix sockets
37 class unix_socket_stream : public stream_socket_stream {
38 private:
39   explicit unix_socket_stream(const unix_socket_stream&);
40 
41   unix_socket_stream& operator=(const unix_socket_stream& socket);
42 
43 public:
44   unix_socket_stream();
45 
46   explicit unix_socket_stream(SOCKET_TYPE socket);
47 
48   explicit unix_socket_stream(const std::string & address,
49                               bool nonblock = false);
50 
51   explicit unix_socket_stream(const std::string & address,
52                               unsigned int milliseconds);
53 
54   explicit unix_socket_stream(unix_socket_stream & other,
55                               bool nonblock = false);
56 
57   virtual ~unix_socket_stream();
58 
59   void open(const std::string& address, bool nonblock = false);
60   void open(const std::string& address, unsigned int milliseconds);
61   void open(unix_socket_stream & other, bool nonblock = false);
62 
63   bool isReady(unsigned int milliseconds = 0);
64 };
65 
66 #endif // SKSTREAM_UNIX_H_
67