RegionSnapshot dense_region( RegionType region_type, void *start_addr, void* permanent_addr, size_t size) { simgrid::mc::RegionSnapshot::flat_data_ptr data; if (!_sg_mc_ksm) data = simgrid::mc::RegionSnapshot::flat_data_ptr((char*) malloc(size)); else { char* ptr = (char*) mmap(nullptr, size, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_POPULATE, -1, 0); if (ptr == MAP_FAILED) throw std::bad_alloc(); simgrid::mc::data_deleter deleter( simgrid::mc::data_deleter::Munmap, size); data = simgrid::mc::RegionSnapshot::flat_data_ptr(ptr, deleter); } mc_model_checker->process().read_bytes(data.get(), size, remote(permanent_addr), simgrid::mc::ProcessIndexDisabled); if (_sg_mc_ksm) // Mark the region as mergeable *after* we have written into it. // There no point to let KSM do the hard work before that. madvise(data.get(), size, MADV_MERGEABLE); simgrid::mc::RegionSnapshot region( region_type, start_addr, permanent_addr, size); region.flat_data(std::move(data)); XBT_DEBUG("New region : type : %s, data : %p (real addr %p), size : %zu", to_cstr(region_type), region.flat_data(), permanent_addr, size); return std::move(region); }
ZTrace(string name, ZTraceRef t, ZTraceEndpointRef ep) { this->ep = ep; c_name = to_cstr(name); blkin_init_child(&trace, t->get_blkin_trace(), ep->get_blkin_ep(), c_name); }
ZTrace(string name, ZTraceEndpointRef ep, struct blkin_trace_info *info, bool child=false) { c_name = to_cstr(name); this->ep = ep; if (child) blkin_init_child_info(&trace, info, ep->get_blkin_ep(), c_name); else { blkin_init_new_trace(&trace, c_name, ep->get_blkin_ep()); blkin_set_trace_info(&trace, info); } }
static int32_t load_player_info(player_t ply) { if(ply->_status == normal){ char str[256]; snprintf(str,256,"hmget %s attr,bag,skill",to_cstr(ply->_actname)); int32_t ret = gamedb_request(ply,new_dbrequest(str,load_ply_info_cb,ply,tls_get(MSGDISCP_TLS))); if(ret == 0){ ply->_status = loading; } return ret; } return 0; }
int main(){ string_t s1 = new_string("hello"); string_append(s1,"hahaha"); printf("%s\n",to_cstr(s1)); string_t s2 = new_string(""); string_copy(s2,s1,5); printf("%s\n",to_cstr(s2)); string_append(s1,"hahahafasfasdfasfasfasdfasdfasdfasdfasfasfasfasdfasdfdf"); printf("%s\n",to_cstr(s1)); string_append(s1,"hahahafasfasdfasfasfasdfasdfasdfasdfasfasfasfasdfasdfdfhahahafasfasdfasfasfasdfasdfasdfasdfasfasfasfasdfasdfdfhahahafasfasdfasfasfasdfasdfasdfasdfasfasfasfasdfasdfdf"); printf("%s\n",to_cstr(s1)); string_copy(s2,s1,80); printf("%s\n",to_cstr(s2)); printf("%d\n",string_len(s2)); return 0; }
int32_t gamedb_request(player_t ply,db_request_t request) { if(ply){ //根据actname计算hash值,将请求分布到不同的数据库中 const char *actname = to_cstr(ply->_actname); uint64_t hashcode = burtle_hash((uint8_t*)actname,strlen(actname),0); uint64_t dbindex = hashcode%(g_dbcount-1); return g_asyndbs[dbindex]->asyn_request(g_asyndbs[dbindex],request); }else{ return g_asyndbs[g_dbcount-1]->asyn_request(g_asyndbs[g_dbcount-1],request); } }
static void* log_routine(void *arg){ printf("log_routine\n"); while(1){ uint32_t ms = stop ? 0:100; struct log_item *item = NULL; msgque_get(pending_log,(lnode**)&item,ms); if(item){ if(item->_logfile->file == NULL || item->_logfile->total_size > MAX_FILE_SIZE) { if(item->_logfile->total_size){ fclose(item->_logfile->file); item->_logfile->total_size = 0; } //还没创建文件 char filename[128]; struct timespec tv; clock_gettime(CLOCK_REALTIME, &tv); struct tm _tm; localtime_r(&tv.tv_sec, &_tm); snprintf(filename,128,"%s-%04d-%02d-%02d %02d.%02d.%02d.%03d.log",to_cstr(item->_logfile->filename), _tm.tm_year+1900,_tm.tm_mon+1,_tm.tm_mday,_tm.tm_hour,_tm.tm_min,_tm.tm_sec,(int32_t)tv.tv_nsec/1000000); item->_logfile->file = fopen(filename,"w+"); if(!item->_logfile->file){ printf("%d\n",errno); free(item); continue; } } fprintf(item->_logfile->file,"%s\n",item->content); //fflush(item->_logfile->file); item->_logfile->total_size += strlen(item->content); free(item); }else if(stop){ break; } } //向所有打开的日志文件写入"log close success" struct logfile *l = NULL; char buf[128]; mutex_lock(g_mtx_log_file_list); while((l = LLIST_POP(struct logfile*,&g_log_file_list)) != NULL) { int32_t size = write_prefix(buf,LOG_INFO); snprintf(&buf[size],128-size,"log close success"); fprintf(l->file,"%s\n",buf); } mutex_unlock(g_mtx_log_file_list); printf("log_routine end\n"); return NULL; }
ZTrace(string name, ZTraceEndpointRef ep) :ep(ep) { c_name = to_cstr(name); blkin_init_new_trace(&trace, c_name, ep->get_blkin_ep()); }
ZTraceEndpoint(string ip, int port, string endpoint_name) { c_ip = to_cstr(ip); c_name = to_cstr(endpoint_name); blkin_init_endpoint(&ep, c_ip, port, c_name); }
int main(){ lua_State *L = luaL_newstate(); luaL_openlibs(L); if (luaL_dofile(L,"gateconfig.lua")) { const char * error = lua_tostring(L, -1); lua_pop(L,1); printf("%s\n",error); return 0; } luaObject_t gatecfg = GETGLOBAL_OBJECT(L,"gateserver"); agentcount = GET_OBJ_FIELD(gatecfg,"agentservice_count",int,lua_tonumber); release_luaObj(gatecfg); luaObject_t toclicfg = GETGLOBAL_OBJECT(L,"toclient"); string_t cliip = new_string(GET_OBJ_FIELD(toclicfg,"ip",const char *,lua_tostring)); int cliport = GET_OBJ_FIELD(toclicfg,"port",int,lua_tonumber); release_luaObj(toclicfg); luaObject_t togamecfg = GETGLOBAL_OBJECT(L,"togame"); g_gameip = new_string(GET_OBJ_FIELD(togamecfg,"ip",const char *,lua_tostring)); g_gameport = GET_OBJ_FIELD(togamecfg,"port",int,lua_tonumber); release_luaObj(togamecfg); luaObject_t torediscfg = GETGLOBAL_OBJECT(L,"toredis"); g_redisip = new_string(GET_OBJ_FIELD(torediscfg,"ip",const char *,lua_tostring)); g_redisport = GET_OBJ_FIELD(torediscfg,"port",int,lua_tonumber); release_luaObj(torediscfg); lua_close(L); InitNetSystem(); //两个poller,一个用于accept,一个用于数据传输 asynnet_t asynet = asynnet_new(1); if(start_verifyservice() != 0){ SYS_LOG(LOG_ERROR,"start verifyservice failed\n"); return 0; } /*if(start_togame_service(asynet) != 0){ SYS_LOG(LOG_ERROR,"start togame service failed\n"); return 0; }*/ uint8_t i; for(i = 0; i < agentcount; ++i){ g_agents[i] = new_agentservice(i,asynet); } msgdisp_t listener = new_msgdisp(asynet,1,CB_CONNECT(agent_connect)); //开启对客户端的监听 int32_t err = 0; listener->listen(listener,0,to_cstr(cliip),cliport,&err); if(err != 0) { SYS_LOG(LOG_ERROR,"start listen failed:%d\n",err); return 0; } setup_signal_handler(); while(!stop){ msg_loop(listener,500); } //stop_togame_service(); stop_verifyservice(); for(i = 0; i < agentcount; ++i){ stop_agentservice(g_agents[i]); } return 0; }
std::string const to_string(LoadRes loadres) { return to_cstr(loadres); }
static int32_t ply_cmp_function(void *key1,void *key2) { string_t name1 = (string_t)key1; string_t name2 = (string_t)key2; return (int32_t)strcmp(to_cstr(name1),to_cstr(name2)); }
int32_t fn_compare(void *l,void *r) { return strcmp(to_cstr((string_t)l),to_cstr((string_t)r)); }