序列化成BSON,实现与MongoDB交互

INM消息处理

消息处理 总流程图

在这里插入图片描述

statement_list

namespace inm
{
   
	enum StatementType
	{
   
		S_UNKNOWN,	/**< 非法类型 */
		S_INSTANCE,	/**< 实例增删改 */
		S_SCHEMA,	/**< 模式增删改 */
		S_UDT,		/**< 自定义类型增删改 */
		S_QUERY,  	/**< 查询 */
		S_UPDATE,        /**< 更新 */
		S_SUPDATE,
		S_LOGIN,	/**< 登录类型提示消息,与客户端对应,值=7 位置不可变>*/
		S_FUPDATE,
		S_FUNCTION,
		S_INVOKE,
		S_VIEW,
		S_REFRESH       /**物化视图更新 xj**/
		
	};
}

scheduler::schedule

将语句根据类型放到对应的vector中,分别执行对应的exec函数。

例:
input:query1、query2、query3、insert1、insert2、create1、create2。

经过语法分析后:
vector<scheclasspre*> :create1、create2。->execschmlist
vector<query*>:query1、query2、query3。->execquerylist
vector<instance*>:insert1、insert2。->execinstancelist

vector<statement_list>::iterator iter = yy_extra.smt_lists.begin();
		for(; iter != yy_extra.smt_lists.end(); ++iter) {
   
			switch(iter->type) {
   
				case S_SCHEMA:
					execSchmList((vector<SchmClassPre *> *)iter->list);
					break;
				case S_VIEW:
					execViewList((vector<ViewClass *> *)iter->list);
					break;
			       case S_REFRESH:
					execRefreshList((vector<UpdateViewClass *> *)iter->list);
					break;
				case S_INSTANCE:
					execInstList((InstanceList *)iter->list);
					break;
				case S_QUERY:
					request->getInstOperator()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值