[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友元类。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值