mailfilter  0.8.3
socket.hh
Go to the documentation of this file.
1 // socket.hh - source file for the mailfilter program
2 // Copyright (c) 2003 - 2009 Andreas Bauer <baueran@gmail.com>
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,
17 // USA.
18 
19 #ifndef SOCKET_HH
20 #define SOCKET_HH
21 
22 #include <string>
23 #include <csignal>
24 
25 #if USE_SSL
26 extern "C"
27 {
28 #include <openssl/ssl.h>
29 #include <openssl/rand.h>
30 }
31 #endif
32 
33 #include "connection.hh"
34 
35 using namespace std;
36 
37 #ifndef MAX_BYTES
38 #define MAX_BYTES 512
39 #endif
40 
41 class Socket : public Connection
42 {
43 private:
44  int sd; // Socket descriptor.
45  int time_out; // Time out.
46  static void connect_alarm (int); // Alarm handler.
47  string* read_buffer; // Server replies after read ().
48  bool ssl_used; // True if SSL encryption is used.
49  bool use_ssl (void) const;
50  void set_ssl (bool);
51 
52 public:
53  Socket (void);
54  void clear (void);
55  int c_open (const char* host,
56  int port,
57  int time_out,
58  int protocol);
59  int c_close (void) const;
60  int c_write (const char* command);
61  int c_read (bool = false);
62  const string* c_reply (void) const;
63 };
64 
65 #endif
Definition: socket.hh:41
Definition: connection.hh:29