1 /*
2 ** Copyright 2003, Double Precision Inc.
3 **
4 ** See COPYING for distribution information.
5 */
6 #ifndef libmail_nntplogin_H
7 #define libmail_nntplogin_H
8 
9 #include "libmail_config.h"
10 
11 #include "nntp.H"
12 #include "logininfo.H"
13 
14 LIBMAIL_START
15 
16 //
17 // Superclass of all NNTP tasks that must have a logged in connection
18 //
19 
20 class mail::nntp::LoggedInTask : public mail::nntp::Task,
21 	    private loginInfo::callbackTarget {
22 
23 	void (mail::nntp::LoggedInTask::*responseFunc)(const char *);
24 
25 	bool loggingIn;
26 
27 public:
28 	LoggedInTask(callback *callbackArg, nntp &myserverArg);
29 	~LoggedInTask();
30 
31 	void serverResponse(const char *message);
32 	void installedTask();
33 
34 	virtual void loggedIn()=0;
35 	virtual void processLine(const char *message)=0;
36 
37 	void fail(std::string);
38 private:
39 	void doFwdResponse(const char *);
40 
41 	void doGreeting(const char *);
42 
43 	void authinfoUser();
44 	void authinfoPwd();
45 
46 	void authCompleted();
47 
48 	void doAuthUser(const char *);
49 	void doAuthPwd(const char *);
50 	void doModeReader1(const char *);
51 	void doModeReader2(const char *);
52 
53 	void gotPassword(std::string);
54 
55 	void loginInfoCallback(std::string);
56 	void loginInfoCallbackCancel();
57 
58 
59 	void doTryAgain(const char *);
60 
61 	void loginCompleted();
62 	void loginCompleted2();
63 };
64 
65 LIBMAIL_END
66 #endif
67