ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/host/c++/socket++-1.10/protocol.h
Revision: 1.2
Committed: Mon Jun 10 14:10:44 2002 UTC (22 years, 3 months ago) by tdb
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
State: FILE REMOVED
Error occurred while calculating annotation data.
Log Message:
Tidy up of files. These are all old things that are not only no longer used
but are also probably useless to anyone other than us. This saves checking
them out all the time, and makes the "cms/source" tree contain only current
stuff. They'll still exist in the attic's though :)

File Contents

# Content
1 // protocol.h -*- C++ -*- socket library
2 // Copyright (C) 1992,1993,1994 Gnanasekaran Swaminathan <gs4t@virginia.edu>
3 //
4 // Permission is granted to use at your own risk and distribute this software
5 // in source and binary forms provided the above copyright
6 // notice and this paragraph are preserved on all copies.
7 // This software is provided "as is" with no express or implied warranty.
8 //
9 // Version: 17Oct95 1.10
10
11 #ifndef PROTOCOL_H
12 #define PROTOCOL_H
13
14 #include <sockinet.h>
15
16 class protocol: public iosockstream {
17 public:
18 enum p_name {
19 nil = 0,
20 tcp = sockbuf::sock_stream,
21 udp = sockbuf::sock_dgram
22 };
23
24 class protocolbuf: public sockinetbuf {
25 private:
26 protocol::p_name pn;
27
28 int bind (sockAddr& sa) { return sockbuf::bind (sa); }
29 int connect (sockAddr& sa) { return sockbuf::connect (sa); }
30
31 public:
32 protocolbuf (sockbuf& si): sockinetbuf (si), pn (protocol::nil) {}
33 protocolbuf (protocol::p_name pname)
34 : sockinetbuf ((sockbuf::type) pname, 0), pn (pname) {}
35
36
37 int bind () { serve_clients (); return 0; }
38 int connect ();
39 int connect (unsigned long addr);
40 int connect (const char* host);
41 int connect (const char* host, int portno);
42
43 const char* protocol_name () const;
44
45 virtual void serve_clients (int portno = -1) = 0;
46 virtual const char* rfc_name () const = 0;
47 virtual const char* rfc_doc () const = 0;
48 };
49
50 protocol (): ios (0) {}
51 };
52
53 inline const char* protocol::protocolbuf::protocol_name () const
54 {
55 char* ret = "";
56 if (pn == protocol::tcp)
57 ret = "tcp";
58 if (pn == protocol::udp)
59 ret = "udp";
60 return ret;
61 }
62
63 inline int protocol::protocolbuf::connect ()
64 {
65 if (pn != protocol::nil)
66 return sockinetbuf::connect (localhost (), rfc_name (), protocol_name ());
67 return -1;
68 }
69
70 inline int protocol::protocolbuf::connect (unsigned long addr)
71 // addr is in host byte order
72 {
73 if (pn != protocol::nil)
74 return sockinetbuf::connect (addr, rfc_name (), protocol_name ());
75 return -1;
76 }
77
78 inline int protocol::protocolbuf::connect (const char* host)
79 {
80 if (pn != protocol::nil)
81 return sockinetbuf::connect (host, rfc_name (), protocol_name ());
82 return -1;
83 }
84
85 inline int protocol::protocolbuf::connect (const char* host, int portno)
86 {
87 if (pn != protocol::nil)
88 return sockinetbuf::connect (host, portno);
89 return -1;
90 }
91
92 #endif // PROTOCOL_H