/*
* Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
* This source file is part of the Cangjie project, licensed under Apache-2.0
* with Runtime Library Exception.
*
* See https://cangjie-lang.cn/pages/LICENSE for license information.
*/
package stdx.net.http
import std.net.*
import stdx.crypto.common.Certificate
abstract class HttpEngineConn {
//add Timeout size limit
protected var _readTimeout: ?Duration = None
protected var _writeTimeout: ?Duration = None
protected var _readHeaderTimeout: ?Duration = None
protected var _httpKeepAliveTimeout: ?Duration = None
protected var _maxRequestHeaderSize: ?Int64 = None
protected var _maxRequestBodySize: ?Int64 = None
protected mut prop readTimeout: Duration {
get() {
_readTimeout ?? throw HttpException("The readTimeout not set yet.")
}
set(v) {
_readTimeout = v
}
}
protected mut prop writeTimeout: Duration {
get() {
_writeTimeout ?? throw HttpException("The writeTimeout not set yet.")
}
set(v) {
_writeTimeout = v
}
}
protected mut prop readHeaderTimeout: Duration {
get() {
_readHeaderTimeout ?? throw HttpException("The readHeaderTimeout not set yet.")
}
set(v) {
_readHeaderTimeout = v
}
}
protected mut prop maxRequestHeaderSize: Int64 {
get() {
_maxRequestHeaderSize ?? throw HttpException("The maxRequestHeaderSize not set yet.")
}
set(v) {
_maxRequestHeaderSize = v
}
}
protected mut prop maxRequestBodySize: Int64 {
get() {
_maxRequestBodySize ?? throw HttpException("The maxRequestBodySize not set yet.")
}
set(v) {
_maxRequestBodySize = v
}
}
protected func isClosed(): Bool
protected prop clientCertificate: ?Array<Certificate>
protected func getSocket(): StreamingSocket
protected func writeResponse(ctx: HttpContext): Unit
protected func writeResponseByWriter(ctx: HttpContext, bodyData: Array<UInt8>): Unit
protected func writeUpgradeResponse(ctx: HttpContext): Unit
}