skstream
sasproto.h
1 /**************************************************************************
2  FreeSockets - Portable C++ classes for IP(sockets) applications. (v0.3)
3  Copyright (C) 2000-2001 Rafael Guterres Jeffman
4  (C) 2002-2006 Alistair Riddoch
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program; if not, write to the Free Software
18  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 
20 **************************************************************************/
21 
29 #ifndef RGJ_FREE_SOCKETS_PROTOCOL_H_
30 #define RGJ_FREE_SOCKETS_PROTOCOL_H_
31 
32 #include <skstream/skstream.h> // FreeSockets classes are needed
33 #include <skstream/freethrd.h> // FreeThreads is needed for multithreading support
34 
35 #include <string>
36 #include <iostream>
37 
38 class basic_protocol : public basic_thread {
39 private:
40  // Copy Constructor an d assignment operator - prevents from copying a thread
41  // and a stream! - RGJ
42  basic_protocol(const basic_protocol& copy);
43  basic_protocol& operator=(const basic_protocol& copy);
44 
45 protected:
47 
48 public:
49  typedef THREAD_RESULT protocol_code;
50 
51  // Other Constructors
52  basic_protocol(SOCKET_TYPE sock) : basic_thread(), host(sock) {}
53 
54  // Destructor
55  virtual ~basic_protocol() { host.close(); }
56 
57  // Set a new host
58  void setHost(SOCKET_TYPE _sock) {
59  if(host.is_open()) host.close();
60  host.attach(_sock);
61  }
62 
63  // Protocol function - must be implemented on derived classes
64  virtual protocol_code run() { host.close(); return 0; }
65 };
66 
67 #endif
A base class for iostreams that handles stream sockets.
Definition: skstream.h:216
Definition: sasproto.h:38