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

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友元类。

    原文作者:Android源码分析
    原文地址: https://blog.csdn.net/weihe6666/article/details/23863319
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞