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, 9 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

# User Rev Content
1 ab11 1.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