00001
00010 #ifndef __PUTTYENGINEIMP_H__
00011 #define __PUTTYENGINEIMP_H__
00012
00013 #include <e32std.h>
00014 #include <stdarg.h>
00015 #include <gdi.h>
00016 extern "C" {
00017 #include "putty.h"
00018 }
00019 #include "puttyengine.h"
00020 #include "puttyclient.h"
00021 #include "epocnet.h"
00022
00028 class CPuttyEngineImp : public CActive, public MPuttyEngine,
00029 public MSocketWatcher {
00030
00031 public:
00032 static CPuttyEngineImp *NewL();
00033 static CPuttyEngineImp *NewLC();
00034 ~CPuttyEngineImp();
00035
00036
00037 void putty_fatalbox(char *p, va_list ap);
00038 void putty_connection_fatal(char *p, va_list ap);
00039 void putty_do_text(int x, int y, char *text, int len,
00040 unsigned long attr, int lattr);
00041 void putty_verify_ssh_host_key(char *host, int port, char *keytype,
00042 char *keystr, char *fingerprint);
00043 void putty_askcipher(char *ciphername, int cs);
00044 void putty_palette_set(int n, int r, int g, int b);
00045 void putty_palette_reset();
00046 void putty_do_cursor(int x, int y, char *text, int len, unsigned long attr,
00047 int lattr);
00048
00049
00050 virtual void Init(MPuttyClient *aClient, const TDesC &aDataPath);
00051 virtual void Close();
00052 virtual Config *GetConfig();
00053 virtual TInt Connect();
00054 virtual void GetErrorMessage(TDes &aTarget);
00055 virtual void Disconnect();
00056 virtual void SetTerminalSize(TInt aWidth, TInt aHeight);
00057 virtual void RePaintWindow();
00058 virtual void SendKeypress(TKeyCode aCode, TUint aModifiers);
00059 virtual void AddRandomNoise(const TDesC8& aNoise);
00060
00061
00062 virtual void SocketOpened();
00063 virtual void SocketClosed();
00064
00065
00066 static TInt UpdateTerminal(TAny *anAny);
00067
00068 private:
00069 CPuttyEngineImp();
00070 void ConstructL();
00071 virtual void RunL();
00072 virtual void DoCancel();
00073
00074 enum {
00075 EStateNone = 0,
00076 EStateInitialized,
00077 EStateConnected,
00078 EStateDisconnected,
00079 EStateFatalConnectionError
00080 } iState;
00081
00082 MPuttyClient *iClient;
00083 char *iConnError;
00084 char *iFatalConnError;
00085 TInt iNumSockets;
00086 TInt iTermWidth, iTermHeight;
00087 CPeriodic *iTermUpdatePeriodic;
00088
00089 enum {
00090 KNumColors = 24
00091 };
00092
00093 TRgb iDefaultPalette[KNumColors];
00094 TRgb iPalette[KNumColors];
00095 };
00096
00097
00098 #endif