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

本文介绍了INM消息处理的总流程,包括消息处理、调度、操作员和创建模式。重点讲述了如何将用户输入的语句序列化为BSON格式,利用mongocxx驱动与MongoDB进行交互,实现数据的存取操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()->syncDirty
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值