ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/host/c++/socket++-1.10/smtp.h
Revision: 1.1
Committed: Mon Feb 26 15:01:39 2001 UTC (23 years, 8 months ago) by ab11
Content type: text/plain
Branch: MAIN
CVS Tags: PROJECT_COMPLETION
Log Message:
Networking class. Assumed to be bug free.

File Contents

# Content
1 // smtp.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 SMTP_H
12 #define SMTP_H
13
14 #include <protocol.h>
15
16 class smtp: public protocol {
17 public:
18 class smtpbuf : public protocol::protocolbuf {
19 ostream* o; // send all the responses to o
20
21 void send_cmd (const char* cmd, const char* s = 0,
22 const char* p = 0);
23 void get_response ();
24
25 smtpbuf (smtpbuf&);
26 smtpbuf& operator = (smtpbuf&);
27 public:
28 smtpbuf (ostream* out = 0)
29 : protocol::protocolbuf (protocol::tcp), o (out) {}
30
31 void send_buf (const char* buf, int buflen);
32
33 void helo ();
34 void quit () { send_cmd ("QUIT"); }
35 void turn () { send_cmd ("TURN"); }
36 void rset () { send_cmd ("RSET"); }
37 void noop () { send_cmd ("NOOP"); }
38 void vrfy (const char* s) { send_cmd ("VRFY ", s); }
39 void expn (const char* s) { send_cmd ("EXPN ", s); }
40
41 void data () { send_cmd ("DATA"); }
42 void data (const char* buf, int buflen);
43 void data (const char* filename); // filename = 0 => stdin
44
45 void mail (const char* reverse_path);
46 void rcpt (const char* forward_path);
47 void help (const char* s = 0);
48
49 virtual void serve_clients (int portno = -1);
50 virtual const char* rfc_name () const { return "smtp"; }
51 virtual const char* rfc_doc () const { return "rfc821"; }
52 };
53
54 protected:
55 smtp(): ios (0) {}
56
57 public:
58 smtp (ostream* out): ios (0) { ios::init (new smtpbuf (out)); }
59 ~smtp () { delete ios::rdbuf (); ios::init (0); }
60
61 int get_response (char* buf, int len);
62
63 smtpbuf* rdbuf () { return (smtpbuf*) protocol::rdbuf (); }
64 smtpbuf* operator -> () { return rdbuf (); }
65 };
66
67 extern ostream& operator << (ostream& o, smtp& s);
68
69 #endif // SMTP_H