Dependents: SimpleLCDClock readCard2Twitter_http AnalogClock_StepperMotor_NTP ServoCamV1
services/email/smtp/smtpClient.h@0:a2dd0ba6cd2d, 2010-05-24 (annotated)
- Committer:
- donatien
- Date:
- Mon May 24 10:24:38 2010 +0000
- Revision:
- 0:a2dd0ba6cd2d
- Child:
- 1:7043cc0db03c
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
donatien | 0:a2dd0ba6cd2d | 1 | #ifndef SMTP_CLIENT_H |
donatien | 0:a2dd0ba6cd2d | 2 | #define SMTP_CLIENT_H |
donatien | 0:a2dd0ba6cd2d | 3 | |
donatien | 0:a2dd0ba6cd2d | 4 | class EmailMessage; |
donatien | 0:a2dd0ba6cd2d | 5 | |
donatien | 0:a2dd0ba6cd2d | 6 | #include "if/net/net.h" |
donatien | 0:a2dd0ba6cd2d | 7 | #include "api/TcpSocket.h" |
donatien | 0:a2dd0ba6cd2d | 8 | #include "../emailMessage.h" |
donatien | 0:a2dd0ba6cd2d | 9 | |
donatien | 0:a2dd0ba6cd2d | 10 | #include "mbed.h" |
donatien | 0:a2dd0ba6cd2d | 11 | |
donatien | 0:a2dd0ba6cd2d | 12 | #define SMTP_REQUEST_TIMEOUT 5000 |
donatien | 0:a2dd0ba6cd2d | 13 | |
donatien | 0:a2dd0ba6cd2d | 14 | enum SmtpResult |
donatien | 0:a2dd0ba6cd2d | 15 | { |
donatien | 0:a2dd0ba6cd2d | 16 | SMTP_OK, |
donatien | 0:a2dd0ba6cd2d | 17 | SMTP_PRTCL, //Protocol error |
donatien | 0:a2dd0ba6cd2d | 18 | SMTP_TIMEOUT, //Connection timeout |
donatien | 0:a2dd0ba6cd2d | 19 | SMTP_DISC //Disconnected |
donatien | 0:a2dd0ba6cd2d | 20 | }; |
donatien | 0:a2dd0ba6cd2d | 21 | |
donatien | 0:a2dd0ba6cd2d | 22 | class SmtpClient /*: public NetService*/ |
donatien | 0:a2dd0ba6cd2d | 23 | { |
donatien | 0:a2dd0ba6cd2d | 24 | public: |
donatien | 0:a2dd0ba6cd2d | 25 | SmtpClient(); |
donatien | 0:a2dd0ba6cd2d | 26 | virtual ~SmtpClient(); |
donatien | 0:a2dd0ba6cd2d | 27 | |
donatien | 0:a2dd0ba6cd2d | 28 | void setHost(const Host& host); |
donatien | 0:a2dd0ba6cd2d | 29 | void send(EmailMessage* pMessage); |
donatien | 0:a2dd0ba6cd2d | 30 | |
donatien | 0:a2dd0ba6cd2d | 31 | class CDummy; |
donatien | 0:a2dd0ba6cd2d | 32 | template<class T> |
donatien | 0:a2dd0ba6cd2d | 33 | //Linker bug : Must be defined here :( |
donatien | 0:a2dd0ba6cd2d | 34 | void setOnResult( T* pItem, void (T::*pMethod)(SmtpResult) ) |
donatien | 0:a2dd0ba6cd2d | 35 | { |
donatien | 0:a2dd0ba6cd2d | 36 | m_pCbItem = (CDummy*) pItem; |
donatien | 0:a2dd0ba6cd2d | 37 | m_pCbMeth = (void (CDummy::*)(SmtpResult)) pMethod; |
donatien | 0:a2dd0ba6cd2d | 38 | } |
donatien | 0:a2dd0ba6cd2d | 39 | |
donatien | 0:a2dd0ba6cd2d | 40 | void init(); //Create and setup socket if needed |
donatien | 0:a2dd0ba6cd2d | 41 | void close(); |
donatien | 0:a2dd0ba6cd2d | 42 | |
donatien | 0:a2dd0ba6cd2d | 43 | private: |
donatien | 0:a2dd0ba6cd2d | 44 | int rc(char* buf); //Return code |
donatien | 0:a2dd0ba6cd2d | 45 | void process(bool moreData); //Main state-machine |
donatien | 0:a2dd0ba6cd2d | 46 | |
donatien | 0:a2dd0ba6cd2d | 47 | void setTimeout(int ms); |
donatien | 0:a2dd0ba6cd2d | 48 | void resetTimeout(); |
donatien | 0:a2dd0ba6cd2d | 49 | |
donatien | 0:a2dd0ba6cd2d | 50 | void onTimeout(); //Connection has timed out |
donatien | 0:a2dd0ba6cd2d | 51 | void onTcpSocketEvent(TcpSocketEvent e); |
donatien | 0:a2dd0ba6cd2d | 52 | void onResult(SmtpResult r); //Called when exchange completed or on failure |
donatien | 0:a2dd0ba6cd2d | 53 | |
donatien | 0:a2dd0ba6cd2d | 54 | EmailMessage* m_pMessage; |
donatien | 0:a2dd0ba6cd2d | 55 | |
donatien | 0:a2dd0ba6cd2d | 56 | TcpSocket* m_pTcpSocket; |
donatien | 0:a2dd0ba6cd2d | 57 | |
donatien | 0:a2dd0ba6cd2d | 58 | enum SmtpStep |
donatien | 0:a2dd0ba6cd2d | 59 | { |
donatien | 0:a2dd0ba6cd2d | 60 | SMTP_HELLO, |
donatien | 0:a2dd0ba6cd2d | 61 | SMTP_FROM, |
donatien | 0:a2dd0ba6cd2d | 62 | SMTP_TO, |
donatien | 0:a2dd0ba6cd2d | 63 | SMTP_DATA, |
donatien | 0:a2dd0ba6cd2d | 64 | SMTP_BODY, |
donatien | 0:a2dd0ba6cd2d | 65 | SMTP_BODYMORE, |
donatien | 0:a2dd0ba6cd2d | 66 | SMTP_EOF, |
donatien | 0:a2dd0ba6cd2d | 67 | SMTP_BYE |
donatien | 0:a2dd0ba6cd2d | 68 | }; |
donatien | 0:a2dd0ba6cd2d | 69 | |
donatien | 0:a2dd0ba6cd2d | 70 | SmtpStep m_nextState; |
donatien | 0:a2dd0ba6cd2d | 71 | |
donatien | 0:a2dd0ba6cd2d | 72 | CDummy* m_pCbItem; |
donatien | 0:a2dd0ba6cd2d | 73 | void (CDummy::*m_pCbMeth)(SmtpResult); |
donatien | 0:a2dd0ba6cd2d | 74 | |
donatien | 0:a2dd0ba6cd2d | 75 | Timeout m_watchdog; |
donatien | 0:a2dd0ba6cd2d | 76 | int m_timeout; |
donatien | 0:a2dd0ba6cd2d | 77 | |
donatien | 0:a2dd0ba6cd2d | 78 | int m_posInMsg; |
donatien | 0:a2dd0ba6cd2d | 79 | |
donatien | 0:a2dd0ba6cd2d | 80 | bool m_closed; |
donatien | 0:a2dd0ba6cd2d | 81 | |
donatien | 0:a2dd0ba6cd2d | 82 | Host m_host; |
donatien | 0:a2dd0ba6cd2d | 83 | |
donatien | 0:a2dd0ba6cd2d | 84 | }; |
donatien | 0:a2dd0ba6cd2d | 85 | |
donatien | 0:a2dd0ba6cd2d | 86 | #endif |