您的位置:首页 > 其它

[FileZilla Client 源码分析一]CContextManager与CState类

2014-04-16 17:49 393 查看
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友元类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: