xref: /haiku/src/add-ons/print/transports/shared/Socket.h (revision 6b376d605557c600cc5443bf376c23dd2a7861cb)
1 // Sun, 18 Jun 2000
2 // Y.Takagi
3 
4 #ifndef __Socket_H
5 #define __Socket_H
6 
7 #include <iostream>
8 
9 #include <string>
10 
11 #if (!__MWERKS__)
12 using namespace std;
13 #else
14 #define std
15 #endif
16 
17 class Socket {
18 public:
19 	Socket(const char *host, int port);
20 	Socket(const char *host, int port, int localPort);
21 	~Socket();
22 
23 	bool operator !() const;
24 	bool good() const;
25 	bool fail() const;
26 
27 	void close();
28 	int read(char *buffer, int size, int flags = 0);
29 	int write(const char *buffer, int size, int flags = 0);
30 
31 	istream &getInputStream();
32 	ostream &getOutputStream();
33 
34 	int getPort() const;
35 	const char *getLastError() const;
36 
37 private:
38 	Socket(const Socket &);
39 	Socket &operator = (const Socket &);
40 	void open();
41 
42 	string  __host;
43 	int     __port;
44 	int     __localPort;
45 	int     __sock;
46 	istream *__is;
47 	ostream *__os;
48 	bool    __error;
49 	char    __error_msg[256];
50 };
51 
getPort()52 inline int Socket::getPort() const
53 {
54 	return __port;
55 }
56 
getLastError()57 inline const char *Socket::getLastError() const
58 {
59 	return __error_msg;
60 }
61 
62 #endif // __Socket_H
63