示例#1
0
 public HoxisConnection()
 {
     _extractor                   = new HoxisBytesExtractor(readBufferSize);
     user                         = new HoxisUser();
     user.onNetworkAnomaly       += ProcessNetworkAnomaly;
     _extractor.onBytesExtracted += user.ProtocolEntry;
     user.onPost                 += Send;
 }
        /// <summary>
        /// Init the configuration, such as the ip, port, socket
        /// </summary>
        /// <param name="ret"></param>
        public void InitializeConfig(string configPath = "")
        {
            Ret ret;
            // Read config file
            string path;

            if (configPath != "")
            {
                path = configPath;
            }
            else
            {
                path = basicPath + "/Configs/hoxis_client.toml";
            }
            config = new TomlConfiguration(path, out ret);
            if (ret.code != 0)
            {
                HoxisDirector.Ins.AffairEntry(C.AFFAIR_INIT_ERROR, ret); return;
            }

            // Assign ip, port and init the sokcet
            serverIP = config.GetString("socket", "server_ip", out ret);
            if (ret.code != 0)
            {
                HoxisDirector.Ins.AffairEntry(C.AFFAIR_INIT_ERROR, ret); return;
            }
            port = config.GetInt("socket", "port", out ret);
            if (ret.code != 0)
            {
                HoxisDirector.Ins.AffairEntry(C.AFFAIR_INIT_ERROR, ret); return;
            }

            // Init extractor
            int size = config.GetInt("socket", "read_buffer_size", out ret);

            if (ret.code != 0)
            {
                HoxisDirector.Ins.AffairEntry(C.AFFAIR_INIT_ERROR, ret); return;
            }
            _extractor = new HoxisBytesExtractor(size);
            _extractor.onBytesExtracted += OnExtract;

            // Init HoxisDirector
            HoxisDirector.protocolQueueCapacity = config.GetInt("director", "protocol_queue_capacity", out ret);
            if (ret.code != 0)
            {
                HoxisDirector.Ins.AffairEntry(C.AFFAIR_INIT_ERROR, ret); return;
            }
            HoxisDirector.protocolQueueProcessQuantity = config.GetShort("director", "protocol_queue_process_quantity", out ret);
            if (ret.code != 0)
            {
                HoxisDirector.Ins.AffairEntry(C.AFFAIR_INIT_ERROR, ret); return;
            }
            HoxisDirector.affairQueueCapacity = config.GetInt("director", "affair_queue_capacity", out ret);
            if (ret.code != 0)
            {
                HoxisDirector.Ins.AffairEntry(C.AFFAIR_INIT_ERROR, ret); return;
            }
            HoxisDirector.affairQueueProcessQuantity = config.GetShort("director", "affair_queue_process_quantity", out ret);
            if (ret.code != 0)
            {
                HoxisDirector.Ins.AffairEntry(C.AFFAIR_INIT_ERROR, ret); return;
            }
            HoxisDirector.heartbeatInterval = config.GetFloat("director", "heartbeat_interval", out ret);
            if (ret.code != 0)
            {
                HoxisDirector.Ins.AffairEntry(C.AFFAIR_INIT_ERROR, ret); return;
            }
        }