コード例 #1
0
    public Http3SharpImpl(string hostName, string port, Http3Sharp.ConnectionOptions options)
    {
        _cToken   = new CancellationTokenSource();
        Authority = hostName + port;
        _hostName = hostName;
        _port     = port;


        // native 側のインスタンスの生成やコールバックの登録
        _hostId = qwfsCreate(hostName, port, new Callbacks {
            SuccessFile = RequestFileSuccess, SuccessBinary = RequestBinarySuccess, Error = RequestError
        });
        Debug.Assert(INVALID_HOST_ID != _hostId);

        //
        if (!_responseForEachHost.ContainsKey(_hostId))
        {
            _responseForEachHost.Add(_hostId, new List <Http3Sharp.ResponseParamaters>());
        }

        // そのうち単独呼び出しにするかも

        if (!string.IsNullOrWhiteSpace(options.QlogPath))
        {
            if (!Directory.Exists(options.QlogPath))
            {
                Directory.CreateDirectory(options.QlogPath);
            }
        }
        var result = qwfsSetOptions(_hostId, options);

        Debug.Assert(QwfsResult.Ok == result);

        _Http3SharpImplList.Add(_hostId, this);

        // Update 用のタスクをこの時点から走らせ始める(リクエストが無くてもハンドシェイクが始まる為)
        _task = Task.Run(() =>
        {
            UpdateQwfs();
        });
    }
コード例 #2
0
 private static extern QwfsResult qwfsSetOptions(ulong hostId, Http3Sharp.ConnectionOptions options);