调整目录,添加依赖

This commit is contained in:
baidwwy 2021-03-19 14:20:54 +08:00
parent b7d6350a41
commit d340c6165e
918 changed files with 10039 additions and 149382 deletions

9
.gitignore vendored
View File

@ -1,9 +1,2 @@
/library
/R32
/3rd
ReleaseConsole
Release
Debug
dependent/library
.vs
*.exe
*.dll

3
GGELUA/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
/Release32
/Debug64
/Debug32

View File

@ -20,9 +20,9 @@ local cjson = require("cjson.safe")
local cmsgpack = require("cmsgpack.safe")
function 复制文件(old,new)
local rf<close> = io.open(utf8toansi(old),"rb")
local rf<close> = io.open(old,"rb")
if rf then
local wf<close> = io.open(utf8toansi(new),"wb")
local wf<close> = io.open(new,"wb")
if wf then
wf:write(rf:read("a"))
return true
@ -32,14 +32,14 @@ function 复制文件(old,new)
end
function 读取文件(path)
local file<close> = io.open(utf8toansi(path), 'rb');
local file<close> = io.open(path, 'rb');
if file then
return file:read('a')
end
end
function 写出文件(path,data)
local file<close> = io.open(utf8toansi(path),"wb")
local file<close> = io.open(path,"wb")
if file then
file:write(data)
return true
@ -48,7 +48,6 @@ function 写出文件(path,data)
end
function 遍历目录(path)
path = utf8toansi(path)
local dir,u = lfs.dir(path)
local pt = {}
return function ()
@ -63,7 +62,7 @@ function 遍历目录(path)
end
file = "."
else
return ansitoutf8(f)
return f
end
elseif pt[1] then
path = table.remove(pt, 1)

View File

@ -0,0 +1,5 @@
--[[
@Author : baidwwy
@Date : 2021-03-16 19:08:27
@LastEditTime : 2021-03-16 19:08:28
--]]

View File

@ -1,8 +1,9 @@
--[[
@Author : baidwwy
@Date : 2021-02-08 15:51:24
@LastEditTime : 2021-02-10 18:07:16
@LastEditTime : 2021-03-19 07:58:00
--]]
require("GGE")
local SDL = require("SDL")
= require"SDL.窗口"{
= _VERSION.."|".._GGEVERSION,
@ -11,6 +12,12 @@ local SDL = require("SDL")
= 60,
}
jpg = require("SDL.精灵")("实例/测试/test.jpg")
bmp = require("SDL.精灵")("实例/测试/test.bmp")
png = require("SDL.精灵")("实例/测试/test.png")
print(jpg)
print(bmp)
print(png)
function 引擎:启动事件(webp1,webp2)
local base64 = require("base64")
local data = base64.decode(webp1)

View File

@ -0,0 +1,184 @@
{
"folders": [
{
"path": "./GUI"
},
{
"path": "../lua",
"name": "GGELUA"
}
],
"settings": {
"fileheader.customMade": {
"Author":"GGELUA",//作者名称
"Date": "Do not edit", // 设置后默认设置文件生成时间
"LastEditTime": "Do not edit", // 设置后,保存文件更改默认更新最后编辑时间
},
"Lua.diagnostics.disable": [
"lowercase-global",
"unused-local",
"undefined-global",
"undefined-env-child",
"unbalanced-assignments",
"trailing-space"
],
"Lua.runtime.unicodeName": true,
},
"launch": {
"configurations": [
{
"name": "Debug GGELUA",
"type": "lua-local",
"request": "launch",
"program": {
"command": "${execPath}/../../../ggelua.exe"
},
"args": ["${fileWorkspaceFolder}"],
"cwd": "${fileWorkspaceFolder}"
}
]
},
"tasks": {
"version": "2.0.0",
"tasks": [
{
"label": "ggebuild",
"type": "shell",
"command": "${execPath}/../../../lua.exe",
"args": [
"${execPath}/../../../build.lua",
"${workspaceFolder}",
],
"windows": {
"options": {
"shell": {
"executable": "cmd.exe",
"args": [
"/c",
"chcp 65001 &&"
]
}
}
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": false,
"clear": true
},
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": {
"owner": "lua",
"fileLocation": [
"autoDetect",
"${workspaceFolder}"
],
"pattern": {
"regexp": "^\\s*[\\S]*\\s*\"?(.*?)[\"\\]]*:(\\d+):\\s*(.*)$",
"file": 1,
"line": 2,
"message": 3
}
}
},
{
"label": "ggerun",
"type": "shell",
"command": "${execPath}/../../../GGELUAc.exe",
"args": [
"${workspaceFolder}"
],
"windows": {
"options": {
"shell": {
"executable": "cmd.exe",
"args": ["/c"]
}
}
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": false,
"clear": true
},
"problemMatcher": {
"owner": "lua",
"fileLocation": [
"autoDetect",
"${workspaceFolder}"
],
"pattern": {
"regexp": "^\\s*[\\S]*\\s*\"?(.*?)[\"\\]]*:(\\d+):\\s*(.*)$",
"file": 1,
"line": 2,
"message": 3
}
}
},
{
"label": "lua",
"type": "shell",
"command": "${execPath}/../../../lua.exe",
"args": [
"${file}",
"${workspaceFolder}"
],
"windows": {
"options": {
"shell": {
"executable": "cmd.exe",
"args": [
"/c",
"chcp 65001 &&"
]
}
}
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": false,
"clear": true
},
"problemMatcher": {
"owner": "lua",
"fileLocation": [
"autoDetect",
"${workspaceFolder}"
],
"pattern": {
"regexp": "^\\s*[\\S]*\\s*\"?(.*?)[\"\\]]*:(\\d+):\\s*(.*)$",
"file": 1,
"line": 2,
"message": 3
}
}
}
]
},
"ggelua":{
"type":"ggelua",
"script":[
"lua"
],
"library":[
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 KiB

View File

@ -0,0 +1,66 @@
--[[
@Author : GGELUA
@Date : 2019-06-23 12:24:23
@LastEditTime : 2021-02-10 18:21:10
--]]
local SDL = require("SDL")
= require"SDL.窗口"{
= "GGELUA",
= 800,
= 600,
= 60,
}
local GUI = require("GUI")
local test = GUI.('test')
local = test:("输入",10,10,230,16)
function 输入:初始化()
--self:置限制字数(16)
self:("test")
--self:置模式(self.英文模式|self.数字模式)
self:(true)
end
local 2 = test:("输入2",10,30,230,16)
function 输入2:初始化()
self:("test2")
end
test:(true,true)
img = require("SDL.精灵")("img0.jpg")
function 引擎:更新事件(dt,x,y)
GUI.(dt,x,y)
end
function 引擎:渲染事件(dt,x,y)
self:(0,0,0)
img:(-300,-300)
GUI.(x,y)
self:()
end
function 引擎:键盘事件(,,)
if =='弹起' then
if ==SDL.SDLK_F1 then
elseif ==SDL.SDLK_F2 then
end
end
end
function 引擎:窗口事件()
if ==SDL._关闭 then
:()
end
end
function 引擎:销毁事件()
end
function 引擎:错误事件()
end
:()

View File

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View File

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@ -0,0 +1,184 @@
{
"folders": [
{
"path": "./mongo"
},
{
"path": "../lua",
"name": "GGELUA"
}
],
"settings": {
"fileheader.customMade": {
"Author":"GGELUA",//作者名称
"Date": "Do not edit", // 设置后默认设置文件生成时间
"LastEditTime": "Do not edit", // 设置后,保存文件更改默认更新最后编辑时间
},
"Lua.diagnostics.disable": [
"lowercase-global",
"unused-local",
"undefined-global",
"undefined-env-child",
"unbalanced-assignments",
"trailing-space"
],
"Lua.runtime.unicodeName": true,
},
"launch": {
"configurations": [
{
"name": "Debug GGELUA",
"type": "lua-local",
"request": "launch",
"program": {
"command": "${execPath}/../../../ggelua.exe"
},
"args": ["${fileWorkspaceFolder}"],
"cwd": "${fileWorkspaceFolder}"
}
]
},
"tasks": {
"version": "2.0.0",
"tasks": [
{
"label": "ggebuild",
"type": "shell",
"command": "${execPath}/../../../lua.exe",
"args": [
"${execPath}/../../../build.lua",
"${workspaceFolder}"
],
"windows": {
"options": {
"shell": {
"executable": "cmd.exe",
"args": [
"/c",
"chcp 65001 &&"
]
}
}
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": false,
"clear": true
},
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": {
"owner": "lua",
"fileLocation": [
"autoDetect",
"${workspaceFolder}"
],
"pattern": {
"regexp": "^\\s*[\\S]*\\s*\"?(.*?)[\"\\]]*:(\\d+):\\s*(.*)$",
"file": 1,
"line": 2,
"message": 3
}
}
},
{
"label": "ggerun",
"type": "shell",
"command": "${execPath}/../../../GGELUAc.exe",
"args": [
"${workspaceFolder}"
],
"windows": {
"options": {
"shell": {
"executable": "cmd.exe",
"args": [
"/c"
]
}
}
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": false,
"clear": true
},
"problemMatcher": {
"owner": "lua",
"fileLocation": [
"autoDetect",
"${workspaceFolder}"
],
"pattern": {
"regexp": "^\\s*[\\S]*\\s*\"?(.*?)[\"\\]]*:(\\d+):\\s*(.*)$",
"file": 1,
"line": 2,
"message": 3
}
}
},
{
"label": "lua",
"type": "shell",
"command": "${execPath}/../../../lua.exe",
"args": [
"${file}",
"${workspaceFolder}"
],
"windows": {
"options": {
"shell": {
"executable": "cmd.exe",
"args": [
"/c",
"chcp 65001 &&"
]
}
}
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": false,
"clear": true
},
"problemMatcher": {
"owner": "lua",
"fileLocation": [
"autoDetect",
"${workspaceFolder}"
],
"pattern": {
"regexp": "^\\s*[\\S]*\\s*\"?(.*?)[\"\\]]*:(\\d+):\\s*(.*)$",
"file": 1,
"line": 2,
"message": 3
}
}
}
]
},
"ggelua":{
"type":"ggelua",
"script":[
"lua"
],
"library":[
]
}
}

View File

@ -0,0 +1,52 @@
--[[
@Author : GGELUA
@Date : 2019-06-23 12:24:23
@LastEditTime : 2021-02-25 03:58:29
--]]
local SDL = require("SDL")
= require"SDL.窗口"{
= "GGELUA",
= 800,
= 600,
= 60,
}
require("test")
function 引擎:更新事件(dt,x,y)
end
function 引擎:渲染事件(dt,x,y)
self:(0x70,0x70,0x70)
self:()
end
function 引擎:键盘事件(,,)
if =='弹起' then
if ==SDL.SDLK_F1 then
elseif ==SDL.SDLK_F2 then
end
end
print(,,)
end
function 引擎:窗口事件()
if ==SDL._关闭 then
:()
end
end
function 引擎:销毁事件()
end
function 引擎:错误事件()
end
:()

View File

@ -0,0 +1,61 @@
--[[
@Author : GGELUA
@Date : 2021-02-23 14:33:10
@LastEditTime : 2021-03-05 12:59:32
--]]
local mongo = require("LIB.MongoDB")
local mg = mongo('mongodb://root:123456@127.0.0.1:27017')
local db = mg:('ggelua')
if not db:('test') then
db:('test')
--用表创建索引
local r = mg:('ggelua', {
createIndexes="test",
indexes={
__array = true,--说明这是数组
{
key={=1},
name="名称_1",
unique= true
}
}
})
--用JSON创建
-- local r = mg:命令('ggelua', [[
-- {
-- "createIndexes": "test",
-- "indexes": [
-- {
-- "key": {
-- "名称": 1
-- },
-- "name": "名称1",
-- "unique": true
-- }
-- ]
-- }
-- ]])
end
local col = db:('test')
col:()
local id = mongo.ObjectID()
print(tostring(id),id:hash(),type(mongo.ObjectID(tostring(id))))
local query1 = mongo.BSON('{ "age" : { "$gt" : 25 } }')
local query2 = mongo.BSON{_id = id}
local ={
_id = mongo.ObjectID(),
uid = 0 , id = 0 , = 123 ,
="555" , ="" ,
={__array = true,1,2,3}
}
ret = col:()
for person in col:{} do
print(person._id,person.uid)
end
print(col:{ ="555"}.)

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

View File

@ -3,55 +3,107 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30907.101
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GGELUA", "app\ggelua\GGELUA.vcxproj", "{B2301BEF-1ED1-4724-BE1F-4BEEA697227A}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GGELUA", "project\windows\app\ggelua\GGELUA.vcxproj", "{B2301BEF-1ED1-4724-BE1F-4BEEA697227A}"
ProjectSection(ProjectDependencies) = postProject
{0241464B-2C21-4608-87F8-9994FC4A3CFB} = {0241464B-2C21-4608-87F8-9994FC4A3CFB}
{4F7B97F6-1B8F-416C-A987-8DBA9B105F5D} = {4F7B97F6-1B8F-416C-A987-8DBA9B105F5D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua54", "luadll\luadll.vcxproj", "{0FFA55D6-C072-4BA9-A5EA-F08CFFE7D641}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua54", "project\windows\lua\lua.vcxproj", "{0FFA55D6-C072-4BA9-A5EA-F08CFFE7D641}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua", "app\lua\lua.vcxproj", "{C6F3EA4C-9DB9-4FF8-8A89-75A5D9821277}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua", "project\windows\app\lua\lua.vcxproj", "{C6F3EA4C-9DB9-4FF8-8A89-75A5D9821277}"
ProjectSection(ProjectDependencies) = postProject
{0FFA55D6-C072-4BA9-A5EA-F08CFFE7D641} = {0FFA55D6-C072-4BA9-A5EA-F08CFFE7D641}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lib", "lib", "{8286A76F-269C-4C17-B8AE-240AFCC1A0BC}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsdl2", "lib\gsdl2\luasdl2.vcxproj", "{0241464B-2C21-4608-87F8-9994FC4A3CFB}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsdl2", "project\windows\lib\gsdl2\luasdl2.vcxproj", "{0241464B-2C21-4608-87F8-9994FC4A3CFB}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cjson", "lib\cjson\cjson.vcxproj", "{7792900A-4950-4E0B-9C34-A3449C6654E7}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cjson", "project\windows\lib\cjson\cjson.vcxproj", "{7792900A-4950-4E0B-9C34-A3449C6654E7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gastar", "lib\gastar\gastar.vcxproj", "{37915959-E023-426D-9B00-BAD16A28AB93}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gastar", "project\windows\lib\gastar\gastar.vcxproj", "{37915959-E023-426D-9B00-BAD16A28AB93}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gffmpeg", "lib\gffmpeg\gffmpeg.vcxproj", "{922C9ED2-4D11-47AF-A355-1AD5918BD20C}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gffmpeg", "project\windows\lib\gffmpeg\gffmpeg.vcxproj", "{922C9ED2-4D11-47AF-A355-1AD5918BD20C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ggelua", "lib\ggelua\ggelua.vcxproj", "{4F7B97F6-1B8F-416C-A987-8DBA9B105F5D}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ggelua", "project\windows\lib\ggelua\ggelua.vcxproj", "{4F7B97F6-1B8F-416C-A987-8DBA9B105F5D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ghpsocket", "lib\ghpsocket\ghpsocket.vcxproj", "{C14F7B4B-9E35-409B-8956-0EFA2347104D}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ghpsocket", "project\windows\lib\ghpsocket\ghpsocket.vcxproj", "{C14F7B4B-9E35-409B-8956-0EFA2347104D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gimgui", "lib\gimgui\gimgui.vcxproj", "{60C0F067-F9C9-4ABF-91E2-C18F90CA72A1}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gimgui", "project\windows\lib\gimgui\gimgui.vcxproj", "{60C0F067-F9C9-4ABF-91E2-C18F90CA72A1}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gip", "lib\gip\gip.vcxproj", "{BFB843F9-988D-4CA4-9293-0591CE825112}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gip", "project\windows\lib\gip\gip.vcxproj", "{BFB843F9-988D-4CA4-9293-0591CE825112}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "socket", "lib\socket\socket.vcxproj", "{2E2EBA37-6D73-40E2-89E3-A003B3156CA0}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "socket", "project\windows\lib\socket\socket.vcxproj", "{2E2EBA37-6D73-40E2-89E3-A003B3156CA0}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lsqlite3", "lib\lsqlite3\lsqlite3.vcxproj", "{964A0E35-BBA0-450D-BAE7-1D35EB21FD1C}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lsqlite3", "project\windows\lib\lsqlite3\lsqlite3.vcxproj", "{964A0E35-BBA0-450D-BAE7-1D35EB21FD1C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "luasql", "lib\luasql\luasql.vcxproj", "{93E531F7-A0B3-4DAE-9191-8B37A038731C}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "luasql", "project\windows\lib\luasql\luasql.vcxproj", "{93E531F7-A0B3-4DAE-9191-8B37A038731C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lzmq", "lib\lzmq\lzmq.vcxproj", "{F0586B55-BD50-4E58-89A8-D957D941B4D7}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lzmq", "project\windows\lib\lzmq\lzmq.vcxproj", "{F0586B55-BD50-4E58-89A8-D957D941B4D7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mongo", "lib\mongo\lua-mongo.vcxproj", "{E0E8A6E0-EC75-4078-8ED9-35A72C39444C}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mongo", "project\windows\lib\mongo\lua-mongo.vcxproj", "{E0E8A6E0-EC75-4078-8ED9-35A72C39444C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "app", "app", "{178D2820-C8AE-4894-82A5-454A43F7AD21}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dep", "dep", "{8B78C654-0550-43A0-B0B0-82304584AB3F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GGELUAc", "project\windows\app\ggeluac\GGELUAc.vcxproj", "{DD376932-B4BA-4C44-A146-C2E39A22F56D}"
ProjectSection(ProjectDependencies) = postProject
{0241464B-2C21-4608-87F8-9994FC4A3CFB} = {0241464B-2C21-4608-87F8-9994FC4A3CFB}
{4F7B97F6-1B8F-416C-A987-8DBA9B105F5D} = {4F7B97F6-1B8F-416C-A987-8DBA9B105F5D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "project\windows\dep\zlib\zlib.vcxproj", "{5FCA3894-FEB8-4C7F-B5FA-BAFF2E69F619}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite3", "project\windows\dep\sqlite3\sqlite3.vcxproj", "{50D338F5-BC93-B42B-85CE-FDA8F14DF907}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2", "project\windows\dep\SDL\SDL.vcxproj", "{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2main", "project\windows\dep\SDLmain\SDLmain.vcxproj", "{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HPSocketLIB4C", "project\windows\dep\HPSocket\HPSocketLIB4C.vcxproj", "{54E670E2-9A44-4816-B4A4-1EC2C8F248AF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL_image", "project\windows\dep\SDL_image\SDL_image.vcxproj", "{2BD5534E-00E2-4BEA-AC96-D9A92EA24696}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2_mixer", "project\windows\dep\SDL_mixer\SDL_mixer.vcxproj", "{F7E944B3-0815-40CD-B3E4-90B2A15B0E33}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL_ttf", "project\windows\dep\SDL_ttf\SDL_ttf.vcxproj", "{DDDBD07D-DC76-4AF6-8D02-3E2DEB6EE255}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjpeg", "project\windows\dep\libjpeg\libjpeg.vcxproj", "{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "image", "image", "{C9B5FF09-339F-46B2-BEE1-4704283CEFAC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "mixer", "mixer", "{43E7C20B-0BE5-4774-930A-B875BB50A587}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ttf", "ttf", "{4C3F0F90-CB04-4AC3-B49A-AD8CE115AC2A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "project\windows\dep\libpng\libpng.vcxproj", "{D6973076-9317-4EF2-A0B8-B7A18AC0713E}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libFLAC", "project\windows\dep\libflac\libFLAC.vcxproj", "{4CEFBC84-C215-11DB-8314-0800200C9A66}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "native_midi", "project\windows\dep\native_midi\native_midi.vcxproj", "{EBDA67CA-4A23-4F22-BFBC-B8DBE0580D4F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timidity", "project\windows\dep\timidity\timidity.vcxproj", "{B162B6F1-E876-4D5F-A1F6-E3A6DC2F4A2C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libogg", "project\windows\dep\libogg\libogg.vcxproj", "{15CBFEFF-7965-41F5-B4E2-21E8795C9159}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvorbisfile", "project\windows\dep\libvorbisfile\libvorbisfile.vcxproj", "{CEBDE98B-A6AA-46E6-BC79-FAAF823DB9EC}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvorbis", "project\windows\dep\libvorbis\libvorbis.vcxproj", "{3A214E06-B95E-4D61-A291-1F8DF2EC10FD}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmpg123", "project\windows\dep\libmpg123\libmpg123.vcxproj", "{67CAA87B-7CF1-4F93-BB67-21C513F40803}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "project\windows\dep\freetype\freetype.vcxproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libwebp", "project\windows\dep\libwebp\libwebp.vcxproj", "{EA1D1B51-F067-3C93-8F54-669095725F4B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
ReleaseConsole|Win32 = ReleaseConsole|Win32
ReleaseConsole|x64 = ReleaseConsole|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B2301BEF-1ED1-4724-BE1F-4BEEA697227A}.Debug|Win32.ActiveCfg = Debug|Win32
@ -62,10 +114,6 @@ Global
{B2301BEF-1ED1-4724-BE1F-4BEEA697227A}.Release|Win32.Build.0 = Release|Win32
{B2301BEF-1ED1-4724-BE1F-4BEEA697227A}.Release|x64.ActiveCfg = Release|x64
{B2301BEF-1ED1-4724-BE1F-4BEEA697227A}.Release|x64.Build.0 = Release|x64
{B2301BEF-1ED1-4724-BE1F-4BEEA697227A}.ReleaseConsole|Win32.ActiveCfg = ReleaseConsole|Win32
{B2301BEF-1ED1-4724-BE1F-4BEEA697227A}.ReleaseConsole|Win32.Build.0 = ReleaseConsole|Win32
{B2301BEF-1ED1-4724-BE1F-4BEEA697227A}.ReleaseConsole|x64.ActiveCfg = ReleaseConsole|x64
{B2301BEF-1ED1-4724-BE1F-4BEEA697227A}.ReleaseConsole|x64.Build.0 = ReleaseConsole|x64
{0FFA55D6-C072-4BA9-A5EA-F08CFFE7D641}.Debug|Win32.ActiveCfg = Debug|Win32
{0FFA55D6-C072-4BA9-A5EA-F08CFFE7D641}.Debug|Win32.Build.0 = Debug|Win32
{0FFA55D6-C072-4BA9-A5EA-F08CFFE7D641}.Debug|x64.ActiveCfg = Debug|x64
@ -74,9 +122,6 @@ Global
{0FFA55D6-C072-4BA9-A5EA-F08CFFE7D641}.Release|Win32.Build.0 = Release|Win32
{0FFA55D6-C072-4BA9-A5EA-F08CFFE7D641}.Release|x64.ActiveCfg = Release|x64
{0FFA55D6-C072-4BA9-A5EA-F08CFFE7D641}.Release|x64.Build.0 = Release|x64
{0FFA55D6-C072-4BA9-A5EA-F08CFFE7D641}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{0FFA55D6-C072-4BA9-A5EA-F08CFFE7D641}.ReleaseConsole|x64.ActiveCfg = Release|x64
{0FFA55D6-C072-4BA9-A5EA-F08CFFE7D641}.ReleaseConsole|x64.Build.0 = Release|x64
{C6F3EA4C-9DB9-4FF8-8A89-75A5D9821277}.Debug|Win32.ActiveCfg = Debug|Win32
{C6F3EA4C-9DB9-4FF8-8A89-75A5D9821277}.Debug|Win32.Build.0 = Debug|Win32
{C6F3EA4C-9DB9-4FF8-8A89-75A5D9821277}.Debug|x64.ActiveCfg = Debug|x64
@ -85,10 +130,6 @@ Global
{C6F3EA4C-9DB9-4FF8-8A89-75A5D9821277}.Release|Win32.Build.0 = Release|Win32
{C6F3EA4C-9DB9-4FF8-8A89-75A5D9821277}.Release|x64.ActiveCfg = Release|x64
{C6F3EA4C-9DB9-4FF8-8A89-75A5D9821277}.Release|x64.Build.0 = Release|x64
{C6F3EA4C-9DB9-4FF8-8A89-75A5D9821277}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{C6F3EA4C-9DB9-4FF8-8A89-75A5D9821277}.ReleaseConsole|Win32.Build.0 = Release|Win32
{C6F3EA4C-9DB9-4FF8-8A89-75A5D9821277}.ReleaseConsole|x64.ActiveCfg = Release|x64
{C6F3EA4C-9DB9-4FF8-8A89-75A5D9821277}.ReleaseConsole|x64.Build.0 = Release|x64
{0241464B-2C21-4608-87F8-9994FC4A3CFB}.Debug|Win32.ActiveCfg = Debug|Win32
{0241464B-2C21-4608-87F8-9994FC4A3CFB}.Debug|Win32.Build.0 = Debug|Win32
{0241464B-2C21-4608-87F8-9994FC4A3CFB}.Debug|x64.ActiveCfg = Debug|x64
@ -97,10 +138,6 @@ Global
{0241464B-2C21-4608-87F8-9994FC4A3CFB}.Release|Win32.Build.0 = Release|Win32
{0241464B-2C21-4608-87F8-9994FC4A3CFB}.Release|x64.ActiveCfg = Release|x64
{0241464B-2C21-4608-87F8-9994FC4A3CFB}.Release|x64.Build.0 = Release|x64
{0241464B-2C21-4608-87F8-9994FC4A3CFB}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{0241464B-2C21-4608-87F8-9994FC4A3CFB}.ReleaseConsole|Win32.Build.0 = Release|Win32
{0241464B-2C21-4608-87F8-9994FC4A3CFB}.ReleaseConsole|x64.ActiveCfg = Release|x64
{0241464B-2C21-4608-87F8-9994FC4A3CFB}.ReleaseConsole|x64.Build.0 = Release|x64
{7792900A-4950-4E0B-9C34-A3449C6654E7}.Debug|Win32.ActiveCfg = Debug|Win32
{7792900A-4950-4E0B-9C34-A3449C6654E7}.Debug|Win32.Build.0 = Debug|Win32
{7792900A-4950-4E0B-9C34-A3449C6654E7}.Debug|x64.ActiveCfg = Debug|x64
@ -109,10 +146,6 @@ Global
{7792900A-4950-4E0B-9C34-A3449C6654E7}.Release|Win32.Build.0 = Release|Win32
{7792900A-4950-4E0B-9C34-A3449C6654E7}.Release|x64.ActiveCfg = Release|x64
{7792900A-4950-4E0B-9C34-A3449C6654E7}.Release|x64.Build.0 = Release|x64
{7792900A-4950-4E0B-9C34-A3449C6654E7}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{7792900A-4950-4E0B-9C34-A3449C6654E7}.ReleaseConsole|Win32.Build.0 = Release|Win32
{7792900A-4950-4E0B-9C34-A3449C6654E7}.ReleaseConsole|x64.ActiveCfg = Release|x64
{7792900A-4950-4E0B-9C34-A3449C6654E7}.ReleaseConsole|x64.Build.0 = Release|x64
{37915959-E023-426D-9B00-BAD16A28AB93}.Debug|Win32.ActiveCfg = Debug|Win32
{37915959-E023-426D-9B00-BAD16A28AB93}.Debug|Win32.Build.0 = Debug|Win32
{37915959-E023-426D-9B00-BAD16A28AB93}.Debug|x64.ActiveCfg = Debug|x64
@ -121,10 +154,6 @@ Global
{37915959-E023-426D-9B00-BAD16A28AB93}.Release|Win32.Build.0 = Release|Win32
{37915959-E023-426D-9B00-BAD16A28AB93}.Release|x64.ActiveCfg = Release|x64
{37915959-E023-426D-9B00-BAD16A28AB93}.Release|x64.Build.0 = Release|x64
{37915959-E023-426D-9B00-BAD16A28AB93}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{37915959-E023-426D-9B00-BAD16A28AB93}.ReleaseConsole|Win32.Build.0 = Release|Win32
{37915959-E023-426D-9B00-BAD16A28AB93}.ReleaseConsole|x64.ActiveCfg = Release|x64
{37915959-E023-426D-9B00-BAD16A28AB93}.ReleaseConsole|x64.Build.0 = Release|x64
{922C9ED2-4D11-47AF-A355-1AD5918BD20C}.Debug|Win32.ActiveCfg = Debug|Win32
{922C9ED2-4D11-47AF-A355-1AD5918BD20C}.Debug|Win32.Build.0 = Debug|Win32
{922C9ED2-4D11-47AF-A355-1AD5918BD20C}.Debug|x64.ActiveCfg = Debug|x64
@ -133,10 +162,6 @@ Global
{922C9ED2-4D11-47AF-A355-1AD5918BD20C}.Release|Win32.Build.0 = Release|Win32
{922C9ED2-4D11-47AF-A355-1AD5918BD20C}.Release|x64.ActiveCfg = Release|x64
{922C9ED2-4D11-47AF-A355-1AD5918BD20C}.Release|x64.Build.0 = Release|x64
{922C9ED2-4D11-47AF-A355-1AD5918BD20C}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{922C9ED2-4D11-47AF-A355-1AD5918BD20C}.ReleaseConsole|Win32.Build.0 = Release|Win32
{922C9ED2-4D11-47AF-A355-1AD5918BD20C}.ReleaseConsole|x64.ActiveCfg = Release|x64
{922C9ED2-4D11-47AF-A355-1AD5918BD20C}.ReleaseConsole|x64.Build.0 = Release|x64
{4F7B97F6-1B8F-416C-A987-8DBA9B105F5D}.Debug|Win32.ActiveCfg = Debug|Win32
{4F7B97F6-1B8F-416C-A987-8DBA9B105F5D}.Debug|Win32.Build.0 = Debug|Win32
{4F7B97F6-1B8F-416C-A987-8DBA9B105F5D}.Debug|x64.ActiveCfg = Debug|x64
@ -145,10 +170,6 @@ Global
{4F7B97F6-1B8F-416C-A987-8DBA9B105F5D}.Release|Win32.Build.0 = Release|Win32
{4F7B97F6-1B8F-416C-A987-8DBA9B105F5D}.Release|x64.ActiveCfg = Release|x64
{4F7B97F6-1B8F-416C-A987-8DBA9B105F5D}.Release|x64.Build.0 = Release|x64
{4F7B97F6-1B8F-416C-A987-8DBA9B105F5D}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{4F7B97F6-1B8F-416C-A987-8DBA9B105F5D}.ReleaseConsole|Win32.Build.0 = Release|Win32
{4F7B97F6-1B8F-416C-A987-8DBA9B105F5D}.ReleaseConsole|x64.ActiveCfg = Release|x64
{4F7B97F6-1B8F-416C-A987-8DBA9B105F5D}.ReleaseConsole|x64.Build.0 = Release|x64
{C14F7B4B-9E35-409B-8956-0EFA2347104D}.Debug|Win32.ActiveCfg = Debug|Win32
{C14F7B4B-9E35-409B-8956-0EFA2347104D}.Debug|Win32.Build.0 = Debug|Win32
{C14F7B4B-9E35-409B-8956-0EFA2347104D}.Debug|x64.ActiveCfg = Debug|x64
@ -157,10 +178,6 @@ Global
{C14F7B4B-9E35-409B-8956-0EFA2347104D}.Release|Win32.Build.0 = Release|Win32
{C14F7B4B-9E35-409B-8956-0EFA2347104D}.Release|x64.ActiveCfg = Release|x64
{C14F7B4B-9E35-409B-8956-0EFA2347104D}.Release|x64.Build.0 = Release|x64
{C14F7B4B-9E35-409B-8956-0EFA2347104D}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{C14F7B4B-9E35-409B-8956-0EFA2347104D}.ReleaseConsole|Win32.Build.0 = Release|Win32
{C14F7B4B-9E35-409B-8956-0EFA2347104D}.ReleaseConsole|x64.ActiveCfg = Release|x64
{C14F7B4B-9E35-409B-8956-0EFA2347104D}.ReleaseConsole|x64.Build.0 = Release|x64
{60C0F067-F9C9-4ABF-91E2-C18F90CA72A1}.Debug|Win32.ActiveCfg = Debug|Win32
{60C0F067-F9C9-4ABF-91E2-C18F90CA72A1}.Debug|Win32.Build.0 = Debug|Win32
{60C0F067-F9C9-4ABF-91E2-C18F90CA72A1}.Debug|x64.ActiveCfg = Debug|x64
@ -169,10 +186,6 @@ Global
{60C0F067-F9C9-4ABF-91E2-C18F90CA72A1}.Release|Win32.Build.0 = Release|Win32
{60C0F067-F9C9-4ABF-91E2-C18F90CA72A1}.Release|x64.ActiveCfg = Release|x64
{60C0F067-F9C9-4ABF-91E2-C18F90CA72A1}.Release|x64.Build.0 = Release|x64
{60C0F067-F9C9-4ABF-91E2-C18F90CA72A1}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{60C0F067-F9C9-4ABF-91E2-C18F90CA72A1}.ReleaseConsole|Win32.Build.0 = Release|Win32
{60C0F067-F9C9-4ABF-91E2-C18F90CA72A1}.ReleaseConsole|x64.ActiveCfg = Release|x64
{60C0F067-F9C9-4ABF-91E2-C18F90CA72A1}.ReleaseConsole|x64.Build.0 = Release|x64
{BFB843F9-988D-4CA4-9293-0591CE825112}.Debug|Win32.ActiveCfg = Debug|Win32
{BFB843F9-988D-4CA4-9293-0591CE825112}.Debug|Win32.Build.0 = Debug|Win32
{BFB843F9-988D-4CA4-9293-0591CE825112}.Debug|x64.ActiveCfg = Debug|x64
@ -181,10 +194,6 @@ Global
{BFB843F9-988D-4CA4-9293-0591CE825112}.Release|Win32.Build.0 = Release|Win32
{BFB843F9-988D-4CA4-9293-0591CE825112}.Release|x64.ActiveCfg = Release|x64
{BFB843F9-988D-4CA4-9293-0591CE825112}.Release|x64.Build.0 = Release|x64
{BFB843F9-988D-4CA4-9293-0591CE825112}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{BFB843F9-988D-4CA4-9293-0591CE825112}.ReleaseConsole|Win32.Build.0 = Release|Win32
{BFB843F9-988D-4CA4-9293-0591CE825112}.ReleaseConsole|x64.ActiveCfg = Release|x64
{BFB843F9-988D-4CA4-9293-0591CE825112}.ReleaseConsole|x64.Build.0 = Release|x64
{2E2EBA37-6D73-40E2-89E3-A003B3156CA0}.Debug|Win32.ActiveCfg = Debug|Win32
{2E2EBA37-6D73-40E2-89E3-A003B3156CA0}.Debug|Win32.Build.0 = Debug|Win32
{2E2EBA37-6D73-40E2-89E3-A003B3156CA0}.Debug|x64.ActiveCfg = Debug|x64
@ -193,10 +202,6 @@ Global
{2E2EBA37-6D73-40E2-89E3-A003B3156CA0}.Release|Win32.Build.0 = Release|Win32
{2E2EBA37-6D73-40E2-89E3-A003B3156CA0}.Release|x64.ActiveCfg = Release|x64
{2E2EBA37-6D73-40E2-89E3-A003B3156CA0}.Release|x64.Build.0 = Release|x64
{2E2EBA37-6D73-40E2-89E3-A003B3156CA0}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{2E2EBA37-6D73-40E2-89E3-A003B3156CA0}.ReleaseConsole|Win32.Build.0 = Release|Win32
{2E2EBA37-6D73-40E2-89E3-A003B3156CA0}.ReleaseConsole|x64.ActiveCfg = Release|x64
{2E2EBA37-6D73-40E2-89E3-A003B3156CA0}.ReleaseConsole|x64.Build.0 = Release|x64
{964A0E35-BBA0-450D-BAE7-1D35EB21FD1C}.Debug|Win32.ActiveCfg = Debug|Win32
{964A0E35-BBA0-450D-BAE7-1D35EB21FD1C}.Debug|Win32.Build.0 = Debug|Win32
{964A0E35-BBA0-450D-BAE7-1D35EB21FD1C}.Debug|x64.ActiveCfg = Debug|x64
@ -205,10 +210,6 @@ Global
{964A0E35-BBA0-450D-BAE7-1D35EB21FD1C}.Release|Win32.Build.0 = Release|Win32
{964A0E35-BBA0-450D-BAE7-1D35EB21FD1C}.Release|x64.ActiveCfg = Release|x64
{964A0E35-BBA0-450D-BAE7-1D35EB21FD1C}.Release|x64.Build.0 = Release|x64
{964A0E35-BBA0-450D-BAE7-1D35EB21FD1C}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{964A0E35-BBA0-450D-BAE7-1D35EB21FD1C}.ReleaseConsole|Win32.Build.0 = Release|Win32
{964A0E35-BBA0-450D-BAE7-1D35EB21FD1C}.ReleaseConsole|x64.ActiveCfg = Release|x64
{964A0E35-BBA0-450D-BAE7-1D35EB21FD1C}.ReleaseConsole|x64.Build.0 = Release|x64
{93E531F7-A0B3-4DAE-9191-8B37A038731C}.Debug|Win32.ActiveCfg = Debug|Win32
{93E531F7-A0B3-4DAE-9191-8B37A038731C}.Debug|Win32.Build.0 = Debug|Win32
{93E531F7-A0B3-4DAE-9191-8B37A038731C}.Debug|x64.ActiveCfg = Debug|x64
@ -217,10 +218,6 @@ Global
{93E531F7-A0B3-4DAE-9191-8B37A038731C}.Release|Win32.Build.0 = Release|Win32
{93E531F7-A0B3-4DAE-9191-8B37A038731C}.Release|x64.ActiveCfg = Release|x64
{93E531F7-A0B3-4DAE-9191-8B37A038731C}.Release|x64.Build.0 = Release|x64
{93E531F7-A0B3-4DAE-9191-8B37A038731C}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{93E531F7-A0B3-4DAE-9191-8B37A038731C}.ReleaseConsole|Win32.Build.0 = Release|Win32
{93E531F7-A0B3-4DAE-9191-8B37A038731C}.ReleaseConsole|x64.ActiveCfg = Release|x64
{93E531F7-A0B3-4DAE-9191-8B37A038731C}.ReleaseConsole|x64.Build.0 = Release|x64
{F0586B55-BD50-4E58-89A8-D957D941B4D7}.Debug|Win32.ActiveCfg = Debug|Win32
{F0586B55-BD50-4E58-89A8-D957D941B4D7}.Debug|Win32.Build.0 = Debug|Win32
{F0586B55-BD50-4E58-89A8-D957D941B4D7}.Debug|x64.ActiveCfg = Debug|x64
@ -229,10 +226,6 @@ Global
{F0586B55-BD50-4E58-89A8-D957D941B4D7}.Release|Win32.Build.0 = Release|Win32
{F0586B55-BD50-4E58-89A8-D957D941B4D7}.Release|x64.ActiveCfg = Release|x64
{F0586B55-BD50-4E58-89A8-D957D941B4D7}.Release|x64.Build.0 = Release|x64
{F0586B55-BD50-4E58-89A8-D957D941B4D7}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{F0586B55-BD50-4E58-89A8-D957D941B4D7}.ReleaseConsole|Win32.Build.0 = Release|Win32
{F0586B55-BD50-4E58-89A8-D957D941B4D7}.ReleaseConsole|x64.ActiveCfg = Release|x64
{F0586B55-BD50-4E58-89A8-D957D941B4D7}.ReleaseConsole|x64.Build.0 = Release|x64
{E0E8A6E0-EC75-4078-8ED9-35A72C39444C}.Debug|Win32.ActiveCfg = Debug|Win32
{E0E8A6E0-EC75-4078-8ED9-35A72C39444C}.Debug|Win32.Build.0 = Debug|Win32
{E0E8A6E0-EC75-4078-8ED9-35A72C39444C}.Debug|x64.ActiveCfg = Debug|x64
@ -241,10 +234,166 @@ Global
{E0E8A6E0-EC75-4078-8ED9-35A72C39444C}.Release|Win32.Build.0 = Release|Win32
{E0E8A6E0-EC75-4078-8ED9-35A72C39444C}.Release|x64.ActiveCfg = Release|x64
{E0E8A6E0-EC75-4078-8ED9-35A72C39444C}.Release|x64.Build.0 = Release|x64
{E0E8A6E0-EC75-4078-8ED9-35A72C39444C}.ReleaseConsole|Win32.ActiveCfg = Release|Win32
{E0E8A6E0-EC75-4078-8ED9-35A72C39444C}.ReleaseConsole|Win32.Build.0 = Release|Win32
{E0E8A6E0-EC75-4078-8ED9-35A72C39444C}.ReleaseConsole|x64.ActiveCfg = Release|x64
{E0E8A6E0-EC75-4078-8ED9-35A72C39444C}.ReleaseConsole|x64.Build.0 = Release|x64
{DD376932-B4BA-4C44-A146-C2E39A22F56D}.Debug|Win32.ActiveCfg = Debug|Win32
{DD376932-B4BA-4C44-A146-C2E39A22F56D}.Debug|Win32.Build.0 = Debug|Win32
{DD376932-B4BA-4C44-A146-C2E39A22F56D}.Debug|x64.ActiveCfg = Debug|x64
{DD376932-B4BA-4C44-A146-C2E39A22F56D}.Debug|x64.Build.0 = Debug|x64
{DD376932-B4BA-4C44-A146-C2E39A22F56D}.Release|Win32.ActiveCfg = Release|Win32
{DD376932-B4BA-4C44-A146-C2E39A22F56D}.Release|Win32.Build.0 = Release|Win32
{DD376932-B4BA-4C44-A146-C2E39A22F56D}.Release|x64.ActiveCfg = Release|x64
{DD376932-B4BA-4C44-A146-C2E39A22F56D}.Release|x64.Build.0 = Release|x64
{5FCA3894-FEB8-4C7F-B5FA-BAFF2E69F619}.Debug|Win32.ActiveCfg = Debug|Win32
{5FCA3894-FEB8-4C7F-B5FA-BAFF2E69F619}.Debug|Win32.Build.0 = Debug|Win32
{5FCA3894-FEB8-4C7F-B5FA-BAFF2E69F619}.Debug|x64.ActiveCfg = Debug|x64
{5FCA3894-FEB8-4C7F-B5FA-BAFF2E69F619}.Debug|x64.Build.0 = Debug|x64
{5FCA3894-FEB8-4C7F-B5FA-BAFF2E69F619}.Release|Win32.ActiveCfg = Release|Win32
{5FCA3894-FEB8-4C7F-B5FA-BAFF2E69F619}.Release|Win32.Build.0 = Release|Win32
{5FCA3894-FEB8-4C7F-B5FA-BAFF2E69F619}.Release|x64.ActiveCfg = Release|x64
{5FCA3894-FEB8-4C7F-B5FA-BAFF2E69F619}.Release|x64.Build.0 = Release|x64
{50D338F5-BC93-B42B-85CE-FDA8F14DF907}.Debug|Win32.ActiveCfg = Debug|Win32
{50D338F5-BC93-B42B-85CE-FDA8F14DF907}.Debug|Win32.Build.0 = Debug|Win32
{50D338F5-BC93-B42B-85CE-FDA8F14DF907}.Debug|x64.ActiveCfg = Debug|x64
{50D338F5-BC93-B42B-85CE-FDA8F14DF907}.Debug|x64.Build.0 = Debug|x64
{50D338F5-BC93-B42B-85CE-FDA8F14DF907}.Release|Win32.ActiveCfg = Release|Win32
{50D338F5-BC93-B42B-85CE-FDA8F14DF907}.Release|Win32.Build.0 = Release|Win32
{50D338F5-BC93-B42B-85CE-FDA8F14DF907}.Release|x64.ActiveCfg = Release|x64
{50D338F5-BC93-B42B-85CE-FDA8F14DF907}.Release|x64.Build.0 = Release|x64
{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|Win32.ActiveCfg = Debug|Win32
{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|Win32.Build.0 = Debug|Win32
{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|x64.ActiveCfg = Debug|x64
{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|x64.Build.0 = Debug|x64
{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|Win32.ActiveCfg = Release|Win32
{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|Win32.Build.0 = Release|Win32
{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|x64.ActiveCfg = Release|x64
{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|x64.Build.0 = Release|x64
{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Debug|Win32.ActiveCfg = Debug|Win32
{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Debug|Win32.Build.0 = Debug|Win32
{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Debug|x64.ActiveCfg = Debug|x64
{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Debug|x64.Build.0 = Debug|x64
{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Release|Win32.ActiveCfg = Release|Win32
{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Release|Win32.Build.0 = Release|Win32
{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Release|x64.ActiveCfg = Release|x64
{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Release|x64.Build.0 = Release|x64
{54E670E2-9A44-4816-B4A4-1EC2C8F248AF}.Debug|Win32.ActiveCfg = Debug|Win32
{54E670E2-9A44-4816-B4A4-1EC2C8F248AF}.Debug|Win32.Build.0 = Debug|Win32
{54E670E2-9A44-4816-B4A4-1EC2C8F248AF}.Debug|x64.ActiveCfg = Debug|x64
{54E670E2-9A44-4816-B4A4-1EC2C8F248AF}.Debug|x64.Build.0 = Debug|x64
{54E670E2-9A44-4816-B4A4-1EC2C8F248AF}.Release|Win32.ActiveCfg = Release|Win32
{54E670E2-9A44-4816-B4A4-1EC2C8F248AF}.Release|Win32.Build.0 = Release|Win32
{54E670E2-9A44-4816-B4A4-1EC2C8F248AF}.Release|x64.ActiveCfg = Release|x64
{54E670E2-9A44-4816-B4A4-1EC2C8F248AF}.Release|x64.Build.0 = Release|x64
{2BD5534E-00E2-4BEA-AC96-D9A92EA24696}.Debug|Win32.ActiveCfg = Debug|Win32
{2BD5534E-00E2-4BEA-AC96-D9A92EA24696}.Debug|Win32.Build.0 = Debug|Win32
{2BD5534E-00E2-4BEA-AC96-D9A92EA24696}.Debug|x64.ActiveCfg = Debug|x64
{2BD5534E-00E2-4BEA-AC96-D9A92EA24696}.Debug|x64.Build.0 = Debug|x64
{2BD5534E-00E2-4BEA-AC96-D9A92EA24696}.Release|Win32.ActiveCfg = Release|Win32
{2BD5534E-00E2-4BEA-AC96-D9A92EA24696}.Release|Win32.Build.0 = Release|Win32
{2BD5534E-00E2-4BEA-AC96-D9A92EA24696}.Release|x64.ActiveCfg = Release|x64
{2BD5534E-00E2-4BEA-AC96-D9A92EA24696}.Release|x64.Build.0 = Release|x64
{F7E944B3-0815-40CD-B3E4-90B2A15B0E33}.Debug|Win32.ActiveCfg = Debug|Win32
{F7E944B3-0815-40CD-B3E4-90B2A15B0E33}.Debug|Win32.Build.0 = Debug|Win32
{F7E944B3-0815-40CD-B3E4-90B2A15B0E33}.Debug|x64.ActiveCfg = Debug|x64
{F7E944B3-0815-40CD-B3E4-90B2A15B0E33}.Debug|x64.Build.0 = Debug|x64
{F7E944B3-0815-40CD-B3E4-90B2A15B0E33}.Release|Win32.ActiveCfg = Release|Win32
{F7E944B3-0815-40CD-B3E4-90B2A15B0E33}.Release|Win32.Build.0 = Release|Win32
{F7E944B3-0815-40CD-B3E4-90B2A15B0E33}.Release|x64.ActiveCfg = Release|x64
{F7E944B3-0815-40CD-B3E4-90B2A15B0E33}.Release|x64.Build.0 = Release|x64
{DDDBD07D-DC76-4AF6-8D02-3E2DEB6EE255}.Debug|Win32.ActiveCfg = Debug|Win32
{DDDBD07D-DC76-4AF6-8D02-3E2DEB6EE255}.Debug|Win32.Build.0 = Debug|Win32
{DDDBD07D-DC76-4AF6-8D02-3E2DEB6EE255}.Debug|x64.ActiveCfg = Debug|x64
{DDDBD07D-DC76-4AF6-8D02-3E2DEB6EE255}.Debug|x64.Build.0 = Debug|x64
{DDDBD07D-DC76-4AF6-8D02-3E2DEB6EE255}.Release|Win32.ActiveCfg = Release|Win32
{DDDBD07D-DC76-4AF6-8D02-3E2DEB6EE255}.Release|Win32.Build.0 = Release|Win32
{DDDBD07D-DC76-4AF6-8D02-3E2DEB6EE255}.Release|x64.ActiveCfg = Release|x64
{DDDBD07D-DC76-4AF6-8D02-3E2DEB6EE255}.Release|x64.Build.0 = Release|x64
{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|Win32.ActiveCfg = Debug|Win32
{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|Win32.Build.0 = Debug|Win32
{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|x64.ActiveCfg = Debug|x64
{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Debug|x64.Build.0 = Debug|x64
{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|Win32.ActiveCfg = Release|Win32
{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|Win32.Build.0 = Release|Win32
{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|x64.ActiveCfg = Release|x64
{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|x64.Build.0 = Release|x64
{D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.ActiveCfg = Debug|Win32
{D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.Build.0 = Debug|Win32
{D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|x64.ActiveCfg = Debug|x64
{D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|x64.Build.0 = Debug|x64
{D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.ActiveCfg = Release|Win32
{D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.Build.0 = Release|Win32
{D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|x64.ActiveCfg = Release|x64
{D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|x64.Build.0 = Release|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Win32.ActiveCfg = Debug|Win32
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Win32.Build.0 = Debug|Win32
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|x64.ActiveCfg = Debug|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|x64.Build.0 = Debug|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Win32.ActiveCfg = Release|Win32
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Win32.Build.0 = Release|Win32
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|x64.ActiveCfg = Release|x64
{4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|x64.Build.0 = Release|x64
{EBDA67CA-4A23-4F22-BFBC-B8DBE0580D4F}.Debug|Win32.ActiveCfg = Debug|Win32
{EBDA67CA-4A23-4F22-BFBC-B8DBE0580D4F}.Debug|Win32.Build.0 = Debug|Win32
{EBDA67CA-4A23-4F22-BFBC-B8DBE0580D4F}.Debug|x64.ActiveCfg = Debug|x64
{EBDA67CA-4A23-4F22-BFBC-B8DBE0580D4F}.Debug|x64.Build.0 = Debug|x64
{EBDA67CA-4A23-4F22-BFBC-B8DBE0580D4F}.Release|Win32.ActiveCfg = Release|Win32
{EBDA67CA-4A23-4F22-BFBC-B8DBE0580D4F}.Release|Win32.Build.0 = Release|Win32
{EBDA67CA-4A23-4F22-BFBC-B8DBE0580D4F}.Release|x64.ActiveCfg = Release|x64
{EBDA67CA-4A23-4F22-BFBC-B8DBE0580D4F}.Release|x64.Build.0 = Release|x64
{B162B6F1-E876-4D5F-A1F6-E3A6DC2F4A2C}.Debug|Win32.ActiveCfg = Debug|Win32
{B162B6F1-E876-4D5F-A1F6-E3A6DC2F4A2C}.Debug|Win32.Build.0 = Debug|Win32
{B162B6F1-E876-4D5F-A1F6-E3A6DC2F4A2C}.Debug|x64.ActiveCfg = Debug|x64
{B162B6F1-E876-4D5F-A1F6-E3A6DC2F4A2C}.Debug|x64.Build.0 = Debug|x64
{B162B6F1-E876-4D5F-A1F6-E3A6DC2F4A2C}.Release|Win32.ActiveCfg = Release|Win32
{B162B6F1-E876-4D5F-A1F6-E3A6DC2F4A2C}.Release|Win32.Build.0 = Release|Win32
{B162B6F1-E876-4D5F-A1F6-E3A6DC2F4A2C}.Release|x64.ActiveCfg = Release|x64
{B162B6F1-E876-4D5F-A1F6-E3A6DC2F4A2C}.Release|x64.Build.0 = Release|x64
{15CBFEFF-7965-41F5-B4E2-21E8795C9159}.Debug|Win32.ActiveCfg = Debug|Win32
{15CBFEFF-7965-41F5-B4E2-21E8795C9159}.Debug|Win32.Build.0 = Debug|Win32
{15CBFEFF-7965-41F5-B4E2-21E8795C9159}.Debug|x64.ActiveCfg = Debug|x64
{15CBFEFF-7965-41F5-B4E2-21E8795C9159}.Debug|x64.Build.0 = Debug|x64
{15CBFEFF-7965-41F5-B4E2-21E8795C9159}.Release|Win32.ActiveCfg = Release|Win32
{15CBFEFF-7965-41F5-B4E2-21E8795C9159}.Release|Win32.Build.0 = Release|Win32
{15CBFEFF-7965-41F5-B4E2-21E8795C9159}.Release|x64.ActiveCfg = Release|x64
{15CBFEFF-7965-41F5-B4E2-21E8795C9159}.Release|x64.Build.0 = Release|x64
{CEBDE98B-A6AA-46E6-BC79-FAAF823DB9EC}.Debug|Win32.ActiveCfg = Debug|Win32
{CEBDE98B-A6AA-46E6-BC79-FAAF823DB9EC}.Debug|Win32.Build.0 = Debug|Win32
{CEBDE98B-A6AA-46E6-BC79-FAAF823DB9EC}.Debug|x64.ActiveCfg = Debug|x64
{CEBDE98B-A6AA-46E6-BC79-FAAF823DB9EC}.Debug|x64.Build.0 = Debug|x64
{CEBDE98B-A6AA-46E6-BC79-FAAF823DB9EC}.Release|Win32.ActiveCfg = Release|Win32
{CEBDE98B-A6AA-46E6-BC79-FAAF823DB9EC}.Release|Win32.Build.0 = Release|Win32
{CEBDE98B-A6AA-46E6-BC79-FAAF823DB9EC}.Release|x64.ActiveCfg = Release|x64
{CEBDE98B-A6AA-46E6-BC79-FAAF823DB9EC}.Release|x64.Build.0 = Release|x64
{3A214E06-B95E-4D61-A291-1F8DF2EC10FD}.Debug|Win32.ActiveCfg = Debug|Win32
{3A214E06-B95E-4D61-A291-1F8DF2EC10FD}.Debug|Win32.Build.0 = Debug|Win32
{3A214E06-B95E-4D61-A291-1F8DF2EC10FD}.Debug|x64.ActiveCfg = Debug|x64
{3A214E06-B95E-4D61-A291-1F8DF2EC10FD}.Debug|x64.Build.0 = Debug|x64
{3A214E06-B95E-4D61-A291-1F8DF2EC10FD}.Release|Win32.ActiveCfg = Release|Win32
{3A214E06-B95E-4D61-A291-1F8DF2EC10FD}.Release|Win32.Build.0 = Release|Win32
{3A214E06-B95E-4D61-A291-1F8DF2EC10FD}.Release|x64.ActiveCfg = Release|x64
{3A214E06-B95E-4D61-A291-1F8DF2EC10FD}.Release|x64.Build.0 = Release|x64
{67CAA87B-7CF1-4F93-BB67-21C513F40803}.Debug|Win32.ActiveCfg = Debug|Win32
{67CAA87B-7CF1-4F93-BB67-21C513F40803}.Debug|Win32.Build.0 = Debug|Win32
{67CAA87B-7CF1-4F93-BB67-21C513F40803}.Debug|x64.ActiveCfg = Debug|x64
{67CAA87B-7CF1-4F93-BB67-21C513F40803}.Debug|x64.Build.0 = Debug|x64
{67CAA87B-7CF1-4F93-BB67-21C513F40803}.Release|Win32.ActiveCfg = Release|Win32
{67CAA87B-7CF1-4F93-BB67-21C513F40803}.Release|Win32.Build.0 = Release|Win32
{67CAA87B-7CF1-4F93-BB67-21C513F40803}.Release|x64.ActiveCfg = Release|x64
{67CAA87B-7CF1-4F93-BB67-21C513F40803}.Release|x64.Build.0 = Release|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.ActiveCfg = Debug|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.ActiveCfg = Debug|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.Build.0 = Debug|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg = Release|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.ActiveCfg = Release|x64
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.Build.0 = Release|x64
{EA1D1B51-F067-3C93-8F54-669095725F4B}.Debug|Win32.ActiveCfg = Debug|Win32
{EA1D1B51-F067-3C93-8F54-669095725F4B}.Debug|Win32.Build.0 = Debug|Win32
{EA1D1B51-F067-3C93-8F54-669095725F4B}.Debug|x64.ActiveCfg = Debug|x64
{EA1D1B51-F067-3C93-8F54-669095725F4B}.Debug|x64.Build.0 = Debug|x64
{EA1D1B51-F067-3C93-8F54-669095725F4B}.Release|Win32.ActiveCfg = Release|Win32
{EA1D1B51-F067-3C93-8F54-669095725F4B}.Release|Win32.Build.0 = Release|Win32
{EA1D1B51-F067-3C93-8F54-669095725F4B}.Release|x64.ActiveCfg = Release|x64
{EA1D1B51-F067-3C93-8F54-669095725F4B}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -265,6 +414,29 @@ Global
{93E531F7-A0B3-4DAE-9191-8B37A038731C} = {8286A76F-269C-4C17-B8AE-240AFCC1A0BC}
{F0586B55-BD50-4E58-89A8-D957D941B4D7} = {8286A76F-269C-4C17-B8AE-240AFCC1A0BC}
{E0E8A6E0-EC75-4078-8ED9-35A72C39444C} = {8286A76F-269C-4C17-B8AE-240AFCC1A0BC}
{DD376932-B4BA-4C44-A146-C2E39A22F56D} = {178D2820-C8AE-4894-82A5-454A43F7AD21}
{5FCA3894-FEB8-4C7F-B5FA-BAFF2E69F619} = {8B78C654-0550-43A0-B0B0-82304584AB3F}
{50D338F5-BC93-B42B-85CE-FDA8F14DF907} = {8B78C654-0550-43A0-B0B0-82304584AB3F}
{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {8B78C654-0550-43A0-B0B0-82304584AB3F}
{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {8B78C654-0550-43A0-B0B0-82304584AB3F}
{54E670E2-9A44-4816-B4A4-1EC2C8F248AF} = {8B78C654-0550-43A0-B0B0-82304584AB3F}
{2BD5534E-00E2-4BEA-AC96-D9A92EA24696} = {8B78C654-0550-43A0-B0B0-82304584AB3F}
{F7E944B3-0815-40CD-B3E4-90B2A15B0E33} = {8B78C654-0550-43A0-B0B0-82304584AB3F}
{DDDBD07D-DC76-4AF6-8D02-3E2DEB6EE255} = {8B78C654-0550-43A0-B0B0-82304584AB3F}
{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1} = {C9B5FF09-339F-46B2-BEE1-4704283CEFAC}
{C9B5FF09-339F-46B2-BEE1-4704283CEFAC} = {8B78C654-0550-43A0-B0B0-82304584AB3F}
{43E7C20B-0BE5-4774-930A-B875BB50A587} = {8B78C654-0550-43A0-B0B0-82304584AB3F}
{4C3F0F90-CB04-4AC3-B49A-AD8CE115AC2A} = {8B78C654-0550-43A0-B0B0-82304584AB3F}
{D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {C9B5FF09-339F-46B2-BEE1-4704283CEFAC}
{4CEFBC84-C215-11DB-8314-0800200C9A66} = {43E7C20B-0BE5-4774-930A-B875BB50A587}
{EBDA67CA-4A23-4F22-BFBC-B8DBE0580D4F} = {43E7C20B-0BE5-4774-930A-B875BB50A587}
{B162B6F1-E876-4D5F-A1F6-E3A6DC2F4A2C} = {43E7C20B-0BE5-4774-930A-B875BB50A587}
{15CBFEFF-7965-41F5-B4E2-21E8795C9159} = {43E7C20B-0BE5-4774-930A-B875BB50A587}
{CEBDE98B-A6AA-46E6-BC79-FAAF823DB9EC} = {43E7C20B-0BE5-4774-930A-B875BB50A587}
{3A214E06-B95E-4D61-A291-1F8DF2EC10FD} = {43E7C20B-0BE5-4774-930A-B875BB50A587}
{67CAA87B-7CF1-4F93-BB67-21C513F40803} = {43E7C20B-0BE5-4774-930A-B875BB50A587}
{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B} = {4C3F0F90-CB04-4AC3-B49A-AD8CE115AC2A}
{EA1D1B51-F067-3C93-8F54-669095725F4B} = {C9B5FF09-339F-46B2-BEE1-4704283CEFAC}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E6EA96F6-C769-42B8-B9C2-DDF3F46F5FA9}

View File

@ -1,3 +0,0 @@
/ReleaseConsole
/x64
/Release

View File

@ -1,231 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseConsole|Win32">
<Configuration>ReleaseConsole</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseConsole|x64">
<Configuration>ReleaseConsole</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{B2301BEF-1ED1-4724-BE1F-4BEEA697227A}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>GGELUA</RootNamespace>
<ProjectName>GGELUA</ProjectName>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseConsole|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseConsole|x64'" Label="Configuration">
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseConsole|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>..\inc_lua;..\inc_gge;$(IncludePath)</IncludePath>
<LibraryPath>..\lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseConsole|Win32'">
<LinkIncremental>false</LinkIncremental>
<GenerateManifest>false</GenerateManifest>
<TargetName>$(ProjectName)c</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseConsole|x64'">
<GenerateManifest>false</GenerateManifest>
<TargetName>$(ProjectName)c</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;LUA_BUILD_AS_DLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)include\sdl;$(SolutionDir)include\zlib;$(SolutionDir)\luadll;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>lua54.lib;zlib.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)library\x86</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
<EntryPointSymbol>mainCRTStartup</EntryPointSymbol>
</Link>
<PostBuildEvent>
<Command>copy /y "$(OutDir)"$(TargetName).exe "$(SolutionDir)"R32\$(TargetName).exe</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseConsole|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CONSOLE;LUA_BUILD_AS_DLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)include\sdl;$(SolutionDir)include\zlib;$(SolutionDir)\luadll;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>lua54.lib;zlib.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)library\x86</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
<EntryPointSymbol>mainCRTStartup</EntryPointSymbol>
</Link>
<PostBuildEvent>
<Command>copy /y $(OutDir)$(TargetName).exe $(SolutionDir)R32</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>$(SolutionDir)include\sdl;$(SolutionDir)include\zlib;$(SolutionDir)\luadll;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>LUA_BUILD_AS_DLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<DisableSpecificWarnings>5105</DisableSpecificWarnings>
</ClCompile>
<Link>
<AdditionalDependencies>lua54_64.lib;zlib_64.lib;SDL2_64.lib;SDL2main_64.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)library\x64</AdditionalLibraryDirectories>
<ImportLibrary>
</ImportLibrary>
<SubSystem>Windows</SubSystem>
<DelayLoadDLLs>
</DelayLoadDLLs>
<GenerateDebugInformation>false</GenerateDebugInformation>
<EntryPointSymbol>mainCRTStartup</EntryPointSymbol>
</Link>
<PostBuildEvent>
<Command>copy /y "$(OutDir)"$(TargetName).exe "$(SolutionDir)"R64\$(TargetName).exe</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseConsole|x64'">
<ClCompile>
<AdditionalIncludeDirectories>$(SolutionDir)include\sdl;$(SolutionDir)include\zlib;$(SolutionDir)\luadll</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CONSOLE;LUA_BUILD_AS_DLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<DisableSpecificWarnings>5105</DisableSpecificWarnings>
</ClCompile>
<Link>
<AdditionalDependencies>lua54_64.lib;zlib_64.lib;SDL2_64.lib;SDL2main_64.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)library\x64</AdditionalLibraryDirectories>
<ImportLibrary>
</ImportLibrary>
<SubSystem>Console</SubSystem>
<DelayLoadDLLs>
</DelayLoadDLLs>
<GenerateDebugInformation>false</GenerateDebugInformation>
<EntryPointSymbol>mainCRTStartup</EntryPointSymbol>
</Link>
<PostBuildEvent>
<Command>copy /y "$(OutDir)"$(TargetName).exe "$(SolutionDir)"R64\$(TargetName).exe</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Link>
<AdditionalDependencies>lua54_64.lib;zlib_64.lib;SDL2_64.lib;SDL2main_64.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
<AdditionalLibraryDirectories>$(SolutionDir)library\x64</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EntryPointSymbol>mainCRTStartup</EntryPointSymbol>
</Link>
<ClCompile>
<AdditionalIncludeDirectories>$(SolutionDir)include\sdl;$(SolutionDir)include\zlib;$(SolutionDir)\luadll</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<InlineFunctionExpansion>Disabled</InlineFunctionExpansion>
<Optimization>Disabled</Optimization>
</ClCompile>
<PostBuildEvent>
<Command>copy /y "$(OutDir)"$(TargetName).exe "$(SolutionDir)"R64\$(TargetName).exe</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="main.c" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="GGELUA.rc" />
</ItemGroup>
<ItemGroup>
<None Include="logo.ico" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LocalDebuggerWorkingDirectory>..</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseConsole|Win32'">
<LocalDebuggerWorkingDirectory>..</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseConsole|x64'">
<LocalDebuggerCommand>$(SolutionDir)R64\$(TargetName).exe</LocalDebuggerCommand>
<LocalDebuggerWorkingDirectory>$(SolutionDir)R64</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LocalDebuggerCommand>$(SolutionDir)R64\$(TargetName).exe</LocalDebuggerCommand>
<LocalDebuggerWorkingDirectory>$(SolutionDir)R64</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LocalDebuggerCommand>$(SolutionDir)R64\$(TargetName).exe</LocalDebuggerCommand>
<LocalDebuggerWorkingDirectory>$(SolutionDir)R64</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>

2
app/lua/.gitignore vendored
View File

@ -1,2 +0,0 @@
/x64
/Release

View File

@ -1,338 +0,0 @@
/*
* Copyright: JessMA Open Source (ldcsaa@gmail.com)
*
* Author : Bruce Liang
* Website : https://github.com/ldcsaa
* Project : https://github.com/ldcsaa/HP-Socket
* Blog : http://www.cnblogs.com/ldcsaa
* Wiki : http://www.oschina.net/p/hp-socket
* QQ Group : 44636872, 75375912
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include "HPSocket.h"
#ifdef _SSL_SUPPORT
/*****************************************************************************************************************************************************/
/******************************************************************** SSL Exports ********************************************************************/
/*****************************************************************************************************************************************************/
/**************************************************/
/************** HPSocket-SSL 导出函数 **************/
// 创建 SSL ITcpServer 对象
HPSOCKET_API ITcpServer* HP_Create_SSLServer(ITcpServerListener* pListener);
// 创建 SSL ITcpAgent 对象
HPSOCKET_API ITcpAgent* HP_Create_SSLAgent(ITcpAgentListener* pListener);
// 创建 SSL ITcpClient 对象
HPSOCKET_API ITcpClient* HP_Create_SSLClient(ITcpClientListener* pListener);
// 创建 SSL ITcpPullServer 对象
HPSOCKET_API ITcpPullServer* HP_Create_SSLPullServer(ITcpServerListener* pListener);
// 创建 SSL ITcpPullAgent 对象
HPSOCKET_API ITcpPullAgent* HP_Create_SSLPullAgent(ITcpAgentListener* pListener);
// 创建 SSL ITcpPullClient 对象
HPSOCKET_API ITcpPullClient* HP_Create_SSLPullClient(ITcpClientListener* pListener);
// 创建 SSL ITcpPackServer 对象
HPSOCKET_API ITcpPackServer* HP_Create_SSLPackServer(ITcpServerListener* pListener);
// 创建 SSL ITcpPackAgent 对象
HPSOCKET_API ITcpPackAgent* HP_Create_SSLPackAgent(ITcpAgentListener* pListener);
// 创建 SSL ITcpPackClient 对象
HPSOCKET_API ITcpPackClient* HP_Create_SSLPackClient(ITcpClientListener* pListener);
// 销毁 SSL ITcpServer 对象
HPSOCKET_API void HP_Destroy_SSLServer(ITcpServer* pServer);
// 销毁 SSL ITcpAgent 对象
HPSOCKET_API void HP_Destroy_SSLAgent(ITcpAgent* pAgent);
// 销毁 SSL ITcpClient 对象
HPSOCKET_API void HP_Destroy_SSLClient(ITcpClient* pClient);
// 销毁 SSL ITcpPullServer 对象
HPSOCKET_API void HP_Destroy_SSLPullServer(ITcpPullServer* pServer);
// 销毁 SSL ITcpPullAgent 对象
HPSOCKET_API void HP_Destroy_SSLPullAgent(ITcpPullAgent* pAgent);
// 销毁 SSL ITcpPullClient 对象
HPSOCKET_API void HP_Destroy_SSLPullClient(ITcpPullClient* pClient);
// 销毁 SSL ITcpPackServer 对象
HPSOCKET_API void HP_Destroy_SSLPackServer(ITcpPackServer* pServer);
// 销毁 SSL ITcpPackAgent 对象
HPSOCKET_API void HP_Destroy_SSLPackAgent(ITcpPackAgent* pAgent);
// 销毁 SSL ITcpPackClient 对象
HPSOCKET_API void HP_Destroy_SSLPackClient(ITcpPackClient* pClient);
// SSL ITcpServer 对象创建器
struct SSLServer_Creator
{
static ITcpServer* Create(ITcpServerListener* pListener)
{
return HP_Create_SSLServer(pListener);
}
static void Destroy(ITcpServer* pServer)
{
HP_Destroy_SSLServer(pServer);
}
};
// SSL ITcpAgent 对象创建器
struct SSLAgent_Creator
{
static ITcpAgent* Create(ITcpAgentListener* pListener)
{
return HP_Create_SSLAgent(pListener);
}
static void Destroy(ITcpAgent* pAgent)
{
HP_Destroy_SSLAgent(pAgent);
}
};
// SSL ITcpClient 对象创建器
struct SSLClient_Creator
{
static ITcpClient* Create(ITcpClientListener* pListener)
{
return HP_Create_SSLClient(pListener);
}
static void Destroy(ITcpClient* pClient)
{
HP_Destroy_SSLClient(pClient);
}
};
// SSL ITcpPullServer 对象创建器
struct SSLPullServer_Creator
{
static ITcpPullServer* Create(ITcpServerListener* pListener)
{
return HP_Create_SSLPullServer(pListener);
}
static void Destroy(ITcpPullServer* pServer)
{
HP_Destroy_SSLPullServer(pServer);
}
};
// SSL ITcpPullAgent 对象创建器
struct SSLPullAgent_Creator
{
static ITcpPullAgent* Create(ITcpAgentListener* pListener)
{
return HP_Create_SSLPullAgent(pListener);
}
static void Destroy(ITcpPullAgent* pAgent)
{
HP_Destroy_SSLPullAgent(pAgent);
}
};
// SSL ITcpPullClient 对象创建器
struct SSLPullClient_Creator
{
static ITcpPullClient* Create(ITcpClientListener* pListener)
{
return HP_Create_SSLPullClient(pListener);
}
static void Destroy(ITcpPullClient* pClient)
{
HP_Destroy_SSLPullClient(pClient);
}
};
// SSL ITcpPackServer 对象创建器
struct SSLPackServer_Creator
{
static ITcpPackServer* Create(ITcpServerListener* pListener)
{
return HP_Create_SSLPackServer(pListener);
}
static void Destroy(ITcpPackServer* pServer)
{
HP_Destroy_SSLPackServer(pServer);
}
};
// SSL ITcpPackAgent 对象创建器
struct SSLPackAgent_Creator
{
static ITcpPackAgent* Create(ITcpAgentListener* pListener)
{
return HP_Create_SSLPackAgent(pListener);
}
static void Destroy(ITcpPackAgent* pAgent)
{
HP_Destroy_SSLPackAgent(pAgent);
}
};
// SSL ITcpPackClient 对象创建器
struct SSLPackClient_Creator
{
static ITcpPackClient* Create(ITcpClientListener* pListener)
{
return HP_Create_SSLPackClient(pListener);
}
static void Destroy(ITcpPackClient* pClient)
{
HP_Destroy_SSLPackClient(pClient);
}
};
// SSL ITcpServer 对象智能指针
typedef CHPSocketPtr<ITcpServer, ITcpServerListener, SSLServer_Creator> CSSLServerPtr;
// SSL ITcpAgent 对象智能指针
typedef CHPSocketPtr<ITcpAgent, ITcpAgentListener, SSLAgent_Creator> CSSLAgentPtr;
// SSL ITcpClient 对象智能指针
typedef CHPSocketPtr<ITcpClient, ITcpClientListener, SSLClient_Creator> CSSLClientPtr;
// SSL ITcpPullServer 对象智能指针
typedef CHPSocketPtr<ITcpPullServer, ITcpServerListener, SSLPullServer_Creator> CSSLPullServerPtr;
// SSL ITcpPullAgent 对象智能指针
typedef CHPSocketPtr<ITcpPullAgent, ITcpAgentListener, SSLPullAgent_Creator> CSSLPullAgentPtr;
// SSL ITcpPullClient 对象智能指针
typedef CHPSocketPtr<ITcpPullClient, ITcpClientListener, SSLPullClient_Creator> CSSLPullClientPtr;
// SSL ITcpPackServer 对象智能指针
typedef CHPSocketPtr<ITcpPackServer, ITcpServerListener, SSLPackServer_Creator> CSSLPackServerPtr;
// SSL ITcpPackAgent 对象智能指针
typedef CHPSocketPtr<ITcpPackAgent, ITcpAgentListener, SSLPackAgent_Creator> CSSLPackAgentPtr;
// SSL ITcpPackClient 对象智能指针
typedef CHPSocketPtr<ITcpPackClient, ITcpClientListener, SSLPackClient_Creator> CSSLPackClientPtr;
/*****************************************************************************************************************************************************/
/*************************************************************** Global Function Exports *************************************************************/
/*****************************************************************************************************************************************************/
/*
* SNI
* SSL Server SetupSSLContext SNI 使 SNI
*
* lpszServerName --
* pContext -- SSL Context
*
* SNI
*/
HPSOCKET_API int __HP_CALL HP_SSL_DefaultServerNameCallback(LPCTSTR lpszServerName, PVOID pContext);
/*
* 线 SSL
* SSL 线线 SSL
* 1线 HP-Socket 线线 SSL
* 2线 HP-Socket SSL 线
*
* dwThreadID -- 线 ID0线
*
*
*/
HPSOCKET_API void HP_SSL_RemoveThreadLocalState(DWORD dwThreadID);
/*****************************************************************************************************************************************************/
/******************************************************************** HTTPS Exports ******************************************************************/
/*****************************************************************************************************************************************************/
#ifdef _HTTP_SUPPORT
// 创建 IHttpsServer 对象
HPSOCKET_API IHttpServer* HP_Create_HttpsServer(IHttpServerListener* pListener);
// 创建 IHttpsAgent 对象
HPSOCKET_API IHttpAgent* HP_Create_HttpsAgent(IHttpAgentListener* pListener);
// 创建 IHttpsClient 对象
HPSOCKET_API IHttpClient* HP_Create_HttpsClient(IHttpClientListener* pListener);
// 创建 IHttpsSyncClient 对象
HPSOCKET_API IHttpSyncClient* HP_Create_HttpsSyncClient(IHttpClientListener* pListener);
// 销毁 IHttpsServer 对象
HPSOCKET_API void HP_Destroy_HttpsServer(IHttpServer* pServer);
// 销毁 IHttpsAgent 对象
HPSOCKET_API void HP_Destroy_HttpsAgent(IHttpAgent* pAgent);
// 销毁 IHttpsClient 对象
HPSOCKET_API void HP_Destroy_HttpsClient(IHttpClient* pClient);
// 销毁 IHttpsSyncClient 对象
HPSOCKET_API void HP_Destroy_HttpsSyncClient(IHttpSyncClient* pClient);
// IHttpsServer 对象创建器
struct HttpsServer_Creator
{
static IHttpServer* Create(IHttpServerListener* pListener)
{
return HP_Create_HttpsServer(pListener);
}
static void Destroy(IHttpServer* pServer)
{
HP_Destroy_HttpsServer(pServer);
}
};
// IHttpsAgent 对象创建器
struct HttpsAgent_Creator
{
static IHttpAgent* Create(IHttpAgentListener* pListener)
{
return HP_Create_HttpsAgent(pListener);
}
static void Destroy(IHttpAgent* pAgent)
{
HP_Destroy_HttpsAgent(pAgent);
}
};
// IHttpsClient 对象创建器
struct HttpsClient_Creator
{
static IHttpClient* Create(IHttpClientListener* pListener)
{
return HP_Create_HttpsClient(pListener);
}
static void Destroy(IHttpClient* pClient)
{
HP_Destroy_HttpsClient(pClient);
}
};
// IHttpsSyncClient 对象创建器
struct HttpsSyncClient_Creator
{
static IHttpSyncClient* Create(IHttpClientListener* pListener)
{
return HP_Create_HttpsSyncClient(pListener);
}
static void Destroy(IHttpSyncClient* pClient)
{
HP_Destroy_HttpsSyncClient(pClient);
}
};
// IHttpsServer 对象智能指针
typedef CHPSocketPtr<IHttpServer, IHttpServerListener, HttpsServer_Creator> CHttpsServerPtr;
// IHttpsAgent 对象智能指针
typedef CHPSocketPtr<IHttpAgent, IHttpAgentListener, HttpsAgent_Creator> CHttpsAgentPtr;
// IHttpsClient 对象智能指针
typedef CHPSocketPtr<IHttpClient, IHttpClientListener, HttpsClient_Creator> CHttpsClientPtr;
// IHttpsSyncClient 对象智能指针
typedef CHPSocketPtr<IHttpSyncClient, IHttpClientListener, HttpsSyncClient_Creator> CHttpsSyncClientPtr;
#endif
#endif

View File

@ -1,795 +0,0 @@
/*
* Copyright: JessMA Open Source (ldcsaa@gmail.com)
*
* Author : Bruce Liang
* Website : https://github.com/ldcsaa
* Project : https://github.com/ldcsaa/HP-Socket
* Blog : http://www.cnblogs.com/ldcsaa
* Wiki : http://www.oschina.net/p/hp-socket
* QQ Group : 44636872, 75375912
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/******************************************************************************
Module: HPSocket
Usage:
--------------------------------------------------------------------------------------
0. HPTypeDef.h / SocketInterface.h / HPSocket.h
1. HP_Create_Xxx() HPSocket
2. 使 HP_Destroy_Xxx() HPSocket
--------------------------------------------------------------------------------------
0. SocketInterface.h HPSocket.h
1. CXxxPtr 使 HPSocket
Release:
<-- -->
1. x86/HPSocket.dll - (32/MBCS/Release)
2. x86/HPSocket_D.dll - (32/MBCS/DeBug)
3. x86/HPSocket_U.dll - (32/UNICODE/Release)
4. x86/HPSocket_UD.dll - (32/UNICODE/DeBug)
5. x64/HPSocket.dll - (64/MBCS/Release)
6. x64/HPSocket_D.dll - (64/MBCS/DeBug)
7. x64/HPSocket_U.dll - (64/UNICODE/Release)
8. x64/HPSocket_UD.dll - (64/UNICODE/DeBug)
<-- -->
!!!!使 HPSocket -> HPSOCKET_STATIC_LIB
1. x86/static/HPSocket.lib - (32/MBCS/Release)
2. x86/static/HPSocket_D.lib - (32/MBCS/DeBug)
3. x86/static/HPSocket_U.lib - (32/UNICODE/Release)
4. x86/static/HPSocket_UD.lib - (32/UNICODE/DeBug)
5. x64/static/HPSocket.lib - (64/MBCS/Release)
6. x64/static/HPSocket_D.lib - (64/MBCS/DeBug)
7. x64/static/HPSocket_U.lib - (64/UNICODE/Release)
8. x64/static/HPSocket_UD.lib - (64/UNICODE/DeBug)
******************************************************************************/
#pragma once
#include "SocketInterface.h"
/*****************************************************************************************************************************************************/
/****************************************************************** TCP/UDP Exports ******************************************************************/
/*****************************************************************************************************************************************************/
/**************************************************/
/************** HPSocket 对象智能指针 **************/
template<class T, class _Creator> class CHPBasePtr
{
public:
CHPBasePtr& Reset(T* pObj = nullptr)
{
if(pObj != m_pObj)
{
if(m_pObj)
_Creator::Destroy(m_pObj);
m_pObj = pObj;
}
return *this;
}
CHPBasePtr& Attach(T* pObj)
{
return Reset(pObj);
}
T* Detach()
{
T* pObj = m_pObj;
m_pObj = nullptr;
return pObj;
}
BOOL IsValid () const {return m_pObj != nullptr ;}
T* Get () const {return m_pObj ;}
T* operator -> () const {return m_pObj ;}
operator T* () const {return m_pObj ;}
CHPBasePtr& operator = (T* pObj) {return Reset(pObj) ;}
public:
CHPBasePtr() : m_pObj(nullptr)
{
}
virtual ~CHPBasePtr()
{
Reset();
}
private:
CHPBasePtr(const CHPBasePtr&);
CHPBasePtr& operator = (const CHPBasePtr&);
protected:
T* m_pObj;
};
template<class T, class _Listener, class _Creator> class CHPSocketPtr : public CHPBasePtr<T, _Creator>
{
public:
CHPSocketPtr(_Listener* pListener)
{
__super::m_pObj = _Creator::Create(pListener);
}
CHPSocketPtr()
{
}
};
template<class T, class _Creator> class CHPObjectPtr : public CHPBasePtr<T, _Creator>
{
public:
CHPObjectPtr(BOOL bCreate = FALSE)
{
if(bCreate)
__super::m_pObj = _Creator::Create();
}
};
/**************************************************/
/**************** HPSocket 导出函数 ****************/
// 创建 ITcpServer 对象
HPSOCKET_API ITcpServer* HP_Create_TcpServer(ITcpServerListener* pListener);
// 创建 ITcpAgent 对象
HPSOCKET_API ITcpAgent* HP_Create_TcpAgent(ITcpAgentListener* pListener);
// 创建 ITcpClient 对象
HPSOCKET_API ITcpClient* HP_Create_TcpClient(ITcpClientListener* pListener);
// 创建 ITcpPullServer 对象
HPSOCKET_API ITcpPullServer* HP_Create_TcpPullServer(ITcpServerListener* pListener);
// 创建 ITcpPullAgent 对象
HPSOCKET_API ITcpPullAgent* HP_Create_TcpPullAgent(ITcpAgentListener* pListener);
// 创建 ITcpPullClient 对象
HPSOCKET_API ITcpPullClient* HP_Create_TcpPullClient(ITcpClientListener* pListener);
// 创建 ITcpPackServer 对象
HPSOCKET_API ITcpPackServer* HP_Create_TcpPackServer(ITcpServerListener* pListener);
// 创建 ITcpPackAgent 对象
HPSOCKET_API ITcpPackAgent* HP_Create_TcpPackAgent(ITcpAgentListener* pListener);
// 创建 ITcpPackClient 对象
HPSOCKET_API ITcpPackClient* HP_Create_TcpPackClient(ITcpClientListener* pListener);
// 销毁 ITcpServer 对象
HPSOCKET_API void HP_Destroy_TcpServer(ITcpServer* pServer);
// 销毁 ITcpAgent 对象
HPSOCKET_API void HP_Destroy_TcpAgent(ITcpAgent* pAgent);
// 销毁 ITcpClient 对象
HPSOCKET_API void HP_Destroy_TcpClient(ITcpClient* pClient);
// 销毁 ITcpPullServer 对象
HPSOCKET_API void HP_Destroy_TcpPullServer(ITcpPullServer* pServer);
// 销毁 ITcpPullAgent 对象
HPSOCKET_API void HP_Destroy_TcpPullAgent(ITcpPullAgent* pAgent);
// 销毁 ITcpPullClient 对象
HPSOCKET_API void HP_Destroy_TcpPullClient(ITcpPullClient* pClient);
// 销毁 ITcpPackServer 对象
HPSOCKET_API void HP_Destroy_TcpPackServer(ITcpPackServer* pServer);
// 销毁 ITcpPackAgent 对象
HPSOCKET_API void HP_Destroy_TcpPackAgent(ITcpPackAgent* pAgent);
// 销毁 ITcpPackClient 对象
HPSOCKET_API void HP_Destroy_TcpPackClient(ITcpPackClient* pClient);
#ifdef _UDP_SUPPORT
// 创建 IUdpServer 对象
HPSOCKET_API IUdpServer* HP_Create_UdpServer(IUdpServerListener* pListener);
// 创建 IUdpClient 对象
HPSOCKET_API IUdpClient* HP_Create_UdpClient(IUdpClientListener* pListener);
// 创建 IUdpCast 对象
HPSOCKET_API IUdpCast* HP_Create_UdpCast(IUdpCastListener* pListener);
// 创建 IUdpNode 对象
HPSOCKET_API IUdpNode* HP_Create_UdpNode(IUdpNodeListener* pListener);
// 创建 IUdpArqServer 对象
HPSOCKET_API IUdpArqServer* HP_Create_UdpArqServer(IUdpServerListener* pListener);
// 创建 IUdpArqClient 对象
HPSOCKET_API IUdpArqClient* HP_Create_UdpArqClient(IUdpClientListener* pListener);
// 销毁 IUdpServer 对象
HPSOCKET_API void HP_Destroy_UdpServer(IUdpServer* pServer);
// 销毁 IUdpClient 对象
HPSOCKET_API void HP_Destroy_UdpClient(IUdpClient* pClient);
// 销毁 IUdpCast 对象
HPSOCKET_API void HP_Destroy_UdpCast(IUdpCast* pCast);
// 销毁 IUdpNode 对象
HPSOCKET_API void HP_Destroy_UdpNode(IUdpNode* pNode);
// 销毁 IUdpArqServer 对象
HPSOCKET_API void HP_Destroy_UdpArqServer(IUdpArqServer* pServer);
// 销毁 IUdpArqClient 对象
HPSOCKET_API void HP_Destroy_UdpArqClient(IUdpArqClient* pClient);
#endif
// ITcpServer 对象创建器
struct TcpServer_Creator
{
static ITcpServer* Create(ITcpServerListener* pListener)
{
return HP_Create_TcpServer(pListener);
}
static void Destroy(ITcpServer* pServer)
{
HP_Destroy_TcpServer(pServer);
}
};
// ITcpAgent 对象创建器
struct TcpAgent_Creator
{
static ITcpAgent* Create(ITcpAgentListener* pListener)
{
return HP_Create_TcpAgent(pListener);
}
static void Destroy(ITcpAgent* pAgent)
{
HP_Destroy_TcpAgent(pAgent);
}
};
// ITcpClient 对象创建器
struct TcpClient_Creator
{
static ITcpClient* Create(ITcpClientListener* pListener)
{
return HP_Create_TcpClient(pListener);
}
static void Destroy(ITcpClient* pClient)
{
HP_Destroy_TcpClient(pClient);
}
};
// ITcpPullServer 对象创建器
struct TcpPullServer_Creator
{
static ITcpPullServer* Create(ITcpServerListener* pListener)
{
return HP_Create_TcpPullServer(pListener);
}
static void Destroy(ITcpPullServer* pServer)
{
HP_Destroy_TcpPullServer(pServer);
}
};
// ITcpPullAgent 对象创建器
struct TcpPullAgent_Creator
{
static ITcpPullAgent* Create(ITcpAgentListener* pListener)
{
return HP_Create_TcpPullAgent(pListener);
}
static void Destroy(ITcpPullAgent* pAgent)
{
HP_Destroy_TcpPullAgent(pAgent);
}
};
// ITcpPullClient 对象创建器
struct TcpPullClient_Creator
{
static ITcpPullClient* Create(ITcpClientListener* pListener)
{
return HP_Create_TcpPullClient(pListener);
}
static void Destroy(ITcpPullClient* pClient)
{
HP_Destroy_TcpPullClient(pClient);
}
};
// ITcpPackServer 对象创建器
struct TcpPackServer_Creator
{
static ITcpPackServer* Create(ITcpServerListener* pListener)
{
return HP_Create_TcpPackServer(pListener);
}
static void Destroy(ITcpPackServer* pServer)
{
HP_Destroy_TcpPackServer(pServer);
}
};
// ITcpPackAgent 对象创建器
struct TcpPackAgent_Creator
{
static ITcpPackAgent* Create(ITcpAgentListener* pListener)
{
return HP_Create_TcpPackAgent(pListener);
}
static void Destroy(ITcpPackAgent* pAgent)
{
HP_Destroy_TcpPackAgent(pAgent);
}
};
// ITcpPackClient 对象创建器
struct TcpPackClient_Creator
{
static ITcpPackClient* Create(ITcpClientListener* pListener)
{
return HP_Create_TcpPackClient(pListener);
}
static void Destroy(ITcpPackClient* pClient)
{
HP_Destroy_TcpPackClient(pClient);
}
};
// ITcpServer 对象智能指针
typedef CHPSocketPtr<ITcpServer, ITcpServerListener, TcpServer_Creator> CTcpServerPtr;
// ITcpAgent 对象智能指针
typedef CHPSocketPtr<ITcpAgent, ITcpAgentListener, TcpAgent_Creator> CTcpAgentPtr;
// ITcpClient 对象智能指针
typedef CHPSocketPtr<ITcpClient, ITcpClientListener, TcpClient_Creator> CTcpClientPtr;
// ITcpPullServer 对象智能指针
typedef CHPSocketPtr<ITcpPullServer, ITcpServerListener, TcpPullServer_Creator> CTcpPullServerPtr;
// ITcpPullAgent 对象智能指针
typedef CHPSocketPtr<ITcpPullAgent, ITcpAgentListener, TcpPullAgent_Creator> CTcpPullAgentPtr;
// ITcpPullClient 对象智能指针
typedef CHPSocketPtr<ITcpPullClient, ITcpClientListener, TcpPullClient_Creator> CTcpPullClientPtr;
// ITcpPackServer 对象智能指针
typedef CHPSocketPtr<ITcpPackServer, ITcpServerListener, TcpPackServer_Creator> CTcpPackServerPtr;
// ITcpPackAgent 对象智能指针
typedef CHPSocketPtr<ITcpPackAgent, ITcpAgentListener, TcpPackAgent_Creator> CTcpPackAgentPtr;
// ITcpPackClient 对象智能指针
typedef CHPSocketPtr<ITcpPackClient, ITcpClientListener, TcpPackClient_Creator> CTcpPackClientPtr;
#ifdef _UDP_SUPPORT
// IUdpServer 对象创建器
struct UdpServer_Creator
{
static IUdpServer* Create(IUdpServerListener* pListener)
{
return HP_Create_UdpServer(pListener);
}
static void Destroy(IUdpServer* pServer)
{
HP_Destroy_UdpServer(pServer);
}
};
// IUdpClient 对象创建器
struct UdpClient_Creator
{
static IUdpClient* Create(IUdpClientListener* pListener)
{
return HP_Create_UdpClient(pListener);
}
static void Destroy(IUdpClient* pClient)
{
HP_Destroy_UdpClient(pClient);
}
};
// IUdpCast 对象创建器
struct UdpCast_Creator
{
static IUdpCast* Create(IUdpCastListener* pListener)
{
return HP_Create_UdpCast(pListener);
}
static void Destroy(IUdpCast* pCast)
{
HP_Destroy_UdpCast(pCast);
}
};
// IUdpNode 对象创建器
struct UdpNode_Creator
{
static IUdpNode* Create(IUdpNodeListener* pListener)
{
return HP_Create_UdpNode(pListener);
}
static void Destroy(IUdpNode* pNode)
{
HP_Destroy_UdpNode(pNode);
}
};
// IUdpArqServer 对象创建器
struct UdpArqServer_Creator
{
static IUdpArqServer* Create(IUdpServerListener* pListener)
{
return HP_Create_UdpArqServer(pListener);
}
static void Destroy(IUdpArqServer* pServer)
{
HP_Destroy_UdpArqServer(pServer);
}
};
// IUdpArqClient 对象创建器
struct UdpArqClient_Creator
{
static IUdpArqClient* Create(IUdpClientListener* pListener)
{
return HP_Create_UdpArqClient(pListener);
}
static void Destroy(IUdpArqClient* pClient)
{
HP_Destroy_UdpArqClient(pClient);
}
};
// IUdpServer 对象智能指针
typedef CHPSocketPtr<IUdpServer, IUdpServerListener, UdpServer_Creator> CUdpServerPtr;
// IUdpClient 对象智能指针
typedef CHPSocketPtr<IUdpClient, IUdpClientListener, UdpClient_Creator> CUdpClientPtr;
// IUdpCast 对象智能指针
typedef CHPSocketPtr<IUdpCast, IUdpCastListener, UdpCast_Creator> CUdpCastPtr;
// IUdpNode 对象智能指针
typedef CHPSocketPtr<IUdpNode, IUdpNodeListener, UdpNode_Creator> CUdpNodePtr;
// IUdpArqServer 对象智能指针
typedef CHPSocketPtr<IUdpArqServer, IUdpServerListener, UdpArqServer_Creator> CUdpArqServerPtr;
// IUdpArqClient 对象智能指针
typedef CHPSocketPtr<IUdpArqClient, IUdpClientListener, UdpArqClient_Creator> CUdpArqClientPtr;
#endif
/*****************************************************************************************************************************************************/
/*************************************************************** Global Function Exports *************************************************************/
/*****************************************************************************************************************************************************/
// 获取 HPSocket 版本号4 个字节分别为:主版本号,子版本号,修正版本号,构建编号)
HPSOCKET_API DWORD HP_GetHPSocketVersion();
// 获取错误描述文本
HPSOCKET_API LPCTSTR HP_GetSocketErrorDesc(EnSocketError enCode);
// 调用系统的 GetLastError() 方法获取系统错误代码
HPSOCKET_API DWORD SYS_GetLastError ();
// 调用系统的 WSAGetLastError() 方法获取系统错误代码
HPSOCKET_API int SYS_WSAGetLastError();
// 调用系统的 setsockopt()
HPSOCKET_API int SYS_SetSocketOption(SOCKET sock, int level, int name, LPVOID val, int len);
// 调用系统的 getsockopt()
HPSOCKET_API int SYS_GetSocketOption(SOCKET sock, int level, int name, LPVOID val, int* len);
// 调用系统的 ioctlsocket()
HPSOCKET_API int SYS_IoctlSocket(SOCKET sock, long cmd, u_long* arg);
// 调用系统的 WSAIoctl()
HPSOCKET_API int SYS_WSAIoctl(SOCKET sock, DWORD dwIoControlCode, LPVOID lpvInBuffer, DWORD cbInBuffer, LPVOID lpvOutBuffer, DWORD cbOutBuffer, LPDWORD lpcbBytesReturned);
// 设置 socket 选项IPPROTO_TCP -> TCP_NODELAY
HPSOCKET_API int SYS_SSO_NoDelay(SOCKET sock, BOOL bNoDelay);
// 设置 socket 选项SOL_SOCKET -> SO_DONTLINGER
HPSOCKET_API int SYS_SSO_DontLinger(SOCKET sock, BOOL bDont);
// 设置 socket 选项SOL_SOCKET -> SO_LINGER
HPSOCKET_API int SYS_SSO_Linger(SOCKET sock, USHORT l_onoff, USHORT l_linger);
// 设置 socket 选项SOL_SOCKET -> SO_RCVBUF
HPSOCKET_API int SYS_SSO_RecvBuffSize(SOCKET sock, int size);
// 设置 socket 选项SOL_SOCKET -> SO_SNDBUF
HPSOCKET_API int SYS_SSO_SendBuffSize(SOCKET sock, int size);
// 设置 socket 选项SOL_SOCKET -> SO_RCVTIMEO
HPSOCKET_API int SYS_SSO_RecvTimeOut(SOCKET sock, int ms);
// 设置 socket 选项SOL_SOCKET -> SO_SNDTIMEO
HPSOCKET_API int SYS_SSO_SendTimeOut(SOCKET sock, int ms);
// 设置 socket 选项SOL_SOCKET -> SO_EXCLUSIVEADDRUSE / SO_REUSEADDR
HPSOCKET_API int SYS_SSO_ReuseAddress(SOCKET sock, EnReuseAddressPolicy opt);
// 设置 socket 选项SOL_SOCKET -> SO_EXCLUSIVEADDRUSE
HPSOCKET_API int SYS_SSO_ExclusiveAddressUse(SOCKET sock, BOOL bExclusive);
// 获取 SOCKET 本地地址信息
HPSOCKET_API BOOL SYS_GetSocketLocalAddress(SOCKET socket, TCHAR lpszAddress[], int& iAddressLen, USHORT& usPort);
// 获取 SOCKET 远程地址信息
HPSOCKET_API BOOL SYS_GetSocketRemoteAddress(SOCKET socket, TCHAR lpszAddress[], int& iAddressLen, USHORT& usPort);
/* 枚举主机 IP 地址 */
HPSOCKET_API BOOL SYS_EnumHostIPAddresses(LPCTSTR lpszHost, EnIPAddrType enType, LPTIPAddr** lpppIPAddr, int& iIPAddrCount);
/* 释放 LPTIPAddr* */
HPSOCKET_API BOOL SYS_FreeHostIPAddresses(LPTIPAddr* lppIPAddr);
/* 检查字符串是否符合 IP 地址格式 */
HPSOCKET_API BOOL SYS_IsIPAddress(LPCTSTR lpszAddress, EnIPAddrType* penType = nullptr);
/* 通过主机名获取 IP 地址 */
HPSOCKET_API BOOL SYS_GetIPAddress(LPCTSTR lpszHost, TCHAR lpszIP[], int& iIPLenth, EnIPAddrType& enType);
/* 64 位网络字节序转主机字节序 */
HPSOCKET_API ULONGLONG SYS_NToH64(ULONGLONG value);
/* 64 位主机字节序转网络字节序 */
HPSOCKET_API ULONGLONG SYS_HToN64(ULONGLONG value);
/* 短整型高低字节交换 */
HPSOCKET_API USHORT SYS_SwapEndian16(USHORT value);
/* 长整型高低字节交换 */
HPSOCKET_API DWORD SYS_SwapEndian32(DWORD value);
/* 检查是否小端字节序 */
HPSOCKET_API BOOL SYS_IsLittleEndian();
/* 分配内存 */
HPSOCKET_API LPBYTE SYS_Malloc(int size);
/* 重新分配内存 */
HPSOCKET_API LPBYTE SYS_Realloc(LPBYTE p, int size);
/* 释放内存 */
HPSOCKET_API VOID SYS_Free(LPBYTE p);
// CP_XXX -> UNICODE
HPSOCKET_API BOOL SYS_CodePageToUnicode(int iCodePage, const char szSrc[], WCHAR szDest[], int& iDestLength);
// UNICODE -> CP_XXX
HPSOCKET_API BOOL SYS_UnicodeToCodePage(int iCodePage, const WCHAR szSrc[], char szDest[], int& iDestLength);
// GBK -> UNICODE
HPSOCKET_API BOOL SYS_GbkToUnicode(const char szSrc[], WCHAR szDest[], int& iDestLength);
// UNICODE -> GBK
HPSOCKET_API BOOL SYS_UnicodeToGbk(const WCHAR szSrc[], char szDest[], int& iDestLength);
// UTF8 -> UNICODE
HPSOCKET_API BOOL SYS_Utf8ToUnicode(const char szSrc[], WCHAR szDest[], int& iDestLength);
// UNICODE -> UTF8
HPSOCKET_API BOOL SYS_UnicodeToUtf8(const WCHAR szSrc[], char szDest[], int& iDestLength);
// GBK -> UTF8
HPSOCKET_API BOOL SYS_GbkToUtf8(const char szSrc[], char szDest[], int& iDestLength);
// UTF8 -> GBK
HPSOCKET_API BOOL SYS_Utf8ToGbk(const char szSrc[], char szDest[], int& iDestLength);
// 计算 Base64 编码后长度
HPSOCKET_API DWORD SYS_GuessBase64EncodeBound(DWORD dwSrcLen);
// 计算 Base64 解码后长度
HPSOCKET_API DWORD SYS_GuessBase64DecodeBound(const BYTE* lpszSrc, DWORD dwSrcLen);
// Base64 编码返回值0 -> 成功,-3 -> 输入数据不正确,-5 -> 输出缓冲区不足)
HPSOCKET_API int SYS_Base64Encode(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD& dwDestLen);
// Base64 解码返回值0 -> 成功,-3 -> 输入数据不正确,-5 -> 输出缓冲区不足)
HPSOCKET_API int SYS_Base64Decode(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD& dwDestLen);
// 计算 URL 编码后长度
HPSOCKET_API DWORD SYS_GuessUrlEncodeBound(const BYTE* lpszSrc, DWORD dwSrcLen);
// 计算 URL 解码后长度
HPSOCKET_API DWORD SYS_GuessUrlDecodeBound(const BYTE* lpszSrc, DWORD dwSrcLen);
// URL 编码返回值0 -> 成功,-3 -> 输入数据不正确,-5 -> 输出缓冲区不足)
HPSOCKET_API int SYS_UrlEncode(BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD& dwDestLen);
// URL 解码返回值0 -> 成功,-3 -> 输入数据不正确,-5 -> 输出缓冲区不足)
HPSOCKET_API int SYS_UrlDecode(BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD& dwDestLen);
#ifdef _ZLIB_SUPPORT
// 普通压缩返回值0 -> 成功,-3 -> 输入数据不正确,-5 -> 输出缓冲区不足)
HPSOCKET_API int SYS_Compress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD& dwDestLen);
// 高级压缩返回值0 -> 成功,-3 -> 输入数据不正确,-5 -> 输出缓冲区不足)
//默认参数iLevel -> -1iMethod -> 8iWindowBits -> 15iMemLevel -> 8iStrategy -> 0
HPSOCKET_API int SYS_CompressEx(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD& dwDestLen, int iLevel = -1, int iMethod = 8, int iWindowBits = 15, int iMemLevel = 8, int iStrategy = 0);
// 普通解压返回值0 -> 成功,-3 -> 输入数据不正确,-5 -> 输出缓冲区不足)
HPSOCKET_API int SYS_Uncompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD& dwDestLen);
// 高级解压返回值0 -> 成功,-3 -> 输入数据不正确,-5 -> 输出缓冲区不足)
//默认参数iWindowBits -> 15
HPSOCKET_API int SYS_UncompressEx(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD& dwDestLen, int iWindowBits = 15);
// 推测压缩结果长度
HPSOCKET_API DWORD SYS_GuessCompressBound(DWORD dwSrcLen, BOOL bGZip = FALSE);
// Gzip 压缩返回值0 -> 成功,-3 -> 输入数据不正确,-5 -> 输出缓冲区不足)
HPSOCKET_API int SYS_GZipCompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD& dwDestLen);
// Gzip 解压返回值0 -> 成功,-3 -> 输入数据不正确,-5 -> 输出缓冲区不足)
HPSOCKET_API int SYS_GZipUncompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD& dwDestLen);
// 推测 Gzip 解压结果长度(如果返回 0 或不合理值则说明输入内容并非有效的 Gzip 格式)
HPSOCKET_API DWORD SYS_GZipGuessUncompressBound(const BYTE* lpszSrc, DWORD dwSrcLen);
#endif
#ifdef _BROTLI_SUPPORT
// Brotli 压缩返回值0 -> 成功,-3 -> 输入数据不正确,-5 -> 输出缓冲区不足)
HPSOCKET_API int SYS_BrotliCompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD& dwDestLen);
// Brotli 高级压缩返回值0 -> 成功,-3 -> 输入数据不正确,-5 -> 输出缓冲区不足)
//默认参数iQuality -> 11iWindow -> 22iMode -> 0
HPSOCKET_API int SYS_BrotliCompressEx(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD& dwDestLen, int iQuality = 11, int iWindow = 22, int iMode = 0);
// Brotli 解压返回值0 -> 成功,-3 -> 输入数据不正确,-5 -> 输出缓冲区不足)
HPSOCKET_API int SYS_BrotliUncompress(const BYTE* lpszSrc, DWORD dwSrcLen, BYTE* lpszDest, DWORD& dwDestLen);
// Brotli 推测压缩结果长度
HPSOCKET_API DWORD SYS_BrotliGuessCompressBound(DWORD dwSrcLen);
#endif
/*****************************************************************************************************************************************************/
/******************************************************************** HTTP Exports *******************************************************************/
/*****************************************************************************************************************************************************/
#ifdef _HTTP_SUPPORT
// 创建 IHttpServer 对象
HPSOCKET_API IHttpServer* HP_Create_HttpServer(IHttpServerListener* pListener);
// 创建 IHttpAgent 对象
HPSOCKET_API IHttpAgent* HP_Create_HttpAgent(IHttpAgentListener* pListener);
// 创建 IHttpClient 对象
HPSOCKET_API IHttpClient* HP_Create_HttpClient(IHttpClientListener* pListener);
// 创建 IHttpSyncClient 对象
HPSOCKET_API IHttpSyncClient* HP_Create_HttpSyncClient(IHttpClientListener* pListener);
// 销毁 IHttpServer 对象
HPSOCKET_API void HP_Destroy_HttpServer(IHttpServer* pServer);
// 销毁 IHttpAgent 对象
HPSOCKET_API void HP_Destroy_HttpAgent(IHttpAgent* pAgent);
// 销毁 IHttpClient 对象
HPSOCKET_API void HP_Destroy_HttpClient(IHttpClient* pClient);
// 销毁 IHttpSyncClient 对象
HPSOCKET_API void HP_Destroy_HttpSyncClient(IHttpSyncClient* pClient);
// IHttpServer 对象创建器
struct HttpServer_Creator
{
static IHttpServer* Create(IHttpServerListener* pListener)
{
return HP_Create_HttpServer(pListener);
}
static void Destroy(IHttpServer* pServer)
{
HP_Destroy_HttpServer(pServer);
}
};
// IHttpAgent 对象创建器
struct HttpAgent_Creator
{
static IHttpAgent* Create(IHttpAgentListener* pListener)
{
return HP_Create_HttpAgent(pListener);
}
static void Destroy(IHttpAgent* pAgent)
{
HP_Destroy_HttpAgent(pAgent);
}
};
// IHttpClient 对象创建器
struct HttpClient_Creator
{
static IHttpClient* Create(IHttpClientListener* pListener)
{
return HP_Create_HttpClient(pListener);
}
static void Destroy(IHttpClient* pClient)
{
HP_Destroy_HttpClient(pClient);
}
};
// IHttpSyncClient 对象创建器
struct HttpSyncClient_Creator
{
static IHttpSyncClient* Create(IHttpClientListener* pListener)
{
return HP_Create_HttpSyncClient(pListener);
}
static void Destroy(IHttpSyncClient* pClient)
{
HP_Destroy_HttpSyncClient(pClient);
}
};
// IHttpServer 对象智能指针
typedef CHPSocketPtr<IHttpServer, IHttpServerListener, HttpServer_Creator> CHttpServerPtr;
// IHttpAgent 对象智能指针
typedef CHPSocketPtr<IHttpAgent, IHttpAgentListener, HttpAgent_Creator> CHttpAgentPtr;
// IHttpClient 对象智能指针
typedef CHPSocketPtr<IHttpClient, IHttpClientListener, HttpClient_Creator> CHttpClientPtr;
// IHttpSyncClient 对象智能指针
typedef CHPSocketPtr<IHttpSyncClient, IHttpClientListener, HttpSyncClient_Creator> CHttpSyncClientPtr;
/**************************************************************************/
/*************************** HTTP Cookie 管理方法 **************************/
/* 从文件加载 Cookie */
HPSOCKET_API BOOL HP_HttpCookie_MGR_LoadFromFile(LPCSTR lpszFile, BOOL bKeepExists = TRUE);
/* 保存 Cookie 到文件 */
HPSOCKET_API BOOL HP_HttpCookie_MGR_SaveToFile(LPCSTR lpszFile, BOOL bKeepExists = TRUE);
/* 清理 Cookie */
HPSOCKET_API BOOL HP_HttpCookie_MGR_ClearCookies(LPCSTR lpszDomain = nullptr, LPCSTR lpszPath = nullptr);
/* 清理过期 Cookie */
HPSOCKET_API BOOL HP_HttpCookie_MGR_RemoveExpiredCookies(LPCSTR lpszDomain = nullptr, LPCSTR lpszPath = nullptr);
/* 设置 Cookie */
HPSOCKET_API BOOL HP_HttpCookie_MGR_SetCookie(LPCSTR lpszName, LPCSTR lpszValue, LPCSTR lpszDomain, LPCSTR lpszPath, int iMaxAge = -1, BOOL bHttpOnly = FALSE, BOOL bSecure = FALSE, int enSameSite = 0, BOOL bOnlyUpdateValueIfExists = TRUE);
/* 删除 Cookie */
HPSOCKET_API BOOL HP_HttpCookie_MGR_DeleteCookie(LPCSTR lpszDomain, LPCSTR lpszPath, LPCSTR lpszName);
/* 设置是否允许第三方 Cookie */
HPSOCKET_API void HP_HttpCookie_MGR_SetEnableThirdPartyCookie(BOOL bEnableThirdPartyCookie = TRUE);
/* 检查是否允许第三方 Cookie */
HPSOCKET_API BOOL HP_HttpCookie_MGR_IsEnableThirdPartyCookie();
/* Cookie expires 字符串转换为整数 */
HPSOCKET_API BOOL HP_HttpCookie_HLP_ParseExpires(LPCSTR lpszExpires, __time64_t& tmExpires);
/* 整数转换为 Cookie expires 字符串 */
HPSOCKET_API BOOL HP_HttpCookie_HLP_MakeExpiresStr(char lpszBuff[], int& iBuffLen, __time64_t tmExpires);
/* 生成 Cookie 字符串 */
HPSOCKET_API BOOL HP_HttpCookie_HLP_ToString(char lpszBuff[], int& iBuffLen, LPCSTR lpszName, LPCSTR lpszValue, LPCSTR lpszDomain, LPCSTR lpszPath, int iMaxAge /*= -1*/, BOOL bHttpOnly /*= FALSE*/, BOOL bSecure /*= FALSE*/, int enSameSite /*= 0*/);
/* 获取当前 UTC 时间 */
HPSOCKET_API __time64_t HP_HttpCookie_HLP_CurrentUTCTime();
/* Max-Age -> expires */
HPSOCKET_API __time64_t HP_HttpCookie_HLP_MaxAgeToExpires(int iMaxAge);
/* expires -> Max-Age */
HPSOCKET_API int HP_HttpCookie_HLP_ExpiresToMaxAge(__time64_t tmExpires);
/*****************************************************************************************************************************************************/
/************************************************************* HTTP Global Function Exports **********************************************************/
/*****************************************************************************************************************************************************/
#endif
/*****************************************************************************************************************************************************/
/**************************************************************** Thread Pool Exports ****************************************************************/
/*****************************************************************************************************************************************************/
// 创建 IHPThreadPool 对象
HPSOCKET_API IHPThreadPool* HP_Create_ThreadPool();
// 销毁 IHPThreadPool 对象
HPSOCKET_API void HP_Destroy_ThreadPool(IHPThreadPool* pThreadPool);
/*
* TSocketTask
* HP_Destroy_SocketTaskObj()
*
* fnTaskProc --
* pSender --
* dwConnID -- ID
* pBuffer --
* iBuffLen --
* enBuffType -- TBT_COPY
* TBT_COPY pBuffer TSocketTask TSocketTask pBuffer
* -> pBuffer pBuffer
* TBT_REFER pBuffer TSocketTask TSocketTask pBuffer
* -> pBuffer pBuffer pBuffer
* TBT_ATTACH TSocketTask pBuffer pBuffer
* -> pBuffer SYS_Malloc() 使访
* wParam --
* lParam --
* LPTSocketTask
*/
HPSOCKET_API LPTSocketTask HP_Create_SocketTaskObj(Fn_SocketTaskProc fnTaskProc, PVOID pSender, CONNID dwConnID, LPCBYTE pBuffer, INT iBuffLen, EnTaskBufferType enBuffType = TBT_COPY, WPARAM wParam = 0, LPARAM lParam = 0);
// 销毁 TSocketTask 对象
HPSOCKET_API void HP_Destroy_SocketTaskObj(LPTSocketTask pTask);
// IHPThreadPool 对象创建器
struct HPThreadPool_Creator
{
static IHPThreadPool* Create()
{
return HP_Create_ThreadPool();
}
static void Destroy(IHPThreadPool* pThreadPool)
{
HP_Destroy_ThreadPool(pThreadPool);
}
};
// IHPThreadPool 对象智能指针
typedef CHPObjectPtr<IHPThreadPool, HPThreadPool_Creator> CHPThreadPoolPtr;

View File

@ -1,411 +0,0 @@
/*
* Copyright: JessMA Open Source (ldcsaa@gmail.com)
*
* Author : Bruce Liang
* Website : https://github.com/ldcsaa
* Project : https://github.com/ldcsaa/HP-Socket
* Blog : http://www.cnblogs.com/ldcsaa
* Wiki : http://www.oschina.net/p/hp-socket
* QQ Group : 44636872, 75375912
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include "HPSocket4C.h"
#ifdef _SSL_SUPPORT
/************************************************************************
SSL Socket
SSL Socket
************************************************************************/
typedef HP_Object HP_SSLServer;
typedef HP_Object HP_SSLAgent;
typedef HP_Object HP_SSLClient;
typedef HP_Object HP_SSLPullServer;
typedef HP_Object HP_SSLPullAgent;
typedef HP_Object HP_SSLPullClient;
typedef HP_Object HP_SSLPackServer;
typedef HP_Object HP_SSLPackAgent;
typedef HP_Object HP_SSLPackClient;
typedef HP_Object HP_HttpsServer;
typedef HP_Object HP_HttpsAgent;
typedef HP_Object HP_HttpsClient;
typedef HP_Object HP_HttpsSyncClient;
/*****************************************************************************************************************************************************/
/******************************************************************** SSL Exports ********************************************************************/
/*****************************************************************************************************************************************************/
/********************************************************/
/************** HPSocket4C-SSL 对象创建函数 **************/
// 创建 HP_SSLServer 对象
HPSOCKET_API HP_SSLServer __HP_CALL Create_HP_SSLServer(HP_TcpServerListener pListener);
// 创建 HP_SSLAgent 对象
HPSOCKET_API HP_SSLAgent __HP_CALL Create_HP_SSLAgent(HP_TcpAgentListener pListener);
// 创建 HP_SSLClient 对象
HPSOCKET_API HP_SSLClient __HP_CALL Create_HP_SSLClient(HP_TcpClientListener pListener);
// 创建 HP_SSLPullServer 对象
HPSOCKET_API HP_SSLPullServer __HP_CALL Create_HP_SSLPullServer(HP_TcpPullServerListener pListener);
// 创建 HP_SSLPullAgent 对象
HPSOCKET_API HP_SSLPullAgent __HP_CALL Create_HP_SSLPullAgent(HP_TcpPullAgentListener pListener);
// 创建 HP_SSLPullClient 对象
HPSOCKET_API HP_SSLPullClient __HP_CALL Create_HP_SSLPullClient(HP_TcpPullClientListener pListener);
// 创建 HP_SSLPackServer 对象
HPSOCKET_API HP_SSLPackServer __HP_CALL Create_HP_SSLPackServer(HP_TcpServerListener pListener);
// 创建 HP_SSLPackAgent 对象
HPSOCKET_API HP_SSLPackAgent __HP_CALL Create_HP_SSLPackAgent(HP_TcpAgentListener pListener);
// 创建 HP_SSLPackClient 对象
HPSOCKET_API HP_SSLPackClient __HP_CALL Create_HP_SSLPackClient(HP_TcpClientListener pListener);
// 销毁 HP_SSLServer 对象
HPSOCKET_API void __HP_CALL Destroy_HP_SSLServer(HP_SSLServer pServer);
// 销毁 HP_SSLAgent 对象
HPSOCKET_API void __HP_CALL Destroy_HP_SSLAgent(HP_SSLAgent pAgent);
// 销毁 HP_SSLClient 对象
HPSOCKET_API void __HP_CALL Destroy_HP_SSLClient(HP_SSLClient pClient);
// 销毁 HP_SSLPullServer 对象
HPSOCKET_API void __HP_CALL Destroy_HP_SSLPullServer(HP_SSLPullServer pServer);
// 销毁 HP_SSLPullAgent 对象
HPSOCKET_API void __HP_CALL Destroy_HP_SSLPullAgent(HP_SSLPullAgent pAgent);
// 销毁 HP_SSLPullClient 对象
HPSOCKET_API void __HP_CALL Destroy_HP_SSLPullClient(HP_SSLPullClient pClient);
// 销毁 HP_SSLPackServer 对象
HPSOCKET_API void __HP_CALL Destroy_HP_SSLPackServer(HP_SSLPackServer pServer);
// 销毁 HP_SSLPackAgent 对象
HPSOCKET_API void __HP_CALL Destroy_HP_SSLPackAgent(HP_SSLPackAgent pAgent);
// 销毁 HP_SSLPackClient 对象
HPSOCKET_API void __HP_CALL Destroy_HP_SSLPackClient(HP_SSLPackClient pClient);
/*****************************************************************************************************************************************************/
/*************************************************************** Global Function Exports *************************************************************/
/*****************************************************************************************************************************************************/
/***************************************************************************************/
/************************************ SSL 初始化方法 ************************************/
/*
* SNI
* HP_SSLServer_SetupSSLContext SNI 使 SNI
*
* lpszServerName --
* pContext -- SSL Context
*
* SNI
*/
HPSOCKET_API int __HP_CALL HP_SSL_DefaultServerNameCallback(LPCTSTR lpszServerName, PVOID pContext);
/*
* 线 SSL
* SSL 线线 SSL
* 1线 HP-Socket 线线 SSL
* 2线 HP-Socket SSL 线
*
* dwThreadID -- 线 ID0线
*
*
*/
HPSOCKET_API void __HP_CALL HP_SSL_RemoveThreadLocalState(DWORD dwThreadID);
/*
* SSL
* SSL SSL
*
* iVerifyMode -- SSL EnSSLVerifyMode
* lpszPemCertFile --
* lpszPemKeyFile --
* lpszKeyPassword --
* lpszCAPemCertFileOrPath -- CA
* fnServerNameCallback -- SNI nullptr 使 SNI
*
* TRUE --
* FALSE -- SYS_GetLastError()
*/
HPSOCKET_API BOOL __HP_CALL HP_SSLServer_SetupSSLContext(HP_SSLServer pServer, int iVerifyMode /* SSL_VM_NONE */, LPCTSTR lpszPemCertFile /* nullptr */, LPCTSTR lpszPemKeyFile /* nullptr */, LPCTSTR lpszKeyPassword /* nullptr */, LPCTSTR lpszCAPemCertFileOrPath /* nullptr */, HP_Fn_SNI_ServerNameCallback fnServerNameCallback /* nullptr */);
/*
* SSL
* SSL SSL
*
* iVerifyMode -- SSL EnSSLVerifyMode
* lpszPemCert --
* lpszPemKey --
* lpszKeyPassword --
* lpszCAPemCert -- CA
* fnServerNameCallback -- SNI nullptr 使 SNI
*
* TRUE --
* FALSE -- SYS_GetLastError()
*/
HPSOCKET_API BOOL __HP_CALL HP_SSLServer_SetupSSLContextByMemory(HP_SSLServer pServer, int iVerifyMode /* SSL_VM_NONE */, LPCSTR lpszPemCert /* nullptr */, LPCSTR lpszPemKey /* nullptr */, LPCSTR lpszKeyPassword /* nullptr */, LPCSTR lpszCAPemCert /* nullptr */, HP_Fn_SNI_ServerNameCallback fnServerNameCallback /* nullptr */);
/*
* SNI
* SSL SetupSSLContext() SNI
*
* iVerifyMode -- SSL EnSSLVerifyMode
* lpszPemCertFile --
* lpszPemKeyFile --
* lpszKeyPassword --
* lpszCAPemCertFileOrPath -- CA
*
* -- SNI SNI SNI
* -- SYS_GetLastError()
*/
HPSOCKET_API int __HP_CALL HP_SSLServer_AddSSLContext(HP_SSLServer pServer, int iVerifyMode, LPCTSTR lpszPemCertFile, LPCTSTR lpszPemKeyFile, LPCTSTR lpszKeyPassword /* nullptr */, LPCTSTR lpszCAPemCertFileOrPath /* nullptr */);
/*
* SNI
* SSL SetupSSLContext() SNI
*
* iVerifyMode -- SSL EnSSLVerifyMode
* lpszPemCert --
* lpszPemKey --
* lpszKeyPassword --
* lpszCAPemCert -- CA
*
* -- SNI SNI SNI
* -- SYS_GetLastError()
*/
HPSOCKET_API int __HP_CALL HP_SSLServer_AddSSLContextByMemory(HP_SSLServer pServer, int iVerifyMode, LPCSTR lpszPemCert, LPCSTR lpszPemKey, LPCSTR lpszKeyPassword /* nullptr */, LPCSTR lpszCAPemCert /* nullptr */);
/*
* SNI
* SSL AddSSLContext() SNI
*
* lpszServerName --
* iContextIndex -- SNI
*
* TRUE --
* FALSE -- SYS_GetLastError()
*/
HPSOCKET_API BOOL __HP_CALL HP_SSLServer_BindSSLServerName(HP_SSLServer pServer, LPCTSTR lpszServerName, int iContextIndex);
/*
* SSL
* SSL SSL
* 1
* 2 SSL
*
*
*
*
*/
HPSOCKET_API void __HP_CALL HP_SSLServer_CleanupSSLContext(HP_SSLServer pServer);
/*
* SSL
* SSL SSL
*
* iVerifyMode -- SSL EnSSLVerifyMode
* lpszPemCertFile --
* lpszPemKeyFile --
* lpszKeyPassword --
* lpszCAPemCertFileOrPath -- CA
*
* TRUE --
* FALSE -- SYS_GetLastError()
*/
HPSOCKET_API BOOL __HP_CALL HP_SSLAgent_SetupSSLContext(HP_SSLAgent pAgent, int iVerifyMode /* SSL_VM_NONE */, LPCTSTR lpszPemCertFile /* nullptr */, LPCTSTR lpszPemKeyFile /* nullptr */, LPCTSTR lpszKeyPassword /* nullptr */, LPCTSTR lpszCAPemCertFileOrPath /* nullptr */);
/*
* SSL
* SSL SSL
*
* iVerifyMode -- SSL EnSSLVerifyMode
* lpszPemCert --
* lpszPemKey --
* lpszKeyPassword --
* lpszCAPemCert -- CA
*
* TRUE --
* FALSE -- SYS_GetLastError()
*/
HPSOCKET_API BOOL __HP_CALL HP_SSLAgent_SetupSSLContextByMemory(HP_SSLAgent pAgent, int iVerifyMode /* SSL_VM_NONE */, LPCSTR lpszPemCert /* nullptr */, LPCSTR lpszPemKey /* nullptr */, LPCSTR lpszKeyPassword /* nullptr */, LPCSTR lpszCAPemCert /* nullptr */);
/*
* SSL
* SSL SSL
* 1
* 2 SSL
*
*
*
*
*/
HPSOCKET_API void __HP_CALL HP_SSLAgent_CleanupSSLContext(HP_SSLAgent pAgent);
/*
* SSL
* SSL SSL
*
* iVerifyMode -- SSL EnSSLVerifyMode
* lpszPemCertFile --
* lpszPemKeyFile --
* lpszKeyPassword --
* lpszCAPemCertFileOrPath -- CA
*
* TRUE --
* FALSE -- SYS_GetLastError()
*/
HPSOCKET_API BOOL __HP_CALL HP_SSLClient_SetupSSLContext(HP_SSLClient pClient, int iVerifyMode /* SSL_VM_NONE */, LPCTSTR lpszPemCertFile /* nullptr */, LPCTSTR lpszPemKeyFile /* nullptr */, LPCTSTR lpszKeyPassword /* nullptr */, LPCTSTR lpszCAPemCertFileOrPath /* nullptr */);
/*
* SSL
* SSL SSL
*
* iVerifyMode -- SSL EnSSLVerifyMode
* lpszPemCert --
* lpszPemKey --
* lpszKeyPassword --
* lpszCAPemCert -- CA
*
* TRUE --
* FALSE -- SYS_GetLastError()
*/
HPSOCKET_API BOOL __HP_CALL HP_SSLClient_SetupSSLContextByMemory(HP_SSLClient pClient, int iVerifyMode /* SSL_VM_NONE */, LPCSTR lpszPemCert /* nullptr */, LPCSTR lpszPemKey /* nullptr */, LPCSTR lpszKeyPassword /* nullptr */, LPCSTR lpszCAPemCert /* nullptr */);
/*
* SSL
* SSL SSL
* 1
* 2 SSL
*
*
*
*
*/
HPSOCKET_API void __HP_CALL HP_SSLClient_CleanupSSLContext(HP_SSLClient pClient);
/***************************************************************************************/
/************************************* SSL 操作方法 ************************************/
/*
* SSL
* SSL
*
* TRUE --
* FALSE -- SYS_GetLastError()
*/
HPSOCKET_API BOOL __HP_CALL HP_SSLServer_StartSSLHandShake(HP_SSLServer pServer, HP_CONNID dwConnID);
/* 设置通信组件握手方式默认TRUE自动握手 */
HPSOCKET_API void __HP_CALL HP_SSLServer_SetSSLAutoHandShake(HP_SSLServer pServer, BOOL bAutoHandShake);
/* 获取通信组件握手方式 */
HPSOCKET_API BOOL __HP_CALL HP_SSLServer_IsSSLAutoHandShake(HP_SSLServer pServer);
/* 设置 SSL 加密算法列表 */
HPSOCKET_API void __HP_CALL HP_SSLServer_SetSSLCipherList(HP_SSLServer pServer, LPCTSTR lpszCipherList);
/* 获取 SSL 加密算法列表 */
HPSOCKET_API LPCTSTR __HP_CALL HP_SSLServer_GetSSLCipherList(HP_SSLServer pServer);
/*
* SSL Session
* SSL Session En_HP_SSLSessionInfo
*
* TRUE --
* FALSE -- SYS_GetLastError()
*/
HPSOCKET_API BOOL __HP_CALL HP_SSLServer_GetSSLSessionInfo(HP_SSLServer pServer, HP_CONNID dwConnID, En_HP_SSLSessionInfo enInfo, LPVOID* lppInfo);
/*
* SSL
* SSL
*
* TRUE --
* FALSE -- SYS_GetLastError()
*/
HPSOCKET_API BOOL __HP_CALL HP_SSLAgent_StartSSLHandShake(HP_SSLAgent pAgent, HP_CONNID dwConnID);
/* 设置通信组件握手方式默认TRUE自动握手 */
HPSOCKET_API void __HP_CALL HP_SSLAgent_SetSSLAutoHandShake(HP_SSLAgent pAgent, BOOL bAutoHandShake);
/* 获取通信组件握手方式 */
HPSOCKET_API BOOL __HP_CALL HP_SSLAgent_IsSSLAutoHandShake(HP_SSLAgent pAgent);
/* 设置 SSL 加密算法列表 */
HPSOCKET_API void __HP_CALL HP_SSLAgent_SetSSLCipherList(HP_SSLAgent pAgent, LPCTSTR lpszCipherList);
/* 获取 SSL 加密算法列表 */
HPSOCKET_API LPCTSTR __HP_CALL HP_SSLAgent_GetSSLCipherList(HP_SSLAgent pAgent);
/*
* SSL Session
* SSL Session En_HP_SSLSessionInfo
*
* TRUE --
* FALSE -- SYS_GetLastError()
*/
HPSOCKET_API BOOL __HP_CALL HP_SSLAgent_GetSSLSessionInfo(HP_SSLAgent pAgent, HP_CONNID dwConnID, En_HP_SSLSessionInfo enInfo, LPVOID* lppInfo);
/*
* SSL
* SSL
*
* TRUE --
* FALSE -- SYS_GetLastError()
*/
HPSOCKET_API BOOL __HP_CALL HP_SSLClient_StartSSLHandShake(HP_SSLClient pClient);
/* 设置通信组件握手方式默认TRUE自动握手 */
HPSOCKET_API void __HP_CALL HP_SSLClient_SetSSLAutoHandShake(HP_SSLClient pClient, BOOL bAutoHandShake);
/* 获取通信组件握手方式 */
HPSOCKET_API BOOL __HP_CALL HP_SSLClient_IsSSLAutoHandShake(HP_SSLClient pClient);
/* 设置 SSL 加密算法列表 */
HPSOCKET_API void __HP_CALL HP_SSLClient_SetSSLCipherList(HP_SSLClient pClient, LPCTSTR lpszCipherList);
/* 获取 SSL 加密算法列表 */
HPSOCKET_API LPCTSTR __HP_CALL HP_SSLClient_GetSSLCipherList(HP_SSLClient pClient);
/*
* SSL Session
* SSL Session En_HP_SSLSessionInfo
*
* TRUE --
* FALSE -- SYS_GetLastError()
*/
HPSOCKET_API BOOL __HP_CALL HP_SSLClient_GetSSLSessionInfo(HP_SSLClient pClient, En_HP_SSLSessionInfo enInfo, LPVOID* lppInfo);
/*****************************************************************************************************************************************************/
/******************************************************************** HTTPS Exports ******************************************************************/
/*****************************************************************************************************************************************************/
#ifdef _HTTP_SUPPORT
/****************************************************/
/**************** HTTPS 对象创建函数 *****************/
// 创建 HP_HttpsServer 对象
HPSOCKET_API HP_HttpsServer __HP_CALL Create_HP_HttpsServer(HP_HttpServerListener pListener);
// 创建 HP_HttpsAgent 对象
HPSOCKET_API HP_HttpsAgent __HP_CALL Create_HP_HttpsAgent(HP_HttpAgentListener pListener);
// 创建 HP_HttpsClient 对象
HPSOCKET_API HP_HttpsClient __HP_CALL Create_HP_HttpsClient(HP_HttpClientListener pListener);
// 创建 HP_HttpsSyncClient 对象
HPSOCKET_API HP_HttpsSyncClient __HP_CALL Create_HP_HttpsSyncClient(HP_HttpClientListener pListener);
// 销毁 HP_HttpsServer 对象
HPSOCKET_API void __HP_CALL Destroy_HP_HttpsServer(HP_HttpsServer pServer);
// 销毁 HP_HttpsAgent 对象
HPSOCKET_API void __HP_CALL Destroy_HP_HttpsAgent(HP_HttpsAgent pAgent);
// 销毁 HP_HttpsClient 对象
HPSOCKET_API void __HP_CALL Destroy_HP_HttpsClient(HP_HttpsClient pClient);
// 销毁 HP_HttpsSyncClient 对象
HPSOCKET_API void __HP_CALL Destroy_HP_HttpsSyncClient(HP_HttpsSyncClient pClient);
#endif
#endif

Some files were not shown because too many files have changed in this diff Show More