// init server void initServer(void) { int j; // ignore sighup, sigpipe signal(SIGHUP, SIG_IGN); signal(SIGPIPE, SIG_IGN); // 设置信号处理函数 setupSignalHandlers(); if (server.syslog_enabled) { openlog(server.syslog_ident, LOG_PID | LOG_NDELAY | LOG_NOWAIT, server.syslog_facility); } // 当前客户端相关状态 server.current_client = NULL; // 创建一个链表, 用于存储客户端 server.clients = listCreate(); // 创建客户端关闭链表 server.clients_to_close = listCreate(); // 从redis链表 server.slaves = listCreate(); // 监控链表 server.monitors = listCreate(); server.slaveseldb = -1; // 未锁定客户端链表 server.unblocked_clients = listCreate(); // 准备key链表 server.ready_keys = listCreate(); // 创建共享对象 createSharedObjects(); // 打开文件描述符限制 adjustOpenFilesLimit(); }
/* RDB check main: called form redis.c when Redis is executed with the * redis-check-rdb alias. * * The function never returns, but exits with the status code according * to success (RDB is sane) or error (RDB is corrupted). */ int redis_check_rdb_main(int argc, char **argv) { if (argc != 2) { fprintf(stderr, "Usage: %s <rdb-file-name>\n", argv[0]); exit(1); } /* In order to call the loading functions we need to create the shared * integer objects, however since this function may be called from * an already initialized Redis instance, check if we really need to. */ if (shared.integers[0] == NULL) createSharedObjects(); server.loading_process_events_interval_bytes = 0; rdbCheckMode = 1; rdbCheckInfo("Checking RDB file %s", argv[1]); rdbCheckSetupSignals(); int retval = redis_check_rdb(argv[1]); if (retval == 0) { rdbCheckInfo("\\o/ RDB looks OK! \\o/"); rdbShowGenericInfo(); } exit(retval); }
void Shader::loadGeometryShader(const std::string &shader) { mGeometryHandle = createSharedObjects(shader, GL_GEOMETRY_SHADER); linkShader(mGeometryHandle); }
/** * @brief Loads a fragment shader * * @param fragmentShader * Fragment program */ void Shader::loadFragmentShader(const std::string &fragmentShader) { mFragmentHandle = createSharedObjects(fragmentShader, GL_FRAGMENT_SHADER); linkShader(mFragmentHandle); }
/** * @brief Loads a vertex shader * * @param vertexPath * Vertex program * */ void Shader::loadVertexShader(const std::string &vertexShader) { mVertexHandle = createSharedObjects(vertexShader, GL_VERTEX_SHADER); linkShader(mVertexHandle); }
rstatus_t init_server(struct instance *nci) { rstatus_t status; uint32_t i; redisDb *db; vr_conf *conf; conf = conf_create(nci->conf_filename); server.pid = getpid(); server.configfile = getAbsolutePath(nci->conf_filename); server.hz = 10; server.dbnum = 16; array_init(&server.dbs, server.dbnum, sizeof(redisDb)); server.pidfile = nci->pid_filename; server.executable = NULL; server.activerehashing = CONFIG_DEFAULT_ACTIVE_REHASHING; get_random_hex_chars(server.runid, CONFIG_RUN_ID_SIZE); server.arch_bits = (sizeof(long) == 8) ? 64 : 32; server.requirepass = NULL; server.starttime = time(NULL); server.maxclients = conf->max_clients; server.maxmemory = conf->maxmemory == CONF_UNSET_NUM ? 0 : conf->maxmemory; server.maxmemory_policy = CONFIG_DEFAULT_MAXMEMORY_POLICY; server.client_max_querybuf_len = PROTO_MAX_QUERYBUF_LEN; server.commands = dictCreate(&commandTableDictType,NULL); populateCommandTable(); server.delCommand = lookupCommandByCString("del"); server.multiCommand = lookupCommandByCString("multi"); server.lpushCommand = lookupCommandByCString("lpush"); server.lpopCommand = lookupCommandByCString("lpop"); server.rpopCommand = lookupCommandByCString("rpop"); server.sremCommand = lookupCommandByCString("srem"); server.execCommand = lookupCommandByCString("exec"); for (i = 0; i < server.dbnum; i ++) { db = array_push(&server.dbs); redisDbInit(db); } server.monitors = listCreate(); server.loading = 0; server.lua_timedout = 0; server.aof_state = AOF_OFF; server.stop_writes_on_bgsave_err = 0; server.ready_keys = listCreate(); server.slowlog = listCreate(); server.slowlog_entry_id = 0; server.slowlog_log_slower_than = -1; server.slowlog_max_len = CONFIG_DEFAULT_SLOWLOG_MAX_LEN; server.stat_peak_memory = 0; server.system_memory_size = zmalloc_get_memory_size(); server.rdb_child_pid = -1; server.aof_child_pid = -1; server.hash_max_ziplist_entries = OBJ_HASH_MAX_ZIPLIST_ENTRIES; server.hash_max_ziplist_value = OBJ_HASH_MAX_ZIPLIST_VALUE; server.list_max_ziplist_size = OBJ_LIST_MAX_ZIPLIST_SIZE; server.list_compress_depth = OBJ_LIST_COMPRESS_DEPTH; server.set_max_intset_entries = OBJ_SET_MAX_INTSET_ENTRIES; server.zset_max_ziplist_entries = OBJ_ZSET_MAX_ZIPLIST_ENTRIES; server.zset_max_ziplist_value = OBJ_ZSET_MAX_ZIPLIST_VALUE; server.hll_sparse_max_bytes = CONFIG_DEFAULT_HLL_SPARSE_MAX_BYTES; vr_replication_init(); createSharedObjects(); status = master_init(conf); if (status != VR_OK) { log_error("init master thread failed"); return VR_ERROR; } server.port = master.listen->port; status = workers_init(nci->thread_num); if (status != VR_OK) { log_error("init worker threads failed"); return VR_ERROR; } log_debug(LOG_NOTICE, "mem_alloc_lock_type: %s", malloc_lock_type()); log_debug(LOG_NOTICE, "malloc lib: %s", VR_MALLOC_LIB); return VR_OK; }