Ejemplo n.º 1
0
spx_private u32_t logdb_tracker_configurtion_timespan_convert(
        SpxLogDelegate *log,string_t v,u32_t default_unitsize,
        char *errinfo,err_t *err){/*{{{*/
    u64_t size = strtoul(v,NULL,10);
    if(ERANGE == size) {
        SpxLog1(log,SpxLogError,\
                errinfo);
        *err = size;
        return 0;
    }
    string_t unit = spx_string_range_new(v,\
            -2,spx_string_len(v),err);
    if(NULL == unit){
        size *= default_unitsize;
    }
    if(0 == spx_string_casecmp(unit,"D")){
        size *= SpxDayTick;
    }
    else if( 0 == spx_string_casecmp(unit,"H")){
        size *= SpxHourTick;
    }else if(0 == spx_string_casecmp(unit,"M")){
        size *= SpxMinuteTick;
    }else if(0 == spx_string_casecmp(unit,"S")){
        size *= SpxSecondTick;
    }else {
        size *= default_unitsize;
    }
    spx_string_free(unit);
    return size;
}/*}}}*/
Ejemplo n.º 2
0
spx_private void ydb_storage_syncquery_nio_body_reader(int fd,
        struct spx_job_context *jc){/*{{{*/
    spx_nio_reader_body_handler(fd,jc);
    if(ENOENT == jc->err){
        SpxLog1(jc->log,SpxLogWarn,\
                "not find out the sync storages.");
        goto r1;
    }

    if(0 != jc->err){

        SpxLog2(jc->log,SpxLogError,jc->err,\
                "recv the regedit response is fail.");
        goto r1;
    }

    struct spx_msg *ctx = jc->reader_body_ctx;
    if(NULL == ctx){
        SpxLog2(jc->log,SpxLogError,jc->err,\
                "no recved the body ctx.");
        goto r1;
    }

    struct ydb_storage_slave *s = NULL;
     size_t unit_size = YDB_MACHINEID_LEN + SpxIpv4Size
                        + SpxI32Size + SpxI32Size;
     size_t numbs = jc->reader_header->bodylen / unit_size;
     size_t i = 0;
     for( ; i < numbs; i++){
        string_t machineid = spx_msg_unpack_string(ctx,YDB_MACHINEID_LEN,&(jc->err));
        string_t ip = spx_msg_unpack_string(ctx,SpxIpv4Size,&(jc->err));
        i32_t port = spx_msg_unpack_i32(ctx);
        u32_t status = spx_msg_unpack_u32(ctx);
        spx_map_get(g_ydb_storage_slaves,machineid,spx_string_len(machineid),\
                (void **) &s,NULL);
        if(NULL == s){
            s = spx_alloc_alone(sizeof(*s),&(jc->err));
            if(NULL == s){
                continue;
            }
            s->state = status;
            s->machineid = machineid;
            s->host.port = port;
            s->host.ip = ip;
            spx_map_insert(g_ydb_storage_slaves,machineid,spx_string_len(machineid),
                    s,sizeof(s));
        }
        if(port != s->host.port){
            s->host.port = port;
        }
        if(0 != spx_string_casecmp_string(machineid,s->machineid)){
            spx_string_free(s->machineid);
            s->machineid = machineid;
        }
        s->state = status;

     }
r1:
    spx_job_context_clear(jc);
}/*}}}*/
Ejemplo n.º 3
0
spx_private u64_t logdb_tracker_configurtion_iosize_convert(
        SpxLogDelegate *log,string_t v,u32_t default_unitsize,
        char *errinfo,err_t *err){/*{{{*/
    u64_t size = strtoul(v,NULL,10);
    if(ERANGE == size) {
        SpxLog1(log,SpxLogError,\
                errinfo);
        *err = size;
        return 0;
    }
    string_t unit = spx_string_range_new(v,\
            -2,spx_string_len(v),err);
    if(NULL == unit){
        size *= default_unitsize;
    }
    if(0 == spx_string_casecmp(unit,"GB")){
        size *= SpxGB;
    }
    else if( 0 == spx_string_casecmp(unit,"MB")){
        size *= SpxMB;
    }else if(0 == spx_string_casecmp(unit,"KB")){
        size *= SpxKB;
    }else {
        size *= default_unitsize;
    }
    spx_string_free(unit);
    return size;
}/*}}}*/
Ejemplo n.º 4
0
err_t spx_map_free(void **s){
    string_t sk = (string_t) *s;
    spx_string_free(sk);
    return 0;
}