=========================================================
dd:
/// 对于自动启动的规则,未加上是否启用控制
if (deploy_mode_!=1) { ///< 集中部署(0)和分离部署的LSS服务器(2)执行,分离部署的主服务器(1)不执行for (unsigned short i=0;i<rules_.size();i++) {
CRule *rule = rules_[i];
if (rule->mode_&CRule::DD_AUTO) { ///< @todo 增加rule->active_flag_条件
IDeamonTask *task = CBasePluginModule::deamon_mgr_->add(extraction_proc,"CDd::extraction_proc",rule);
task->set_timer_strategy(rule->timer_value_);
CBasePluginModule::deamon_mgr_->active(task);
}
}
=========================================================
bbox:
///< 如果平台和接收方同时返回810确认,一个修改为6,一个修改为100,则发送方的最终的状态取决于这2个消息处理的次序。
GETDBC_RETURN(pdbor,this->local_dbc_.c_str(),-1);pdbor->BeginTrans();
if (semq_.UpdateStatus(ssr.record_id_,status)) {
pdbor->RollbackTrans();
return -2;
修改UpdateStatus,增加except_statuss
int UpdateStatus(CQQ_OBJECT_ID object_id,short status,short excp_status=0); ///< 修改发送状态
if (semq_.UpdateStatus(ssr.record_id_,status,ISEMQ::SS_ACK2)) {
pdbor->RollbackTrans();
return -2;
}
////////////////////////////////////////////////////////////////////////////////
int CSEMQ::UpdateStatus(CQQ_OBJECT_ID object_id,short status,short excp_status) {
string sql;
if (excp_status)
sql = LogMsg("update %s set f009n_0031 = %d where object_id = %I64d and f009n_0031<>%d", this->GetTableName(),status,object_id,excp_status);
else
sql = LogMsg("update %s set f009n_0031 = %d where object_id = %I64d", this->GetTableName(),status,object_id);
USEDBC(pdbor,this->dbc_name_.c_str());
if (!pdbor->Execute(adCmdText,sql.c_str()))
return -1;
return 0;
}
=========================================================
ap:
////////////////////////////////////////////////////////////////////////////////int CAPBase::Release()
{
RemoveAllServer();
if(oporg_db_) delete oporg_db_;
if(frd_db_) delete frd_db_;
if(svr_db_) delete svr_db_;
if(org_db_) delete org_db_;
parent::Release(); /// 此行在mem_db_env_->Release之前,否则CUserMemDB::Deactivate执行m_svrid_idx_db_->close(m_svrid_idx_db_, 0);时产生异常
if (mem_db_env_) {
//mem_db_env_->Close();
//delete mem_db_env_;
mem_db_env_->Release();
}
return 0;
}
void CUserMemDB::Deactivate()
{
if(!m_activated) return;
m_svrid_idx_db_->close(m_svrid_idx_db_, 0);
m_orgid_idx_db_->close(m_orgid_idx_db_, 0);
m_primary_db_->close(m_primary_db_, 0);
m_userid_idx_db_->close(m_userid_idx_db_,0);
// m_dbenv_->close(m_dbenv_, 0);
m_activated = false;
return;
}
=========================================================
hotfox
。支持PostgreSQL扩展判定主键冲突时,原有的NativeError方式无法判定。如23505是PostgreSQL的违反唯一性约束的错误,但NativeError=7,其它错误情况也可能NativeError=7。
需要利用SQLState信息。
为此扩展IDbExt和IDbAccessor接口。
////////////////////////////////////////////////////////////////////////////////
void CPg_ext::SetNativeError() {
const char *state = dbor_->GetSQLState();
unsigned long err = atol(state);
if (err!=0) {
dbor_->SetLastErrorCode(err);
}
}
=========================================================
bbox:(已修改trunk 2014-7-22)
4的发送状态重发,118张单据为4的状态没有重发增加条件:f014d_0031 is null
////////////////////////////////////////////////////////////////////////////////
int CLocalSEMQ::Inquiry() {
char now[24];
CDateTime::GetDateTime(now);
///((f016c_0031=3 and f009n_0031=4 ) or (f017c_0031=1 and f009n_0031<100)) and f014d_0031<subtime('%s','%s')
/// 对于需要确认的消息,如果发送状态为4(已发送),且超过询问间隔
USEDBC(pdbor,this->dbc_name_.c_str());
string sql = LogMsg("select object_id,src_type,src_id,dest_type,dest_id from %s "
"where %s and (f014d_0031 is null or f014d_0031<%s) order by object_id",
this->GetTableName(),this->inquiry_expr_.c_str(),pdbor->GetDBExt()->DateAdd(now, 0-this->interval_[INQUIRY_INTERVAL]).c_str());
return CSEMQ::Inquiry(sql);
}