CContextManager
CContextManager类是一个全局单例,承载着管理CState作用,在CState变化时发出通知。
CState类是FileZilla引擎的创建和管理者,并作为消息的管理者,下面重点理解CState类的工作机制。
一、CFileZillaEngine引擎以及Command消息队列创建:
m_pEngine = new CFileZillaEngine();
m_pEngine->Init(m_pMainFrame, COptions::Get()); m_pCommandQueue = new CCommandQueue(m_pEngine, m_pMainFrame, this);
二、Connect 1. 判断m_pEngine 是否已经连接、是否处于忙碌状态以及CommandQueue是否非空 2. 发送connect命令:m_pCommandQueue->ProcessCommand(new CConnectCommand(server)) 3. 发送list命令:m_pCommandQueue->ProcessCommand(new CListCommand(path, _T(“”), LIST_FLAG_FALLBACK_CURRENT));
三、CContextManager、CState、CFileZillaEngine、CCommandQueue关系
CContextManager是一个全局单例,成员变量std::vector<CState*> m_contexts;记录不同的会话。
CState类,成员变量
CFileZillaEngine* m_pEngine; CCommandQueue* m_pCommandQueue; 是单个会话的管理类。
CCommandQueue类包含
CFileZillaEngine *m_pEngine;CState* m_pState;的引用,同时friend class CCommandQueue;是CState友元类。