gyb优化事项(1)


=========================================================       

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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值