/* Code generated by cmd/cgo; DO NOT EDIT. */

/* package Sunny */


#line 1 "cgo-builtin-export-prolog"

#include <stddef.h> /* for ptrdiff_t below */

#ifndef GO_CGO_EXPORT_PROLOGUE_H
#define GO_CGO_EXPORT_PROLOGUE_H

#ifndef GO_CGO_GOSTRING_TYPEDEF
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
#endif

#endif

/* Start of preamble from import "C" comments.  */



#line 3 "HTTP.go"

   #include <stdlib.h>

#line 1 "cgo-generated-wrapper"



#line 3 "socketClinet.go"

#include <stdlib.h>

#line 1 "cgo-generated-wrapper"

#line 3 "websocket.go"

#include <stdlib.h>

#line 1 "cgo-generated-wrapper"

#line 3 "work.go"

#include <stdlib.h>

#line 1 "cgo-generated-wrapper"


/* End of preamble from import "C" comments.  */


/* Start of boilerplate cgo prologue.  */
#line 1 "cgo-gcc-export-header-prolog"

#ifndef GO_CGO_PROLOGUE_H
#define GO_CGO_PROLOGUE_H

typedef signed char GoInt8;
typedef unsigned char GoUint8;
typedef short GoInt16;
typedef unsigned short GoUint16;
typedef int GoInt32;
typedef unsigned int GoUint32;
typedef long long GoInt64;
typedef unsigned long long GoUint64;
typedef GoInt64 GoInt;
typedef GoUint64 GoUint;
typedef __SIZE_TYPE__ GoUintptr;
typedef float GoFloat32;
typedef double GoFloat64;
typedef float _Complex GoComplex64;
typedef double _Complex GoComplex128;

/*
  static assertion to make sure the file is being used on architecture
  at least with matching size of GoInt.
*/
typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1];

#ifndef GO_CGO_GOSTRING_TYPEDEF
typedef _GoString_ GoString;
#endif
typedef void *GoMap;
typedef void *GoChan;
typedef struct { void *t; void *v; } GoInterface;
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;

#endif

/* End of boilerplate cgo prologue.  */

#ifdef __cplusplus
extern "C" {
#endif


//创建 证书管理器 对象
extern __declspec(dllexport) GoInt CreateCertificate();

//释放 证书管理器 对象
extern __declspec(dllexport) void RemoveCertificate(GoInt Context);

//证书管理器 载入p12证书
extern __declspec(dllexport) GoUint8 LoadP12Certificate(GoInt Context, char* Name, char* Password);

//证书管理器 载入X509证书2
extern __declspec(dllexport) GoUint8 LoadX509KeyPair(GoInt Context, char* Ca_Path, char* KEY_Path);

//证书管理器 载入X509证书1
extern __declspec(dllexport) GoUint8 LoadX509Certificate(GoInt Context, char* Host, char* CA, char* KEY);

//证书管理器 设置跳过主机验证
extern __declspec(dllexport) GoUint8 SetInsecureSkipVerify(GoInt Context, GoUint8 b);

//证书管理器 设置ServerName
extern __declspec(dllexport) GoUint8 SetServerName(GoInt Context, char* name);

//证书管理器 取ServerName
extern __declspec(dllexport) GoUintptr GetServerName(GoInt Context);

//证书管理器 设置信任的证书 从 文件
extern __declspec(dllexport) GoUint8 AddCertPoolPath(GoInt Context, char* cer);

//证书管理器 设置信任的证书 从 文本
extern __declspec(dllexport) GoUint8 AddCertPoolText(GoInt Context, char* cer);

//证书管理器 设置ClientAuth
extern __declspec(dllexport) GoUint8 AddClientAuth(GoInt Context, GoInt val);

//证书管理器 创建证书
extern __declspec(dllexport) GoUint8 CreateCA(GoInt Context, char* Country, char* Organization, char* OrganizationalUnit, char* Province, char* CommonName, char* Locality, GoInt bits, GoInt NotAfter);

//证书管理器 导出证书
extern __declspec(dllexport) GoUintptr ExportCA(GoInt Context);

//证书管理器 导出私钥
extern __declspec(dllexport) GoUintptr ExportKEY(GoInt Context);

//证书管理器 导出公钥
extern __declspec(dllexport) GoUintptr ExportPub(GoInt Context);

//证书管理器 导出为P12
extern __declspec(dllexport) GoUint8 ExportP12(GoInt Context, char* path, char* pass);

// 创建 HTTP 客户端
extern __declspec(dllexport) GoInt CreateHTTPClient();

// 释放 HTTP客户端
extern __declspec(dllexport) void RemoveHTTPClient(GoInt Context);

//  HTTP 客户端 取错误
extern __declspec(dllexport) char* HTTPClientGetErr(GoInt Context);

// HTTP 客户端 Open
extern __declspec(dllexport) void HTTPOpen(GoInt Context, char* mod, char* u);

//  HTTP 客户端 设置协议头
extern __declspec(dllexport) void HTTPSetHeader(GoInt Context, char* name, char* value);

//  HTTP 客户端 设置代理IP 127.0.0.1:8888
extern __declspec(dllexport) void HTTPSetProxyIP(GoInt Context, char* ip);

//  HTTP 客户端 设置代理IP 账号密码
extern __declspec(dllexport) void HTTPSetProxyBasicAuth(GoInt Context, char* u, char* p);

//  HTTP 客户端 设置超时 毫秒
extern __declspec(dllexport) void HTTPSetTimeouts(GoInt Context, GoInt t1, GoInt t2, GoInt t3);

//  HTTP 客户端 发送Body
extern __declspec(dllexport) void HTTPSendBin(GoInt Context, GoUintptr b, GoInt l);

//  HTTP 客户端 返回响应长度
extern __declspec(dllexport) GoInt HTTPGetBodyLen(GoInt Context);

//  HTTP 客户端 返回响应全部Heads
extern __declspec(dllexport) GoUintptr HTTPGetHeads(GoInt Context);

//  HTTP 客户端 返回响应内容
extern __declspec(dllexport) GoUintptr HTTPGetBody(GoInt Context);

//  HTTP 客户端 返回响应状态码
extern __declspec(dllexport) GoInt HTTPGetCode(GoInt Context);

//  HTTP 客户端 设置重定向
extern __declspec(dllexport) GoUint8 HTTPSetRedirect(GoInt Context, GoUint8 Redirect);

//创建队列
extern __declspec(dllexport) void CreateQueue(char* name);

//队列是否为空
extern __declspec(dllexport) GoUint8 QueueIsEmpty(char* name);

//清空销毁队列
extern __declspec(dllexport) void QueueRelease(char* name);

//取队列长度
extern __declspec(dllexport) GoInt QueueLength(char* name);

//加入队列
extern __declspec(dllexport) void QueuePush(char* name, GoUintptr val, GoInt vallen);

//队列弹出
extern __declspec(dllexport) GoUintptr QueuePull(char* name, GoInt* rlen);
extern __declspec(dllexport) GoInt CreateKeys();
extern __declspec(dllexport) void RemoveKeys(GoInt KeysHandle);
extern __declspec(dllexport) void KeysDelete(GoInt KeysHandle, char* name);
extern __declspec(dllexport) GoUintptr KeysRead(GoInt KeysHandle, char* name, GoInt* p);
extern __declspec(dllexport) void KeysWrite(GoInt KeysHandle, char* name, GoUintptr val, GoInt len);
extern __declspec(dllexport) void KeysWriteFloat(GoInt KeysHandle, char* name, GoFloat64 val);
extern __declspec(dllexport) GoFloat64 KeysReadFloat(GoInt KeysHandle, char* name);
extern __declspec(dllexport) void KeysWriteLong(GoInt KeysHandle, char* name, GoInt64 val);
extern __declspec(dllexport) GoInt64 KeysReadLong(GoInt KeysHandle, char* name);
extern __declspec(dllexport) void KeysWriteInt(GoInt KeysHandle, char* name, GoInt val);
extern __declspec(dllexport) GoInt KeysReadInt(GoInt KeysHandle, char* name);
extern __declspec(dllexport) void KeysEmpty(GoInt KeysHandle);
extern __declspec(dllexport) GoInt KeysGetCount(GoInt KeysHandle);
extern __declspec(dllexport) GoUintptr KeysGetJson(GoInt KeysHandle);
extern __declspec(dllexport) void KeysWriteStr(GoInt KeysHandle, char* name, GoUintptr val, GoInt len);

// 创建 TCP客户端
extern __declspec(dllexport) GoInt CreateSocketClient();

// 释放 TCP客户端
extern __declspec(dllexport) void RemoveSocketClient(GoInt Context);

//  TCP客户端 取错误
extern __declspec(dllexport) char* SocketClientGetErr(GoInt Context);

//  TCP客户端 置缓冲区大小
extern __declspec(dllexport) GoUint8 SocketClientSetBufferSize(GoInt Context, GoInt BufferSize);

//  TCP客户端 连接
extern __declspec(dllexport) GoUint8 SocketClientDial(GoInt Context, char* addr, GoInt call, GoUint8 istls, GoUint8 synchronous, char* ProxyIP, char* ProxyUser, char* ProxyPass, GoInt CertificateConText);

//  TCP客户端 同步模式下 接收数据
extern __declspec(dllexport) GoUintptr SocketClientReceive(GoInt Context, GoInt OutTimes, GoInt* len);

//  TCP客户端 断开连接
extern __declspec(dllexport) void SocketClientClose(GoInt Context);

//  TCP客户端 发送数据
extern __declspec(dllexport) GoInt SocketClientWrite(GoInt Context, GoInt OutTimes, GoUintptr val, GoInt vallen);

// 创建 Websocket客户端 对象
extern __declspec(dllexport) GoInt CreateWebsocket();

// 释放 Websocket客户端 对象
extern __declspec(dllexport) void RemoveWebsocket(GoInt Context);

// Websocket客户端 获取错误
extern __declspec(dllexport) char* WebsocketGetErr(GoInt Context);

// Websocket客户端 连接
extern __declspec(dllexport) GoUint8 WebsocketDial(GoInt Context, char* url_, char* head_, GoInt call, GoUint8 synchronous, char* ProxyType, char* ProxyAddr, char* ProxyUser, char* ProxyPass, GoInt CertificateConText);

// Websocket客户端 断开
extern __declspec(dllexport) void WebsocketClose(GoInt Context);

//Websocket客户端  发送数据
extern __declspec(dllexport) GoUint8 WebsocketReadWrite(GoInt Context, GoUintptr val, GoInt vallen, GoInt types);

//Websocket客户端 同步模式下 接收数据 返回数据指针 失败返回0 lenx=返回数据长度
extern __declspec(dllexport) GoUintptr WebsocketClientReceive(GoInt Context, GoInt OutTimes, GoInt* messageType, GoInt* lenx);
extern __declspec(dllexport) void SetRequestHeader(GoInt MessageId, char* name, char* val);
extern __declspec(dllexport) void SetRequestProxy(GoInt MessageId, char* val, char* val1, GoInt out);
extern __declspec(dllexport) GoInt GetResponseStatusCode(GoInt MessageId);
extern __declspec(dllexport) GoUintptr GetRequestClientIp(GoInt MessageId);
extern __declspec(dllexport) char* GetResponseStatus(GoInt MessageId);
extern __declspec(dllexport) void SetResponseStatus(GoInt MessageId, GoInt code);
extern __declspec(dllexport) void DelResponseHeader(GoInt MessageId, char* name);
extern __declspec(dllexport) void DelRequestHeader(GoInt MessageId, char* name);
extern __declspec(dllexport) GoUint8 SetRequestUrl(GoInt MessageId, char* URI);
extern __declspec(dllexport) void SetRequestCookie(GoInt MessageId, char* name, char* val);
extern __declspec(dllexport) void SetRequestAllCookie(GoInt MessageId, char* val);
extern __declspec(dllexport) char* GetRequestHeader(GoInt MessageId, char* name);
extern __declspec(dllexport) void SetResponseHeader(GoInt MessageId, char* name, char* val);
extern __declspec(dllexport) void SetResponseAllHeader(GoInt MessageId, char* value);
extern __declspec(dllexport) char* GetRequestCookie(GoInt MessageId, char* name);
extern __declspec(dllexport) char* GetRequestData(GoInt MessageId);
extern __declspec(dllexport) GoInt SetResponseData(GoInt MessageId, GoUintptr data, GoInt datalen);
extern __declspec(dllexport) void SetIpProxy(char* ip);
extern __declspec(dllexport) void SetIpAuth(char* Auth);
extern __declspec(dllexport) void SetProxyTimeout(GoInt Timeout);
extern __declspec(dllexport) char* GetResponseData(GoInt MessageId);
extern __declspec(dllexport) GoInt GetRequestBodyLen(GoInt MessageId);
extern __declspec(dllexport) GoInt GetResponseBodyLen(GoInt MessageId);
extern __declspec(dllexport) GoInt SetRequestData(GoInt MessageId, GoUintptr data, GoInt datalen);
extern __declspec(dllexport) GoUintptr GetRequestBody(GoInt MessageId);
extern __declspec(dllexport) GoUintptr GetResponseBody(GoInt MessageId);
extern __declspec(dllexport) GoInt GetWebsocketBodyLen(GoInt MessageId);
extern __declspec(dllexport) GoUintptr GetWebsocketBody(GoInt MessageId);
extern __declspec(dllexport) GoUint8 SetWebsocketBody(GoInt MessageId, GoUintptr data, GoInt datalen);
extern __declspec(dllexport) GoUint8 SendWebsocketBody(GoInt MessageId, GoInt MessageTpye, GoUintptr data, GoInt datalen);
extern __declspec(dllexport) char* GetRequestALLCookie(GoInt MessageId);
extern __declspec(dllexport) char* GetResponseAllHeader(GoInt MessageId);
extern __declspec(dllexport) char* GetResponseHeader(GoInt MessageId, char* name);
extern __declspec(dllexport) char* GetRequestAllHeader(GoInt MessageId);
extern __declspec(dllexport) GoUint8 SetTcpBody(GoInt MessageId, GoInt MsgType, GoUintptr data, GoInt datalen);
extern __declspec(dllexport) GoUint8 SetTcpAgent(GoInt MessageId, char* ip, char* user, char* pass);
extern __declspec(dllexport) GoUint8 TcpCloseClient(GoInt Theonly);
extern __declspec(dllexport) GoUint8 SetTcpConnectionIP(GoInt MessageId, char* data);
extern __declspec(dllexport) GoInt TcpSendMsg(GoInt MessageId, GoUintptr data, GoInt datalen);
extern __declspec(dllexport) GoInt TcpSendMsgClient(GoInt MessageId, GoUintptr data, GoInt datalen);
extern __declspec(dllexport) void SetCa(GoInt ca);
extern __declspec(dllexport) char* HexDump(GoUintptr data, GoInt datalen);
extern __declspec(dllexport) char* Geterr();
extern __declspec(dllexport) GoUint8 SetIeProxy(GoUint8 del);
extern __declspec(dllexport) GoUint8 PInit(GoInt port, GoInt _callback, GoInt IsInstall, GoInt SetIEproxy);
extern __declspec(dllexport) void OpenTcp(GoInt s);
extern __declspec(dllexport) void Stop();
extern __declspec(dllexport) GoUintptr BrUnCompress(GoUintptr val, GoInt vallen);
extern __declspec(dllexport) GoUintptr GzipUnCompress(GoUintptr val, GoInt vallen);
extern __declspec(dllexport) GoUintptr DeflateUnCompress(GoUintptr val, GoInt vallen);
extern __declspec(dllexport) GoInt BytesToInt(GoUintptr val, GoInt vallen);
extern __declspec(dllexport) void Cfree(GoUintptr s);
extern __declspec(dllexport) GoUint8 StartProcess();
extern __declspec(dllexport) GoUint8 ProcessAddPID(GoInt s);
extern __declspec(dllexport) GoUint8 ProcessStart();
extern __declspec(dllexport) GoUint8 ProcessCancelAll();
extern __declspec(dllexport) GoUint8 ProcessDelPID(GoInt s);
extern __declspec(dllexport) void DelP12Certificate(char* HostName);
extern __declspec(dllexport) GoUint8 AddP12Certificate(char* HostName, char* privateKeyName, char* privatePassword, GoInt cerType);
extern __declspec(dllexport) GoUint8 WebpToPng(char* webpPath, char* savePath);
extern __declspec(dllexport) GoUint8 WebpToJpeg(char* webpPath, char* savePath, GoInt SaveQuality);
extern __declspec(dllexport) GoUintptr WebpToPngBytes(GoUintptr val, GoInt vallen);
extern __declspec(dllexport) GoUintptr WebpToJpegBytes(GoUintptr val, GoInt vallen, GoInt SaveQuality);
extern __declspec(dllexport) void MustTcp(GoUint8 i);
extern __declspec(dllexport) void VerifyUser(GoUint8 i);
extern __declspec(dllexport) GoUint8 AddVerifyUser(char* u, char* p);
extern __declspec(dllexport) GoUint8 DelVerifyUser(char* u);
extern __declspec(dllexport) GoUintptr ScriptCall(GoInt i, char* Request);
extern __declspec(dllexport) void SetScript(char* Request);
extern __declspec(dllexport) void SetScriptLogCallAddress(GoInt i);

//适配火山PC CALL 火山直接CALL X64没有问题，X86环境下有问题，所以搞了这个命令
extern __declspec(dllexport) GoInt GoCall(GoInt arrd, GoInt a1, GoInt a2, GoInt a3, GoInt a4, GoInt a5, GoInt a6, GoInt a7, GoInt a8, GoInt a9);

#ifdef __cplusplus
}
#endif
