package yu_hpsocket

type SS uintptr

const (
	SS_STARTING SS = 0 // 正在启动
	SS_STARTED  SS = 1 // 已经启动
	SS_STOPPING SS = 2 // 正在停止
	SS_STOPPED  SS = 3 // 已经停止
)

type SSL_VM uintptr

const (
	SSL_VM_NONE                 SSL_VM = 0 // 没有
	SSL_VM_PEER                 SSL_VM = 1 // 相同证书
	SSL_VM_FAIL_IF_NO_PEER_CERT SSL_VM = 2 // 如果没有相同证书失败
	SSL_VM_CLIENT_ONCE          SSL_VM = 4 // 公开
)

type SSL_SSI uintptr

const (
	SSL_SSI_MIN              SSL_SSI = 0  //
	SSL_SSI_CTX              SSL_SSI = 0  // SSL CTX    （输出类型：SSL_CTX*）
	SSL_SSI_CTX_METHOD       SSL_SSI = 1  // SSL CTX Mehtod  （输出类型：SSL_METHOD*）
	SSL_SSI_CTX_CIPHERS      SSL_SSI = 2  // SSL CTX Ciphers  （输出类型：STACK_OF(SSL_CIPHER)*）
	SSL_SSI_CTX_CERT_STORE   SSL_SSI = 3  // SSL CTX Cert Store （输出类型：X509_STORE*）
	SSL_SSI_SERVER_NAME_TYPE SSL_SSI = 4  // Server Name Type  （输出类型：int）
	SSL_SSI_SERVER_NAME      SSL_SSI = 5  // Server Name   （输出类型：LPCSTR）
	SSL_SSI_VERSION          SSL_SSI = 6  // SSL Version   （输出类型：LPCSTR）
	SSL_SSI_METHOD           SSL_SSI = 7  // SSL Method   （输出类型：SSL_METHOD*）
	SSL_SSI_CERT             SSL_SSI = 8  // SSL Cert    （输出类型：X509*）
	SSL_SSI_PKEY             SSL_SSI = 9  // SSL Private Key  （输出类型：EVP_PKEY*）
	SSL_SSI_CURRENT_CIPHER   SSL_SSI = 10 // SSL Current Cipher （输出类型：SSL_CIPHER*）
	SSL_SSI_CIPHERS          SSL_SSI = 11 // SSL Available Ciphers（输出类型：STACK_OF(SSL_CIPHER)*）
	SSL_SSI_CLIENT_CIPHERS   SSL_SSI = 12 // SSL Client Ciphers （输出类型：STACK_OF(SSL_CIPHER)*）
	SSL_SSI_PEER_CERT        SSL_SSI = 13 // SSL Peer Cert  （输出类型：X509*）
	SSL_SSI_PEER_CERT_CHAIN  SSL_SSI = 14 // SSL Peer Cert Chain （输出类型：STACK_OF(X509)*）
	SSL_SSI_VERIFIED_CHAIN   SSL_SSI = 15 // SSL Verified Chain （输出类型：STACK_OF(X509)*）
	SSL_SSI_MAX              SSL_SSI = 15 //
)

type RAP uintptr

const (
	RAP_NONE          RAP = 0 //  不重用
	RAP_ADDR_ONLY     RAP = 1 //  仅重用地址
	RAP_ADDR_AND_PORT RAP = 2 //  重用地址和端口
)

type HR uintptr

const (
	HR_OK     HR = 0 //  成功
	HR_IGNORE HR = 1 //  忽略
	HR_ERROR  HR = 2 //  错误
)

type SO uintptr

const (
	SO_UNKNOWN SO = 0 //  未知
	SO_ACCEPT  SO = 1 //  接受
	SO_CONNECT SO = 2 //  连接
	SO_SEND    SO = 3 //  发送
	SO_RECEIVE SO = 4 //  接收
	SO_CLOSE   SO = 5 //  关闭
)

type SP uintptr

const (
	SP_PACK   = 0 //  打包模式（默认） ：尽量把多个发送操作的数据组合在一起发送，增加传输效率
	SP_SAFE   = 1 //  安全模式   ：尽量把多个发送操作的数据组合在一起发送，并控制传输速度，避免缓冲区溢出
	SP_DIRECT = 2 //  直接模式   ：对每一个发送操作都直接投递，适用于负载不高但要求实时性较高的场合
)

type OSSP uintptr

const (
	OSSP_NONE    = 0 // 不同步（默认） ：不同步 OnSend 事件，此时可能同时触发 OnReceive 和 OnClose 事件
	OSSP_CLOSE   = 1 // 同步 OnClose ：只同步 OnClose 事件，此时可能同时触发 OnReceive 事件
	OSSP_RECEIVE = 2 // 同步 OnReceive ：（只用于 TCP 组件）同步 OnReceive 和 OnClose 事件，此处不可能同时触发 OnReceive 或 OnClose 事件
)

type HUF uintptr

const (
	HUF_SCHEMA   HUF = 0 //  概要
	HUF_HOST     HUF = 1 //  主机
	HUF_PORT     HUF = 2 //  端口
	HUF_PATH     HUF = 3 //  路径
	HUF_QUERY    HUF = 4 //  查询
	HUF_FRAGMENT HUF = 5 //  片段
	HUF_USERINFO HUF = 6 //  用户信息
	HUF_MAX      HUF = 7 //  最大
)

type HV uintptr

const (
	HV_1_0 HUF = 1 | 0<<8 //  概要
	HV_1_1 HUF = 1 | 1<<8 //  主机
)

type HUT int

const (
	HUT_NONE        HUT = 0  // 没有升级
	HUT_WEB_SOCKET  HUT = 1  // WebSocket
	HUT_HTTP_TUNNEL HUT = 2  // HTTP 隧道
	HUT_UNKNOWN     HUT = -1 // 未知类型
)

type HPR int

const (
	HPR_OK        HPR = 0  //  解析成功
	HPR_SKIP_BODY HPR = 1  //  跳过当前请求 BODY（仅用于 OnHeadersComplete 事件）
	HPR_UPGRADE   HPR = 2  //  升级协议（仅用于 OnHeadersComplete 事件）
	HPR_ERROR     HPR = -1 //  解析错误，终止解析，断开连接
)
