build时,进行systemd路径创建
@ -1,88 +0,0 @@
|
||||
---
|
||||
Language: Cpp
|
||||
DisableFormat: true
|
||||
AccessModifierOffset: -8
|
||||
AlignAfterOpenBracket: DontAlign
|
||||
AlignConsecutiveAssignments: true
|
||||
AlignConsecutiveDeclarations: false
|
||||
AlignEscapedNewlinesLeft: true
|
||||
AlignOperands: false
|
||||
AlignTrailingComments: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortBlocksOnASingleLine: true
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: All
|
||||
AllowShortIfStatementsOnASingleLine: true
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: false
|
||||
AlwaysBreakTemplateDeclarations: true
|
||||
BinPackArguments: true
|
||||
BinPackParameters: true
|
||||
BreakBeforeBraces: Custom
|
||||
BraceWrapping:
|
||||
AfterClass: true
|
||||
AfterEnum: true
|
||||
AfterFunction: true
|
||||
AfterNamespace: true
|
||||
AfterObjCDeclaration: true
|
||||
AfterStruct: true
|
||||
AfterUnion: true
|
||||
AfterControlStatement: true
|
||||
BeforeCatch: true
|
||||
BeforeElse: true
|
||||
IndentBraces: false
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializersBeforeComma: true
|
||||
ColumnLimit: 78
|
||||
CommentPragmas: '^ IWYU pragma:'
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||
ConstructorInitializerIndentWidth: 0
|
||||
ContinuationIndentWidth: 8
|
||||
Cpp11BracedListStyle: false
|
||||
DerivePointerAlignment: false
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
|
||||
IncludeCategories:
|
||||
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
|
||||
Priority: 2
|
||||
- Regex: '^(<|"(gtest|isl|json)/)'
|
||||
Priority: 3
|
||||
- Regex: '.*'
|
||||
Priority: 1
|
||||
IndentCaseLabels: false
|
||||
IndentWidth: 8
|
||||
IndentWrappedFunctionNames: false
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
MaxEmptyLinesToKeep: 1
|
||||
NamespaceIndentation: None
|
||||
ObjCBlockIndentWidth: 8
|
||||
ObjCSpaceAfterProperty: true
|
||||
ObjCSpaceBeforeProtocolList: true
|
||||
PenaltyBreakBeforeFirstCallParameter: 20
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyExcessCharacter: 1000000
|
||||
PenaltyReturnTypeOnItsOwnLine: 60
|
||||
PointerAlignment: Left
|
||||
ReflowComments: true
|
||||
SortIncludes: false
|
||||
SpaceAfterCStyleCast: true
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 1
|
||||
SpacesInAngles: false
|
||||
SpacesInContainerLiterals: true
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: Cpp03
|
||||
TabWidth: 8
|
||||
UseTab: Always
|
||||
...
|
@ -1,12 +0,0 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
159
packaging/BUILD/acl-master-3.5.4/.gitignore
vendored
@ -1,159 +0,0 @@
|
||||
# Compiled Object files
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
|
||||
# Compiled Dynamic libraries
|
||||
*.so
|
||||
*.sdf
|
||||
*.ncb
|
||||
*.suo
|
||||
*.pch
|
||||
*.pdb
|
||||
*.idb
|
||||
*.exp
|
||||
*.map
|
||||
|
||||
# Compiled Static libraries
|
||||
*.lai
|
||||
*.la
|
||||
*.lib
|
||||
*.a
|
||||
*.user
|
||||
*.exe
|
||||
*.VC.db
|
||||
.vs/
|
||||
x64/
|
||||
build/
|
||||
Debug/
|
||||
Release/
|
||||
#dist/
|
||||
acl_cpp_vc2015.VC.VC.opendb
|
||||
acl_cpp_vc2015.VC.db
|
||||
app/gson/debug/
|
||||
app/gson/gson
|
||||
app/gson/gson.vcxproj.user
|
||||
app/master_dispatch/manager/Debug/
|
||||
app/redis_tools/redis_builder/Debug/
|
||||
app/wizard/Debug/
|
||||
app/wizard_demo/httpd_download/Debug/
|
||||
app/wizard_demo/httpd_upload/Debug/
|
||||
ipch/
|
||||
lib_acl/Debug/
|
||||
lib_acl/StdAfx.h.gch
|
||||
lib_acl/debug/
|
||||
lib_acl/master/acl_master
|
||||
lib_acl/samples/dgate/Debug/
|
||||
lib_acl/samples/mmap_string/Debug/
|
||||
lib_acl/samples/winaio/Debug/
|
||||
lib_acl/samples/zdb/Debug/
|
||||
lib_acl_cpp/Debug/
|
||||
lib_acl_cpp/lib_acl_cpp_vc2015.vcxproj.user
|
||||
lib_acl_cpp/samples/aio/aio_client/Debug/
|
||||
lib_acl_cpp/samples/aio/aio_client_ssl/Debug/
|
||||
lib_acl_cpp/samples/aio/aio_connect/Debug/
|
||||
lib_acl_cpp/samples/aio/aio_dns/Debug/
|
||||
lib_acl_cpp/samples/aio/aio_ipc/Debug/
|
||||
lib_acl_cpp/samples/aio/aio_server/Debug/
|
||||
lib_acl_cpp/samples/aio/aio_server_ssl/Debug/
|
||||
lib_acl_cpp/samples/aio/pkg_client/Debug/
|
||||
lib_acl_cpp/samples/aio/pkg_server/Debug/
|
||||
lib_acl_cpp/samples/cgi/Debug/
|
||||
lib_acl_cpp/samples/cgi_upload/Debug/
|
||||
lib_acl_cpp/samples/connect_manager/Debug/
|
||||
lib_acl_cpp/samples/db/mysql_manager/Debug/
|
||||
lib_acl_cpp/samples/db/mysql_pool/Debug/
|
||||
lib_acl_cpp/samples/db/mysql_query/Debug/
|
||||
lib_acl_cpp/samples/db/query/Debug/
|
||||
lib_acl_cpp/samples/dbuf/dbuf1/Debug/
|
||||
lib_acl_cpp/samples/dbuf/dbuf2/Debug/
|
||||
lib_acl_cpp/samples/dbuf/dbuf3/Debug/
|
||||
lib_acl_cpp/samples/dbuf/dbuf4/Debug/
|
||||
lib_acl_cpp/samples/dircmp/Debug/
|
||||
lib_acl_cpp/samples/dircopy/Debug/
|
||||
lib_acl_cpp/samples/disque/disque_client/Debug/
|
||||
lib_acl_cpp/samples/disque/disque_cluster/Debug/
|
||||
lib_acl_cpp/samples/disque/disque_manager/Debug/
|
||||
lib_acl_cpp/samples/disque/disque_pool/Debug/
|
||||
lib_acl_cpp/samples/final_class/Debug/
|
||||
lib_acl_cpp/samples/flock/Debug/
|
||||
lib_acl_cpp/samples/fstream/Debug/
|
||||
lib_acl_cpp/samples/http_client/Debug/
|
||||
lib_acl_cpp/samples/http_request_manager/Debug/
|
||||
lib_acl_cpp/samples/http_request_pool/Debug/
|
||||
lib_acl_cpp/samples/http_servlet2/Debug/
|
||||
lib_acl_cpp/samples/json/json0/Debug/
|
||||
lib_acl_cpp/samples/json/json1/Debug/
|
||||
lib_acl_cpp/samples/json/json10/Debug/
|
||||
lib_acl_cpp/samples/json/json11/Debug/
|
||||
lib_acl_cpp/samples/json/json12/Debug/
|
||||
lib_acl_cpp/samples/json/json2/Debug/
|
||||
lib_acl_cpp/samples/json/json3/Debug/
|
||||
lib_acl_cpp/samples/json/json4/Debug/
|
||||
lib_acl_cpp/samples/json/json5/Debug/
|
||||
lib_acl_cpp/samples/json/json6/Debug/
|
||||
lib_acl_cpp/samples/json/json7/Debug/
|
||||
lib_acl_cpp/samples/json/json8/Debug/
|
||||
lib_acl_cpp/samples/json/json9/Debug/
|
||||
lib_acl_cpp/samples/master/master_aio/Debug/
|
||||
lib_acl_cpp/samples/master/master_threads/Debug/
|
||||
lib_acl_cpp/samples/master/master_udp/Debug/
|
||||
lib_acl_cpp/samples/master_aio_proxy/Debug/
|
||||
lib_acl_cpp/samples/md5/Debug/
|
||||
lib_acl_cpp/samples/memcache_pool/Debug/
|
||||
lib_acl_cpp/samples/mime/mail_build/Debug/
|
||||
lib_acl_cpp/samples/mime/mime/Debug/
|
||||
lib_acl_cpp/samples/mime/mime_base64/Debug/
|
||||
lib_acl_cpp/samples/mime/mime_qp/Debug/
|
||||
lib_acl_cpp/samples/redis/redis/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_client_cluster/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_client_cluster2/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_cluster/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_connection/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_geo/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_hash/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_hyperloglog/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_key/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_list/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_manager/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_pool/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_pubsub/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_set/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_string/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_trans/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_zset/Debug/
|
||||
lib_acl_cpp/samples/redis/redis_zset_pool/Debug/
|
||||
lib_acl_cpp/samples/rfc2047/Debug/
|
||||
lib_acl_cpp/samples/scan_dir/Debug/
|
||||
lib_acl_cpp/samples/singleton/Debug/
|
||||
lib_acl_cpp/samples/smtp_client/Debug/
|
||||
lib_acl_cpp/samples/socket_stream/Debug/
|
||||
lib_acl_cpp/samples/ssl/https_proxy/Debug/
|
||||
lib_acl_cpp/samples/ssl/ssl_client/Debug/
|
||||
lib_acl_cpp/samples/ssl/ssl_server/Debug/
|
||||
lib_acl_cpp/samples/string/blank_line/Debug/
|
||||
lib_acl_cpp/samples/string/string1/Debug/
|
||||
lib_acl_cpp/samples/string/string2/Debug/
|
||||
lib_acl_cpp/samples/string/string3/Debug/
|
||||
lib_acl_cpp/samples/thread/Debug/
|
||||
lib_acl_cpp/samples/thread_pool/Debug/
|
||||
lib_acl_cpp/samples/xml/xml1/Debug/
|
||||
lib_acl_cpp/samples/xml/xml2/Debug/
|
||||
lib_acl_cpp/src/acl_stdafx.hpp.gch
|
||||
lib_protocol/Debug/
|
||||
lib_protocol/debug/
|
||||
lib_rpc/Debug/
|
||||
android/acl/.externalNativeBuild
|
||||
android/acl/.gradle
|
||||
android/acl/.idea
|
||||
android/acl/build
|
||||
android/acl/gradle
|
||||
|
||||
# xmake
|
||||
.xmake
|
||||
.DS_Store
|
||||
.idea
|
||||
.vs
|
||||
.vscode
|
||||
|
||||
cmake-build-debug
|
@ -1,219 +0,0 @@
|
||||
---
|
||||
# The image used to start a container to do build jobs, which should has all
|
||||
# build depencies installed
|
||||
# coverage: '/total:[\t]*statements[\t]*\d+\.\d+%/'
|
||||
# coverage: '/total:[\t]*\(statements\)[\t]*\d+\.\d+%/'
|
||||
|
||||
variables:
|
||||
{
|
||||
JOB_NAME: "${CI_PROJECT_NAME}"
|
||||
}
|
||||
|
||||
.projecttest: &TEST
|
||||
image: ${BUILDIMAGES}
|
||||
stage: test
|
||||
script:
|
||||
- echo "OK"
|
||||
|
||||
.projectbuild: &BUILD
|
||||
image: ${BUILDIMAGES}
|
||||
stage: build
|
||||
script:
|
||||
- yum install -y zlib-devel
|
||||
- cd packaging && make
|
||||
artifacts:
|
||||
paths:
|
||||
- packaging/x86_64/acl-libs-*.rpm
|
||||
- packaging/x86_64/acl-master-*.rpm
|
||||
only:
|
||||
- /^check-.*$/
|
||||
except:
|
||||
- tags@cdn-cloud/acl
|
||||
|
||||
.basepublishdev: &DEVEL
|
||||
image: ${BUILDIMAGES}
|
||||
stage: publish
|
||||
script:
|
||||
- yum install -y zlib-devel
|
||||
- cd packaging && make
|
||||
- cd ${CI_PROJECT_DIR} && /tools/publish.sh
|
||||
coverage: '/lines......: \d+\.\d+%/'
|
||||
only:
|
||||
- /^devel-.*$/
|
||||
artifacts:
|
||||
paths:
|
||||
- packaging/x86_64/acl-libs-*.rpm
|
||||
- packaging/x86_64/acl-master-*.rpm
|
||||
|
||||
.lib_release: &LIB_RELEASE
|
||||
image: ${BUILDIMAGES}
|
||||
stage: publish
|
||||
script:
|
||||
- yum install -y zlib-devel
|
||||
- cd packaging && make
|
||||
- cd ${CI_PROJECT_DIR} && /tools/publish.sh -t prerelease
|
||||
coverage: '/lines......: \d+\.\d+%/'
|
||||
only:
|
||||
- /^release-.*$/
|
||||
artifacts:
|
||||
paths:
|
||||
- packaging/x86_64/acl-libs-*.rpm
|
||||
#- packaging/x86_64/acl-master-*.rpm
|
||||
|
||||
.frame_release: &FRAME_RELEASE
|
||||
image: ${BUILDIMAGES}
|
||||
stage: publish
|
||||
script:
|
||||
- yum install -y zlib-devel
|
||||
- cd packaging && make PKG_NAME=acl-master
|
||||
- cd ${CI_PROJECT_DIR} && /tools/publish.sh -t prerelease
|
||||
coverage: '/lines......: \d+\.\d+%/'
|
||||
only:
|
||||
- /^master-.*$/
|
||||
artifacts:
|
||||
paths:
|
||||
- packaging/x86_64/*.rpm
|
||||
|
||||
stages:
|
||||
- test
|
||||
- publish
|
||||
|
||||
test:centos:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:5.8"
|
||||
}
|
||||
<<: *TEST
|
||||
|
||||
devel:centos5.8:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:5.8"
|
||||
}
|
||||
<<: *DEVEL
|
||||
|
||||
devel:centos5.9:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:5.9"
|
||||
}
|
||||
<<: *DEVEL
|
||||
|
||||
devel:centos6.4:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:6.4"
|
||||
}
|
||||
<<: *DEVEL
|
||||
|
||||
devel:centos6.6:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:6.6"
|
||||
}
|
||||
<<: *DEVEL
|
||||
|
||||
devel:centos7.0:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:7.0"
|
||||
}
|
||||
<<: *DEVEL
|
||||
|
||||
devel:centos7.2:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:7.2"
|
||||
}
|
||||
<<: *DEVEL
|
||||
|
||||
lib_release:centos5.8:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:5.8"
|
||||
}
|
||||
<<: *LIB_RELEASE
|
||||
|
||||
lib_release:centos5.9:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:5.9"
|
||||
}
|
||||
<<: *LIB_RELEASE
|
||||
|
||||
lib_release:centos6.4:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:6.4"
|
||||
}
|
||||
<<: *LIB_RELEASE
|
||||
|
||||
lib_release:centos6.6:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:6.6"
|
||||
}
|
||||
<<: *LIB_RELEASE
|
||||
|
||||
lib_release:centos7.0:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:7.0"
|
||||
}
|
||||
<<: *LIB_RELEASE
|
||||
|
||||
lib_release:centos7.2:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:7.2"
|
||||
}
|
||||
<<: *LIB_RELEASE
|
||||
|
||||
frame_release:centos5.8:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:5.8"
|
||||
}
|
||||
<<: *FRAME_RELEASE
|
||||
|
||||
frame_release:centos5.9:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:5.9"
|
||||
}
|
||||
<<: *FRAME_RELEASE
|
||||
|
||||
frame_release:centos6.4:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:6.4"
|
||||
}
|
||||
<<: *FRAME_RELEASE
|
||||
|
||||
frame_release:centos6.6:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:6.6"
|
||||
}
|
||||
<<: *FRAME_RELEASE
|
||||
|
||||
frame_release:centos7.0:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:7.0"
|
||||
}
|
||||
<<: *FRAME_RELEASE
|
||||
|
||||
frame_release:centos7.2:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:7.2"
|
||||
}
|
||||
<<: *FRAME_RELEASE
|
||||
|
||||
frame_release:centos8.2:
|
||||
variables: {
|
||||
BUILDIMAGES:
|
||||
"docker-registry.qiyi.virtual/acl/centos-builder:8.2"
|
||||
}
|
||||
<<: *FRAME_RELEASE
|
@ -1,187 +0,0 @@
|
||||
# Generated by YCM Generator at 2021-11-18 20:34:43.424020
|
||||
|
||||
# This file is NOT licensed under the GPLv3, which is the license for the rest
|
||||
# of YouCompleteMe.
|
||||
#
|
||||
# Here's the license text for this file:
|
||||
#
|
||||
# This is free and unencumbered software released into the public domain.
|
||||
#
|
||||
# Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||
# distribute this software, either in source code form or as a compiled
|
||||
# binary, for any purpose, commercial or non-commercial, and by any
|
||||
# means.
|
||||
#
|
||||
# In jurisdictions that recognize copyright laws, the author or authors
|
||||
# of this software dedicate any and all copyright interest in the
|
||||
# software to the public domain. We make this dedication for the benefit
|
||||
# of the public at large and to the detriment of our heirs and
|
||||
# successors. We intend this dedication to be an overt act of
|
||||
# relinquishment in perpetuity of all present and future rights to this
|
||||
# software under copyright law.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
# OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# For more information, please refer to <http://unlicense.org/>
|
||||
|
||||
import os
|
||||
import ycm_core
|
||||
|
||||
flags = [
|
||||
'-isystem'
|
||||
'./lib_acl/include',
|
||||
'-isystem'
|
||||
'./lib_protocol/include',
|
||||
'-isystem'
|
||||
'./lib_acl_cpp/include',
|
||||
'-isystem'
|
||||
'./lib_fiber/c/include',
|
||||
'-isystem'
|
||||
'./lib_fiber/cpp/include',
|
||||
|
||||
'-x',
|
||||
'c++',
|
||||
'-I.',
|
||||
'-I./lib_acl/include',
|
||||
'-I./lib_acl/src',
|
||||
'-I./lib_protocol/include',
|
||||
'-I./lib_protocol/src',
|
||||
'-I./lib_acl_cpp/include',
|
||||
'-I./lib_acl_cpp/src',
|
||||
'-I./lib_fiber/c/include',
|
||||
'-I./lib_fiber/c/src',
|
||||
'-I./lib_fiber/cpp/include',
|
||||
'-I./lib_fiber/cpp/src',
|
||||
'-DACL_PREPARE_COMPILE',
|
||||
'-DACL_WRITEABLE_CHECK',
|
||||
'-DHAVE_CONFIG_H',
|
||||
'-DNO_TCMALLOC_SAMPLES',
|
||||
'-DUSE_BOOST_JMP',
|
||||
'-DUSE_FAST_RING',
|
||||
'-D_FILE_OFFSET_BITS=64',
|
||||
'-D_POSIX_PTHREAD_SEMANTICS',
|
||||
'-D_REENTRANT',
|
||||
'-D_USE_FAST_MACRO',
|
||||
'-D__CLASSIC_C__',
|
||||
'-W',
|
||||
'-Wall',
|
||||
'-Wdeclaration-after-statement',
|
||||
'-Werror',
|
||||
'-Wno-long-long',
|
||||
'-Wpointer-arith',
|
||||
'-Wshadow',
|
||||
'-Wuninitialized',
|
||||
'-std=c++11',
|
||||
]
|
||||
|
||||
|
||||
# Set this to the absolute path to the folder (NOT the file!) containing the
|
||||
# compile_commands.json file to use that instead of 'flags'. See here for
|
||||
# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html
|
||||
#
|
||||
# You can get CMake to generate this file for you by adding:
|
||||
# set( CMAKE_EXPORT_COMPILE_COMMANDS 1 )
|
||||
# to your CMakeLists.txt file.
|
||||
#
|
||||
# Most projects will NOT need to set this to anything; you can just change the
|
||||
# 'flags' list of compilation flags. Notice that YCM itself uses that approach.
|
||||
compilation_database_folder = ''
|
||||
|
||||
if os.path.exists( compilation_database_folder ):
|
||||
database = ycm_core.CompilationDatabase( compilation_database_folder )
|
||||
else:
|
||||
database = None
|
||||
|
||||
SOURCE_EXTENSIONS = ['.cpp', '.cxx', '.cc', '.c' ]
|
||||
|
||||
def DirectoryOfThisScript():
|
||||
return os.path.dirname( os.path.abspath( __file__ ) )
|
||||
|
||||
|
||||
def MakeRelativePathsInFlagsAbsolute( flags, working_directory ):
|
||||
if not working_directory:
|
||||
return list( flags )
|
||||
new_flags = []
|
||||
make_next_absolute = False
|
||||
path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]
|
||||
for flag in flags:
|
||||
new_flag = flag
|
||||
|
||||
if make_next_absolute:
|
||||
make_next_absolute = False
|
||||
if not flag.startswith( '/' ):
|
||||
new_flag = os.path.join( working_directory, flag )
|
||||
|
||||
for path_flag in path_flags:
|
||||
if flag == path_flag:
|
||||
make_next_absolute = True
|
||||
break
|
||||
|
||||
if flag.startswith( path_flag ):
|
||||
path = flag[ len( path_flag ): ]
|
||||
new_flag = path_flag + os.path.join( working_directory, path )
|
||||
break
|
||||
|
||||
if new_flag:
|
||||
new_flags.append( new_flag )
|
||||
return new_flags
|
||||
|
||||
|
||||
def IsHeaderFile( filename ):
|
||||
extension = os.path.splitext( filename )[ 1 ]
|
||||
return extension in [ '.H', '.h', '.hxx', '.hpp', '.hh' ]
|
||||
|
||||
|
||||
def GetCompilationInfoForFile( filename ):
|
||||
# The compilation_commands.json file generated by CMake does not have entries
|
||||
# for header files. So we do our best by asking the db for flags for a
|
||||
# corresponding source file, if any. If one exists, the flags for that file
|
||||
# should be good enough.
|
||||
if IsHeaderFile( filename ):
|
||||
basename = os.path.splitext( filename )[ 0 ]
|
||||
for extension in SOURCE_EXTENSIONS:
|
||||
replacement_file = basename + extension
|
||||
if os.path.exists( replacement_file ):
|
||||
compilation_info = database.GetCompilationInfoForFile(
|
||||
replacement_file )
|
||||
if compilation_info.compiler_flags_:
|
||||
return compilation_info
|
||||
return None
|
||||
return database.GetCompilationInfoForFile( filename )
|
||||
|
||||
|
||||
def FlagsForFile( filename, **kwargs ):
|
||||
if database:
|
||||
# Bear in mind that compilation_info.compiler_flags_ does NOT return a
|
||||
# python list, but a "list-like" StringVec object
|
||||
compilation_info = GetCompilationInfoForFile( filename )
|
||||
if not compilation_info:
|
||||
return None
|
||||
|
||||
final_flags = MakeRelativePathsInFlagsAbsolute(
|
||||
compilation_info.compiler_flags_,
|
||||
compilation_info.compiler_working_dir_ )
|
||||
|
||||
else:
|
||||
relative_to = DirectoryOfThisScript()
|
||||
final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to )
|
||||
|
||||
return {
|
||||
'flags': final_flags,
|
||||
'do_cache': True
|
||||
}
|
||||
|
||||
def Settings( **kwargs ):
|
||||
language = kwargs[ 'language' ]
|
||||
if language == 'cfamily':
|
||||
return {
|
||||
'flags': flags
|
||||
}
|
||||
|
||||
return {}
|
@ -1,125 +0,0 @@
|
||||
## acl 库的编译及使用
|
||||
|
||||
* acl 库的功能参见文章[acl介绍](http://zsxxsz.iteye.com/blog/576517) 及 [acl工程](https://github.com/acl-dev/acl/),本文主要讲述如何编译和使用 acl 库。
|
||||
|
||||
* acl 库其实包含七个库:lib_acl (基础库)、lib_protocol(http 和 icmp 协议库)、lib_acl_cpp(封装了 lib_acl 和 lib_protocol 两个 C 库的 C++ 版本封装,更是增加了丰富的功能)、lib_fiber(功能强大的网络协程库,使开发者可以象使用 Go 语言一样快速编写基于协程的高并发服务应用)、lib_dict(封装了 bdb, cdb, Tokyo Cabinet 库的用于字典查询的库)、lib_tls(封装了openssl部分功能的库,主要用于 lib_acl 的 ssl 加密传输)以及 lib_rpc(封装了 Google 的 protobuf 的库)。其中,笔者用的最多还是 lib_acl 、lib_protocol 以及 lib_acl_cpp(目前用得最多的库)三个库,所以本文主要介绍这三个库的编译与使用。
|
||||
* acl 库目前支持 Linux、Solaris、FreeBSD、MacOS、IOS、Android 和 Windows 平台,欢迎读者将 acl 库移植至其它平台。
|
||||
|
||||
* [一、Linux/UNIX 平台上编译](#一linuxunix-平台上编译)
|
||||
* [1、编译静态库](#1编译静态库)
|
||||
* [1.1、编译 libacl.a 库](#11编译-libacla-库)
|
||||
* [1.2、编译 libprotocol.a 库](#12编译-libprotocola-库)
|
||||
* [1.3、编译 libacl_cpp.a 库](#13编译-libacl_cppa-库)
|
||||
* [2、编译动态库](#2编译动态库)
|
||||
* [3、编译成单一库](#3编译成单一库)
|
||||
* [4、使用 cmake 编译](#4使用-cmake-编译)
|
||||
* [二、Windows 平台](#二windows-平台)
|
||||
* [1 编译(vc2003/vc2008/vc2010/vc2012)](#1-编译)
|
||||
* [2 使用](#2-使用)
|
||||
* [三、 注意事项](#三注意事项)
|
||||
|
||||
### 一、Linux/UNIX 平台上编译
|
||||
需要使用 gcc/g++编译器及 gnu make 命令。
|
||||
### 1、编译静态库
|
||||
#### 1.1、编译 libacl.a 库
|
||||
使用 gcc 编译:进入 lib_acl 目录,直接运行 make,正常情况下便可在 lib 目录下生成 libacl.a 静态库,用户在使用 libacl.a 编写自己的程序时,需要在自己的 Makefile 文件中添加如下选项:
|
||||
##### 1.1.1、编译选项:-I 指定 libacl.a 头文件所在目录(头文件在 lib_acl/include 目录下)
|
||||
##### 1.1.2、链接选项:-L 指定 libacl.a 所在目录,-lacl 指定需要链接 libacl.a 库
|
||||
##### 1.1.3、用户需要在自己的源程序中包含 lib_acl 的头文件,如下:
|
||||
|
||||
#include "lib_acl.h"
|
||||
|
||||
简单的 Makefile 示例:
|
||||
|
||||
~~~doc
|
||||
test: main.o
|
||||
gcc -o test main.o -lacl -lz -lpthread -ldl
|
||||
main.o: main.c
|
||||
gcc -O3 -Wall -c main.c -I./lib_acl/include
|
||||
~~~~
|
||||
|
||||
#### 1.2、编译 libprotocol.a 库
|
||||
使用 gcc 编译:进入 lib_protocol 目录,直接运行 make,正常情况下便可以在 lib 目录下生成 lib_protocol.a 静态库,用户在使用 lib_protocol.a 编写自己的程序时,需要在自己的 Makefile 文件中添加如下选项:
|
||||
##### 1.2.1、编译选项:-I 指定 lib_protocol.a 头文件目录(在 lib_protocol/include 目录下)
|
||||
##### 1.2.2、链接选项:-L 指定 lib_protocol.a 所在目录,-L 指定 lib_acl.a 所在目录,-l_protocol -l_acl
|
||||
##### 1.2.3、用户需要在自己的应用程序中包含 lib_protocol 头文件,如下:
|
||||
|
||||
#include "lib_protocol.h"
|
||||
|
||||
简单的 Makefile 示例:
|
||||
|
||||
~~~doc
|
||||
test: main.o
|
||||
gcc -o test main.o -lprotocol -lacl -lz -lpthread -ldl
|
||||
main.o: main.c
|
||||
gcc -O3 -Wall -c main.c -I./lib_acl/include -I./lib_protocol/include
|
||||
~~~
|
||||
|
||||
#### 1.3、编译 libacl_cpp.a 库
|
||||
使用 g++ 编译器: 进入 lib_acl_cpp 目录,运行 make static 编译 libacl_cpp.a 静态库,便可 lib 目录下生成 libacl_cpp.a,用户在使用 libacl_cpp.a 编写程序时,需要在自己的 Makefile 文件中添加如下选项:
|
||||
##### 1.3.1、编译选项:-I 指定 libacl_cpp.a 头文件目录(在 lib_acl_cpp/include 目录下)
|
||||
##### 1.3.2、链接选项:-L
|
||||
指定 libacl_cpp.a 所在目录,-L 指定 libprotocol.a 所在目录,-L 指定 libacl.a 目录。如:-L./lib_acl_cpp/lib -lacl_cpp -L./lib_protocol/lib -lprotocol -L./lib_acl/lib -lacl,一定要注意这三个库的依赖关系:libprotocol.a 依赖于 libacl.a,libacl_cpp.a 依赖于 libprotocol.a 及 lib_acl.a,在使用 g++ 进行编译时必须保证库的依赖顺序,被依赖的库总是应放在后面,否则在链接程序时会报函数不存在。
|
||||
##### 1.3.3、用户需要在自己的应用中包含 lib_acl.hpp 头文件,如下:
|
||||
|
||||
#include "acl_cpp/lib_acl.hpp"
|
||||
|
||||
简单的 Makefile 示例:
|
||||
|
||||
~~~doc
|
||||
test: main.o
|
||||
g++ -o test main.o -lacl_cpp -lprotocol -lacl -lz -lpthread -ldl
|
||||
main.o: main.cpp
|
||||
g++ -O3 -Wall -c main.cpp -I./lib_acl_cpp/include -I./lib_acl/include -I./lib_protocol/include
|
||||
~~~
|
||||
|
||||
如果程序仅用到了 libacl_cpp.a 库中类及函数,则只需要包含 libacl_cpp.a 的头文件即可,至于该库所依赖的 libprotocol.a 及 libacl.a 库的头文件已经做了特殊隐含处理,不必显式包含。
|
||||
|
||||
### 2、编译动态库
|
||||
|
||||
编译 libacl.so, libprotocol.so, libacl_cpp.so 的方式与编译静态库的方式有所不同,需要分别进入三个目录执行: make shared rpath=${lib_path},其中 shared 表示需要编译动态库,${lib_path} 需要用实际的目标路径替换,比如:make shared rpath=/opt/acl/lib,则会将动态库编译好后存放于 /opt/acl/lib 目录,编译这三个库的顺序为:libacl.so --> libprotocol.so --> libacl_cpp.so。
|
||||
另外,在编译 libacl_cpp.so 时,还需要提前编译在 resource 目录下的 polarssl 库,编译完后再编译 libacl_cpp.so 同时需要指定 polarssl.lib 库所在的路径;如果不需要 SSL 通讯方式,则需要打开 lib_acl_cpp/Makefile 文件,去年编译选项:-DHAS_POLARSSL。
|
||||
|
||||
应用程序在使用这三个动态库时的头文件的包含方式与静态库的相同,连接动态库的方式与静态库类似,只是将 .a 替换成 .so 即可,同时也要求包含的顺序与上述静态库相同。如:
|
||||
- a、编译时的头文件包含方式:-I/opt/acl/include/acl -I/opt/acl/include/protocol -II/opt/acl/include
|
||||
- b、连接时的库文件包含方式:-L/opt/acl/lib -lacl_cpp -lprotocol -lacl
|
||||
- c、运行时的库文件加载方式:-Wl,-rpath,/opt/acl/lib,该参数指定程序运行时需要加载三个动态库的位置在 /opt/acl/lib 目录下。
|
||||
|
||||
### 3、编译成单一库
|
||||
为了方便使用,还提供了将以上三个库合成一个库的方法,在 acl 库目录下运行:make build_one,则会生成统一库:libacl_all.a 及 libacl_all.so,该库包含了 libacl,lib_protocol,lib_acl_cpp 三个库。则编写的 Makefile 就更为简单:
|
||||
~~~
|
||||
test: main.o
|
||||
g++ -o test main.o -lacl_all -lz -lpthread -ldl
|
||||
main.o: main.cpp
|
||||
g++ -O3 -Wall -c main.cpp -I./lib_acl_cpp/include -I./lib_acl/include -I./lib_protocol/include
|
||||
~~~
|
||||
### 4、使用 cmake 编译
|
||||
除以上使用 make 工具对 acl 库进行编译外,同时提供了使用 cmake 工具对 acl 库进行编译,编译过程非常简单:
|
||||
~~~
|
||||
$mkdir build
|
||||
$cd build
|
||||
$cmake ..
|
||||
$make
|
||||
~~~
|
||||
### 二、Windows 平台
|
||||
### 1 编译
|
||||
|
||||
在 acl 项目的根目录下,多个 VC 的工程文件,用户可根据自身需要打开工程文件:acl_cpp_vc2003.sln,acl_cpp_vc2008.sln,acl_cpp_vc2010.sln,acl_cpp_vc2012.sln(最早也支持VC6)。用户可以选择编译 lib_acl、lib_protocol、lib_acl_cpp 的静态库调试版、静态库发布版、动态库调试版以及动态库发布版,编译完成后,会在 acl\dist\lib\win32 目录生成的静态库有:
|
||||
lib_acl_vc20xxd.lib、lib_acl_vc20xx.lib、lib_protocol_vc20xxd.lib 和 lib_protocol_vc20xx.lib;
|
||||
生成的与动态库相关的文件有:lib_acl_d.dll/lib_acl_d.lib,lib_acl.dll/lib_acl.lib,lib_protocol_d.dll/lib_protocol_d.lib,lib_protocol.dll/lib_protocol.lib,lib_acl_cpp_d.dll/lib_acl_cpp_d.lib,lib_acl_cpp.dll/lib_acl_cpp.lib。
|
||||
|
||||
### 2 使用
|
||||
|
||||
- a)在 win32 平台下使用 lib_acl 和 lib_protocol 静态库时,只需要在包含目录中添加
|
||||
lib_acl/include、lib_protocol/include 以及 lib_acl_cpp/include
|
||||
所在的路径,在链接时指定静态库路径及静态库名称。
|
||||
- b)在 win32 平台下使用 lib_acl 的动态库时,不仅要做与 a) 中所指定的操作,而且需要在预处理器定义中添加:ACL_DLL;在使用 lib_protocol 的动态库,需要在预处理器定义中添加:HTTP_DLL 和 ICMP_DLL;在使用 lib_acl_cpp 的动态库时,需要在预处理器定义中添加:ACL_CPP_DLL。
|
||||
|
||||
### 三、注意事项
|
||||
因为 lib_acl 是最基础的库,而 lib_protocol 依赖于 lib_acl,lib_acl_cpp 依赖于 lib_protocol 和 lib_acl,所在生成动态库时,需要注意生成顺序,编译顺序为:lib_acl,lib_protocol,lib_acl_cpp。
|
||||
|
||||
- 个人微博:http://weibo.com/zsxxsz/
|
||||
- acl 下载:https://sourceforge.net/p/acl/
|
||||
- github 地址:https://github.com/acl-dev/acl/
|
||||
- osc git 地址:https://git.oschina.net/acl-dev/acl
|
||||
- QQ 群:242722074
|
@ -1,95 +0,0 @@
|
||||
cmake_minimum_required(VERSION 2.8.0)
|
||||
project(Acl)
|
||||
#message(${CMAKE_SYSTEM_NAME})
|
||||
|
||||
#if(COMMAND CMAKE_POLICY)
|
||||
# message(STATUS "Set CMake Policy")
|
||||
# if(CMAKE_VERSION GREATER "2.8")
|
||||
# CMAKE_POLICY(set CMP0015 OLD)
|
||||
# CMAKE_POLICY(set CMP0010 OLD)
|
||||
# CMAKE_POLICY(set CMP0011 OLD)
|
||||
# endif(CMAKE_VERSION GREATER "2.8")
|
||||
#endif(COMMAND CMAKE_POLICY)
|
||||
|
||||
enable_testing()
|
||||
|
||||
#include(CheckCCompilerFlag)
|
||||
#check_c_compiler_flag("-std=c99" COMPILER_SUPPORTS_C99)
|
||||
#check_c_compiler_flag("-std=c89" COMPILER_SUPPORTS_C89)
|
||||
#if(COMPILER_SUPPORTS_C99)
|
||||
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
|
||||
#elseif(COMPILER_SUPPORTS_C89)
|
||||
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c89")
|
||||
#else()
|
||||
# message(STATUS "The cc compiler ${CMAKE_C_COMPILER} has no C99 or C89 support. Please use a different cc compiler.")
|
||||
#endif()
|
||||
|
||||
#include(CheckCXXCompilerFlag)
|
||||
#check_cxx_compiler_flag("-std=c++11" COMPILER_SUPPORTS_CXX11)
|
||||
#check_cxx_compiler_flag("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
|
||||
#if(COMPILER_SUPPORTS_CXX11)
|
||||
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
#elseif(COMPILER_SUPPORTS_CXX0X)
|
||||
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
||||
#else()
|
||||
# message(STATUS "The c++ compiler ${CMAKE_CXX_COMPILER} has no C++11 or C++0x support. Please use a different c++ compiler.")
|
||||
#endif()
|
||||
|
||||
#set(CMAKE_BUILD_TYPE Release)
|
||||
#set(CMAKE_BUILD_TYPE Release CACHE STRING "set build type to release")
|
||||
|
||||
if (${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR})
|
||||
message(FATAL_ERROR "Please into another dir to build!")
|
||||
endif()
|
||||
|
||||
#string(TOUPPER ${CMAKE_SYSTEM_NAME} CMAKE_SYSTEM_NAME)
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "Android")
|
||||
message(STATUS "current platform: Android")
|
||||
message(STATUS "current ndk path: ${CMAKE_ANDROID_NDK}")
|
||||
elseif (CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
message(STATUS "current platform: Linux")
|
||||
elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
||||
message(STATUS "current platform: Darwin")
|
||||
set(CMAKE_MACOSX_RPATH build)
|
||||
elseif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
|
||||
message(STATUS "current platform: FreeBSD")
|
||||
include_directories(
|
||||
#/usr/include/c++/4.2
|
||||
#/usr/include/c++/4.2/backward
|
||||
/usr/local/include
|
||||
/usr/include
|
||||
)
|
||||
|
||||
link_directories(
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
)
|
||||
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--export-dynamic")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,./:./lib:../:../lib")
|
||||
elseif (CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
message(STATUS "current platform: Windows")
|
||||
else()
|
||||
message(FATAL_ERROR "unknown CMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}")
|
||||
endif()
|
||||
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
||||
set(CMAKE_MACOSX_RPATH build)
|
||||
endif()
|
||||
|
||||
add_subdirectory(lib_acl acl)
|
||||
add_subdirectory(lib_protocol protocol)
|
||||
add_subdirectory(lib_acl_cpp acl_cpp)
|
||||
if (ACL_BUILD_SHARED MATCHES "YES")
|
||||
add_dependencies(protocol acl)
|
||||
add_dependencies(acl_cpp protocol acl)
|
||||
endif()
|
||||
|
||||
#if (CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Android")
|
||||
#if (CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
||||
add_subdirectory(lib_fiber/c fiber)
|
||||
add_subdirectory(lib_fiber/cpp fiber_cpp)
|
||||
if (ACL_BUILD_SHARED MATCHES "YES")
|
||||
add_dependencies(fiber_cpp acl_cpp protocol acl fiber)
|
||||
endif()
|
||||
#endif()
|
@ -1,257 +0,0 @@
|
||||
## acl库使用FAQ
|
||||
|
||||
* [一、基础问题](#一基础问题)
|
||||
* [1、acl 库是啥、主要包含哪些功能?](#1acl-库是啥主要包含哪些功能)
|
||||
* [2、acl 库支持哪些平台?](#2acl-库支持哪些平台)
|
||||
* [3、acl 库主要包含几个库?](#3acl-库主要包含几个库)
|
||||
* [4、acl 库有哪些外部依赖库?](#4acl-库有哪些外部依赖库)
|
||||
* [5、没有这些第三方库 acl 能否使用?](#5没有这些第三方库-acl-能否使用)
|
||||
* [6、acl 库的源码下载位置在哪儿?](#6acl-库的源码下载位置在哪儿)
|
||||
* [二、编译&使用问题](#二编译使用问题)
|
||||
* [1、acl 库的编译过程?](#1acl-库的编译过程)
|
||||
* [2、Linux 平台下库的编译顺序问题?](#2linux-平台下库的编译顺序问题)
|
||||
* [3、Unix/Linux 平台下编译 acl 库时的编译选项是什么](#3unixlinux-平台下编译-acl-库时的编译选项是什么)
|
||||
* [4、请给出 Linux 平台下最简单的一个 Makefile?](#4请给出-linux-平台下最简单的一个-makefile)
|
||||
* [5、Linux 平台下找不到 libz.a 库怎么办?](#5linux-平台下找不到-libza-库怎么办)
|
||||
* [6、Linux 平台下 acl 库能打包成一个库吗?](#6linux-平台下-acl-库能打包成一个库吗)
|
||||
* [7、Linux 平台下如何使用 ssl 功能?](#7linux-平台下如何使用-ssl-功能)
|
||||
* [8、Linux 下如何使用 mysql 功能?](#8linux-下如何使用-mysql-功能)
|
||||
* [三、各个功能模块的使用问题](#三各个功能模块的使用问题)
|
||||
* [(一)、网络通信](#一网络通信)
|
||||
* [(二)、HTTP 模块](#二http-模块)
|
||||
* [1. acl HTTP 服务器是否支持断点下载功能?](#1-acl-http-服务器是否支持断点下载功能)
|
||||
* [2. acl HTTP 服务器是否支持文件上传功能?](#2-acl-http-服务器是否支持文件上传功能)
|
||||
* [3. acl HTTP 模块是否支持服务器/客户端两种模式?](#3-acl-http-模块是否支持服务器客户端两种模式)
|
||||
* [4. acl HTTP 模块是否支持 websocket 通信协议?](#4-acl-http-模块是否支持-websocket-通信协议)
|
||||
* [5. acl HTTP 模块是否支持 session?](#5-acl-http-模块是否支持-session)
|
||||
* [6. HttpServletRequest 为何读不到 json 或 xml 数据体?](#6-HttpServletRequest-为何读不到-json-或-xml-数据体)
|
||||
* [7. http_request 因未设 Host 字段而出错的问题](#7-http_request-因未设-Host-字段而出错的问题)
|
||||
* [(三)、Redis 模块](#三redis-模块)
|
||||
* [1. acl redis 库是否支持集群功能?](#1-acl-redis-库是否支持集群功能)
|
||||
* [2. acl redis 库是如何划分的?](#2-acl-redis-库是如何划分的)
|
||||
* [3. acl redis 库中的哪些类对象操作是线程安全的?](#3-acl-redis-库中的哪些类对象操作是线程安全的)
|
||||
* [4. acl redis 客户库当连接断开时是否会重连?](#4-acl-redis-客户库当连接断开时是否会重连)
|
||||
* [(四)、协程模块](#四协程模块)
|
||||
* [1. 协程里面的非阻塞是什么原理的?](#1-协程里面的非阻塞是什么原理的)
|
||||
* [2. acl 协程库是否支持多线程?](#2-acl-协程库是否支持多线程)
|
||||
* [3. acl 协程库如何支持多核 CPU?](#3-acl-协程库如何支持多核-cpu)
|
||||
* [4. acl 协程里针对 mysql 客户端库的协程化是否修改了 mysql 库的源码?](#4-acl-协程里针对-mysql-客户端库的协程化是否修改了-mysql-库的源码)
|
||||
* [5. acl 协程库支持域名解析功能吗?](#5-acl-协程库支持域名解析功能吗)
|
||||
* [6. acl 协程库的系统 errno 号如何处理?](#6-acl-协程库的系统-errno-号如何处理)
|
||||
* [7. 如果启动的协程过多,会不会对于后端例如 mysql 之类服务造成并发压力?如何避免?](#7-如果启动的协程过多会不会对于后端例如-mysql-之类服务造成并发压力如何避免)
|
||||
* [(五)、服务器模块](#五服务器模块)
|
||||
* [1. 有几种服务器编程模型?均有何特点?](#1-有几种服务器编程模型均有何特点)
|
||||
* [2. acl_master 的作用是什么?支持哪些平台?](#2-acl_master-的作用是什么支持哪些平台)
|
||||
* [3. 没有 acl_master 控制管理,服务子进程是否可以单独运行?](#3-没有-acl_master-控制管理服务子进程是否可以单独运行)
|
||||
* [4. 手工模式下运行时遇到“idle timeout -- exiting, idle”怎么办?](#4-手工模式下运行时遇到idle-timeout----exiting-idle怎么办)
|
||||
* [5. acl_master 控制模式下,服务子进程如何预启动多个进程?](#5-acl_master-控制模式下服务子进程如何预启动多个进程)
|
||||
* [6. acl_master 控制模式下,如何只监听内网地址?](#6-acl_master-控制模式下如何只监听内网地址)
|
||||
* [(六)、数据库模块](#六数据库模块)
|
||||
* [1. acl 数据库客户端支持哪些数据库?](#1-acl-数据库客户端支持哪些数据库)
|
||||
* [2. acl 数据库模块如何使用?](#2-acl-数据库模块如何使用)
|
||||
* [(七)、邮件&mime模块](#七邮件mime模块)
|
||||
|
||||
### 一、基础问题
|
||||
### 1、acl 库是啥、主要包含哪些功能?
|
||||
acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架,同时提供更多的实用功能库。通过该库,用户可以非常容易地编写支持多种模式(多线程、多进程、非阻塞、触发器、UDP方式、协程方式)的服务器程序,WEB 应用程序,数据库应用程序。此外,该库还提供了常见应用的客户端通信库(如:HTTP、SMTP、ICMP、redis、disque、memcache、beanstalk、handler socket),常见流式编解码库:XML/JSON/MIME/BASE64/UUCODE/QPCODE/RFC2047 等。
|
||||
### 2、acl 库支持哪些平台?
|
||||
目前主要支持 Linux/Windows/Macos/Freebsd/Solaris(x86)。
|
||||
### 3、acl 库主要包含几个库?
|
||||
主要包括:lib_acl(用 C 语言写的基础库)、lib_protocol(用 C 语言写的一些网络应用协议库)、lib_acl_cpp(用 C++ 语言编写,封装了 lib_acl/lib_protocol 两个库,同时增加更多实用的功能库)、 lib_fiber(用 C 语言编写的支持高性能、高并发的网络协程库)、lib_rpc(用C++语言编写的封装了 google protobuf 网络库)。
|
||||
### 4、acl 库有哪些外部依赖库?
|
||||
lib_acl/lib_protocol/lib_fiber 仅依赖系统基础库;lib_acl_cpp 库的 db 模块依赖于 mysql 客户端库、sqlite 库,stream 流模块依赖于 polarssl 库(该库源码附在 acl/resource 目录下),另外,在 UNIX/LINUX 平台下还需要压缩库 --- libz 库(一般 LINUX 会自带该压缩库);lib_rpc 依赖于 protobuf 库。
|
||||
### 5、没有这些第三方库 acl 能否使用?
|
||||
可以。默认情况下,没有这些第三方库编译和使用 acl 库是没有问题的,只是不能使用 mysql/sqlite/ssl/protobuf 功能。
|
||||
### 6、acl 库的源码下载位置在哪儿?
|
||||
- github:https://github.com/acl-dev/acl/
|
||||
- oschina: https://git.oschina.net/acl-dev/acl/
|
||||
- sourceforge:https://sourceforge.net/projects/acl/
|
||||
|
||||
### 二、编译&使用问题
|
||||
### 1、acl 库的编译过程?
|
||||
acl 库的编译过程请参考:[acl 的编译与使用](http://zsxxsz.iteye.com/blog/1506554) 博客。
|
||||
### 2、Linux 平台下库的编译顺序问题?
|
||||
lib_acl 库是 acl 库中的基础库,其它库均依赖于该库,库的依赖顺序为:lib_protocol 依赖于 lib_acl,lib_acl_cpp 依赖于 lib_acl 和 lib_protocol,lib_fiber 依赖于 lib_acl,lib_rpc 依赖于 lib_acl/lib_protocol/lib_acl_cpp。因此当应用在连接 acl 库时,需要注意连接的顺序为:-l_acl_cpp -l_protocol -l_acl。
|
||||
### 3、Unix/Linux 平台下编译 acl 库时的编译选项是什么?
|
||||
在 Unix/Linux 平台下编译 acl 库时需要指明 gcc 的编译选项,acl 库自带的 Makefile 会自动识别操作系统而选择不同的编译选项,下面列出不同 Unix 平台的不同编译选项(当前版本已自动识别系统类型,无需添加如下编译选项):
|
||||
- Linux 平台:-DLINUX2
|
||||
- MacOS 平台:-DMACOSX
|
||||
- FreeBSD 平台:-DFREEBSD
|
||||
- Solaris(x86) 平台:-DSUNOS5
|
||||
|
||||
### 4、请给出 Linux 平台下最简单的一个 Makefile?
|
||||
下面是使用 acl 库的最简单的编译选项(因为排版问题,当拷贝下面内容至 Makefile 时,需要注意将每行前空格手工转成 TAB 键):
|
||||
~~~
|
||||
fiber: main.o
|
||||
g++ -o fiber main.o \
|
||||
-L./lib_fiber/lib -lfiber_cpp \
|
||||
-L./lib_acl_cpp/lib -l_acl_cpp \
|
||||
-L./lib_protocol/lib -l_protocol \
|
||||
-L./lib_acl/lib -l_acl \
|
||||
-L./lib_fiber/lib -lfiber \
|
||||
-lz -lpthread -ldl
|
||||
main.o: main.cpp
|
||||
g++ -O3 -Wall -c main.cpp -DLINUX2 \
|
||||
-I./lib_acl/include \
|
||||
-I./lib_acl_cpp/include \
|
||||
-I./lib_fiber/cpp/include \
|
||||
-I./lib_fiber/c/include
|
||||
~~~
|
||||
### 5、Linux 平台下找不到 libz.a 库怎么办?
|
||||
一般 Unix/Linux 平台下系统会自带 libz.a 或 libz.so 压缩库,如果找不到该库,则可以在线安装或采用编译安装 zlib 库,针对 Centos 和 Ubuntu 可分别通过以下方式在线安装(均需切换至 root 身份):
|
||||
- Centos:yum install zlib-devel
|
||||
- Ubuntu:apt-get install zlib1g.dev
|
||||
|
||||
### 6、Linux 平台下 acl 库能打包成一个库吗?
|
||||
可以。在 acl 目录下运行:make build_one 则可以将 lib_acl/lib_protocol/lib_acl_cpp 打包成一个完整的库:lib_acl.a/lib_acl.so,则应用最终使用时可以仅连接这一个库即可。
|
||||
|
||||
### 7、Linux 平台下如何使用 ssl 功能?
|
||||
目前 acl 中的 lib_acl_cpp C++ 库通过集成 polarssl 支持 ssl 功能,所支持的 polarssl 源码的下载位置:https://github.com/acl-dev/third_party, 老版本 acl 通过静态连接 libpolarssl.a 实现对 ssl 的支持,当前版本则是通过动态加载 libpolarssl.so 方式实现了对 ssl 的支持,此动态支持方式更加灵活方便,无须特殊编译条件,也更为通用。
|
||||
#### 7.1、老版本 acl 对 ssl 的支持方式
|
||||
如果使用上面统一的 acl 库,则可以在 acl 根目录下编译时运行:make build_one polarssl=on;如果使用三个库:lib_acl.a,lib_protocol.a,lib_acl_cpp.a,则在编译前需要先指定环境变量:export ENV_FLAGS=HAS_POLARSSL,然后分别编译这三个库;解压 polarssl-1.2.19-gpl.tgz,然后进入 polarssl-1.2.19 目录运行:make 编译后在 polarssl-1.2.19/library 目录得到 libpolarssl.a 库;最后在编译应用时将 libpolarssl.a 连接进你的工程中即可。
|
||||
#### 7.2、当前版本 acl 对 ssl 的支持方式
|
||||
- 首先下载解压 polarssl 库后进入polarssl-1.2.19 目录,运行 make lib SHARED=yes,在library 目录下会生成 libpolarssl.so 动态库;
|
||||
- 在 acl 根目录下运行 make build_one,则会将 acl 的三个基础库:libacl.a, libprotocol.a, libacl_cpp.a 合成 libacl_all.a 一个静态库,将 libacl.so, libprotocol.so, lib_acl_cpp.so 合成 libacl_all.so 一个动态库;
|
||||
- 当程序启动时添加代码:acl::polarssl_conf::set_libpath("libpolarssl.so"); 其中的路径根据实际位置而定,这样 acl 模块在需要 ssl 通信时会自动切换至 ssl 方式。
|
||||
|
||||
### 8、Linux 下如何使用 mysql 功能?
|
||||
lib_acl_cpp 库是以动态加载方式加载 mysql 动态库的,所以在编译 lib_acl_cpp 时,mysql 功能就已经被编译进去 acl库中了。用户仅需要将 mysql 动态库通过函数 acl::db_handle::set_loadpath 注册进 acl 库中即可;至于 mysql 客户端库,用户可以去 mysql 官方下载或在 acl/resource 目录下编译 mysql-connector-c-6.1.6-src.tar.gz。
|
||||
|
||||
### 三、各个功能模块的使用问题
|
||||
### (一)、网络通信
|
||||
### (二)、HTTP 模块
|
||||
#### 1. acl HTTP 服务器是否支持断点下载功能?
|
||||
支持。acl HTTP 模块支持断点续传功能,一个支持断点下载的服务器示例参照:acl\app\wizard_demo\httpd_download。
|
||||
|
||||
#### 2. acl HTTP 服务器是否支持文件上传功能?
|
||||
支持。参考示例:acl\app\wizard_demo\httpd_upload。
|
||||
|
||||
#### 3. acl HTTP 模块是否支持服务器/客户端两种模式?
|
||||
支持。目前 acl 的 HTTP 协议模块同时支持客户端及服务端模式,即你既可以使用 acl HTTP 编写客户端程序,又可以编写服务器程序,其中 acl 中的 http_request/http_request_pool/http_request_manager 类用来编写客户端程序,http_response/HttpServlet/HttpServletRequest/HttpServeletResponse 用来编写服务器程序。
|
||||
|
||||
#### 4. acl HTTP 模块是否支持 websocket 通信协议?
|
||||
支持。可以参考示例:lib_acl_cpp\samples\websocket。
|
||||
|
||||
#### 5. acl HTTP 模块是否支持 session?
|
||||
支持。acl HTTP 模块当用在服务器编程时支持 session 存储,目前支持使用 memcached 或 redis 存储 session 数据。
|
||||
|
||||
#### 6. HttpServletRequest 为何读不到 json 或 xml 数据体
|
||||
当 HTTP 客户端请求的数据体为 json 或 xml 时,默认情况下从 acl::HttpServletRequest 对象中是读不到 json/xml 数据的,主要原因在于 HttpServletRequest 内置了自动读取并解析 json/xml/x-www-form-urlencoded 类型数据的功能,使用者只需直接获取解析后的对象即可,如针对 json 类数据体:
|
||||
|
||||
```c++
|
||||
void get_json(acl::HttpServletRequest& req)
|
||||
{
|
||||
acl::json* json = req.getJson();
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
如果应用想自己读取并解析 json 数据,则需要在调用 acl::HttpServlet::setParseBody(false),禁止 acl::HttpServletRequest 类对象内部自动读取数据。
|
||||
|
||||
#### 7. http_request 因未设 Host 字段而出错的问题
|
||||
在使用 acl::http_request 类对象访问标准 WEB 服务器(如:nginx)时,如果没有设置 HTTP 请求头中的 Host 字段,nginx 会返回 400 错误,主要是 HTTP/1.1 协议要求 HTTP 客户端必须设置 Host 字段,方法如下:
|
||||
|
||||
```c++
|
||||
bool http_client(void)
|
||||
{
|
||||
acl::http_request req("www.sina.com.cn:80");
|
||||
acl::http_header& hdr = req.request_header();
|
||||
hdr.set_url("/").set_host("www.sina.com.cn");
|
||||
if (!req.request(NULL, 0)) {
|
||||
return false;
|
||||
}
|
||||
acl::string body;
|
||||
if (req.get_body(body)) {
|
||||
printf("%s\r\n", body.c_str());
|
||||
}
|
||||
|
||||
...
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### (三)、Redis 模块
|
||||
#### 1. acl redis 库是否支持集群功能?
|
||||
答案:是,acl redis 客户端库同时支持集群和单机方式的 redis-server。
|
||||
|
||||
#### 2. acl redis 库是如何划分的?
|
||||
acl redis 客户端库主要分为两类:命令类和连接类:
|
||||
- **命令类主要有**:redis_key, redis_string, redis_hash, redis_list, redis_set, redis_zset, redis_cluster, redis_geo, redis_hyperloglog, redis_pubsub, redis_transaction, redis_server, redis_script, 这些类都继承于基类 redis_command,同时子类 redis 又继承了所有这些命令类,以便于用户可以直接使用 acl::redis 操作所有的 redis 客户端命令;
|
||||
- **连接类主要有**:redis_client, redis_client_pool, redis_client_cluster,命令类对象通过这些连接类对象与 redis-server 进行交互,redis_client 为单连接类,redis_client_pool 为连接池类,这两个类仅能在非集群模式的 redis-server 环境中使用,不支持 redis-server 的集群模式,必须使用 redis_client_cluster 连接集群模式的 redis-server,同时 redis_client_cluster 也兼容非集群模式的连接。
|
||||
|
||||
#### 3. acl redis 库中的哪些类对象操作是线程安全的?
|
||||
acl redis 库中的所有命令类对象及 redis_client 单连接类对象不能同时被多个线程使用(就象 std::string 一样不能跨线程使用);redis_client_pool,redis_client_cluster 两个连接类对象是线程操作安全的,同一个对象可以被多个线程同时使用。
|
||||
|
||||
#### 4. acl redis 客户库当连接断开时是否会重连?
|
||||
acl redis 库中的连接类中:redis_client,redis_client_pool,redis_client_cluster 三个连接类对象当检测到网络连接异常断开时会尝试自动重连,上层使用者无需考虑连接断开重试的情况。
|
||||
|
||||
### (四)、协程模块
|
||||
#### 1. 协程里面的非阻塞是什么原理的?
|
||||
比如我现在需要访问数据库,这个动作肯定是个阻塞的操作,如果有10个协程进行数据库访问,这个非阻塞是怎么理解的?
|
||||
协程方式在底层将系统的 IO API(read/write 等)都 hook 了,数据库操作也要调用这些API,所以表面上的阻塞式DB操作在协程底层的IO也会被转为非阻塞模式。
|
||||
|
||||
#### 2. acl 协程库是否支持多线程?
|
||||
acl 协程库支持多线程方式,只是支持的方式与 go 语言有所不同。用户可以创建多个线程,每个线程一个协程调度器,线程之间的协程调度是相互隔离的,正如多进程与多线程之间的关系一样(每个进程内可以启动多个线程,但进程之间的线程的调度过程是隔离的),在每个线程内部可以创建大量 acl 协程,每个协程均由其所属的线程内的协程调度器调度运行。
|
||||
|
||||
#### 3. acl 协程库如何支持多核 CPU?
|
||||
正如 2)所说,用户可以启动多个线程,每个线程一个 acl 协程调度器,每个协程调度器负责调度与其同属相同线程的协程运行状态。
|
||||
|
||||
#### 4. acl 协程里针对 mysql 客户端库的协程化是否修改了 mysql 库的源码?
|
||||
没有。mysql 客户端库使用的系统 IO API 为 read/write/poll,而 acl 协程库 HOOK 了系统底层的 IO 过程,因此当将用户程序与 mysql 库及 acl 协程库一起编译后,mysql 库的 IO 过程直接被 acl 协程库 HOOK 的 API 接管,从而将 mysql 客户端库协程化而无须修改一行 mysql 库代码。
|
||||
|
||||
#### 5. acl 协程库支持域名解析功能吗?
|
||||
支持。很多 C/C++ 实现的协程库并未实现 gethostbyname(_r) 函数,导致用户在使用协程编程遇到域名解析时还需要借助单独的线程来完成,acl 库本身从 DNS 协议层次实现了域名解析过程,acl 协程库基于此功能模块 HOOK 了系统的 gethostbyname(_r) API 而无须借助第三方函数库或起单独的线程完成域名解析。
|
||||
|
||||
#### 6. acl 协程库的系统 errno 号如何处理?
|
||||
acl 协程库实现了协程安全的 errno 号,正如之前使用多线程编程时 errno 可以与每个线程绑定一样,在 acl 协程库里 errno 也是与每个 acl 协程进行绑定的。因此,当你调用 strerror(errno) 时也是协程安全的。
|
||||
|
||||
#### 7. 如果启动的协程过多,会不会对于后端例如 mysql 之类服务造成并发压力?如何避免?
|
||||
当启动用协程较多且都需要 mysql 操作时的确会造成 mysql 服务器的并发压力。为避免此并发压力,acl 协程库提供了协程信号量,用来针对后端不支持高并发的服务提供连接保护。
|
||||
|
||||
### (五)、服务器模块
|
||||
#### 1. 有几种服务器编程模型?均有何特点?
|
||||
目前 acl 库中提供:进程池模型、线程池模型、非阻塞模型、协程模型、UDP 通信模型、触发器模型。其中各个编程模型的特点如下:
|
||||
|
||||
__进程池模型:__ 每个进程处理一个客户端连接,当需要处理多个连接时则需要启动多个进程,此模型的最大缺点是并发度低,优点是编程简单;
|
||||
__线程池模型:__ 由多个线程组成线程池处理大量的客户端连接,只有当某个连接有数据可读时该连接才会与一个线程绑定,处理完毕则线程归还给线程池,此模型的优点是启动少数线程便处理较大并发,缺点是需要注意线程编程时的线程安全问题;
|
||||
__非阻塞模型:__ 一个进程内仅有一个工作线程,通过采用非阻塞通信方式可以支持非常大的客户端并发连接,优点是资源消耗小、支持大并发、性能高,缺点是编程复杂度高;
|
||||
__协程模型:__ 每个客户端连接与一个协程绑定,每个进程内一个工作线程,每个线程内可以创建大 量的协程,优点是支持大并发、性能高、编程简单、应用场景比较广,缺点是占用内存要比非阻塞模型高;
|
||||
__UDP通信模型:__ 支持简单的 UDP 通信方式;触发器模型:常用在定时任务的应用场景中。
|
||||
以上的服务模型均可启动多个进程,通过配置文件的配置项来决定启动进程的数量。
|
||||
|
||||
#### 2. acl_master 的作用是什么?支持哪些平台?
|
||||
acl_master 为由以上各个服务器编写的服务进程的控制管理程序, acl_master
|
||||
启动、停止各个服务子进程,控制子进程的启动数量及预启动策略,监控子进程的异常情况;acl_master 有点类似于 LINUX 下的 xinetd 服务进程,不同之处是 acl_master 功能更完善强大,支持服务子进程的常驻留、半驻留,而 xinetd 则只针对一个连接创建一个进程,不能用于高并发的服务应用场景。
|
||||
目前 acl_master 进程仅支持 LINUX/MACOS/FREEBSD/SOLARIS(X86)等 UNIX 平台,不支持 WINDOWS 平台。
|
||||
#### 3. 没有 acl_master 控制管理,服务子进程是否可以单独运行?
|
||||
|
||||
可以。在没有 acl_master 的情况下,由以上各个服务模型编写的服务程序可以通过手工方式启动。启动方式一般为:./xxxx alone xxxx.cf,这样服务程序便以 alone 模式启动运行,具体情况可以参考 main.cpp 里的启动方式;在 WINDOWS 平台下只能是以 alone 模式手工启动运行。
|
||||
|
||||
#### 4. 手工模式下运行时遇到"idle timeout -- exiting, idle"怎么办?
|
||||
因为 acl 的服务器编程模型均支持半驻留方式(即运行空闲一段时间或处理连接次数达到设定值后会自动退出,这样的好处是:可以定期通过进程退出释放可能存在的资源泄露,另一方面便于用户在开发时通过 valgrind 进行内存检查),如果让进程不退出,可以在 alone 模式下给服务程序传递启动配置文件,如启动方式为:./xxxx alone xxxx.cf(传递方式可以看 main.cpp 和相关头文件),不同的服务器模型分别采取下面不同的配置项:
|
||||
|
||||
__程池模型:__ 将配置项 single_use_limit 和 single_idle_limit 设为 0;
|
||||
__线程池模型:__ 将配置项 ioctl_use_limit 和 ioctl_idle_limit 设为 0;
|
||||
__非阻塞模型:__ 将配置项 aio_use_limit 和 aio_idle_limit 设为 0;
|
||||
__协程模型:__ 将配置项 fiber_use_limit 和 fiber_idle_limit 设为 0;
|
||||
__UDP通信模型:__ 将配置项 udp_use_limit 和 udp_idle_limit 设为 0;
|
||||
__触发器模型:__ 将配置项 trigger_use_limit 设为 0。
|
||||
|
||||
#### 5. acl_master 控制模式下,服务子进程如何预启动多个进程?
|
||||
需要修改每个服务子进程的配置文件,将配置项:master_maxproc 及 master_prefork 设置成要启动的进程数(设置值需相同),同时需要将 xxx_use_limit 及 xxx_idle_limit 配置项设成 0 以防止子进程空闲退出,xxx_use_limit 及 xxx_idle_limit 的依每种服务器模型而不同,具体可参考上面(4)中的说明。
|
||||
|
||||
#### 6. acl_master 控制模式下,如何只监听内网地址?
|
||||
在 acl_master 模式下,可以将 master_service 配置项支持模糊匹配方式,即可以将监听地址写成 `192.168.*.*:8192` 或 `10.0.*.*:8192` 方式,这样 acl_master 会自动扫描服务器所有的网卡地址,但只监听服务匹配条件的内网地址,这样为统一部署提供方便。
|
||||
|
||||
### (六)、数据库模块
|
||||
#### 1. acl 数据库客户端支持哪些数据库?
|
||||
当前 acl 数据库客户端库支持的数据库有:mysql,postgresql,sqlite。
|
||||
#### 2. acl 数据库模块如何使用?
|
||||
acl 数据库模块封装了官方数据库的驱动(包括 mysql,postgresql,sqlite),所以使用者应先下载所对应的官方数据库驱动,考虑到版本的一致性,建议从 https://github.com/acl-dev/third_party 处下载;
|
||||
另外,acl 数据库模块是采用动态加载方式加载数据库驱动的,所以使用者应将编译好的数据库动态库放置在合适的位置,并调用 `acl::db_handle::set_loadpath()` 设置数据库驱动动态库的全路径,以便于 acl 数据库模块内部可以使用该路径进行动态加载。
|
||||
|
||||
### (七)、邮件&mime模块
|
||||
。。。
|
||||
|
||||
- 微博:http://weibo.com/zsxxsz
|
||||
- qq 群:242722074
|
@ -1,165 +0,0 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
@ -1,260 +0,0 @@
|
||||
SHELL = /bin/sh
|
||||
#CC = g++
|
||||
CC = ${ENV_CC}
|
||||
#AR = ar
|
||||
AR = ${ENV_AR}
|
||||
ARFL = rv
|
||||
#RANLIB = ranlib
|
||||
RANLIB = ${ENV_RANLIB}
|
||||
|
||||
#OSNAME = $(shell uname -sm)
|
||||
OSNAME = $(shell uname -s)
|
||||
OSTYPE = $(shell uname -m)
|
||||
|
||||
DESTDIR =
|
||||
PREFIX = usr
|
||||
BIN_PATH = $(DESTDIR)/$(PREFIX)/bin/
|
||||
LIB_ACL = $(DESTDIR)/$(PREFIX)/lib
|
||||
INC_ACL = $(DESTDIR)/$(PREFIX)/include/acl-lib
|
||||
|
||||
LIB_DIST = ./dist/lib
|
||||
INC_PATH = ./dist/include
|
||||
|
||||
RPATH =
|
||||
DATE_NOW = 20`date +%y`.`date +%m`.`date +%d`
|
||||
MAKE_ARGS =
|
||||
|
||||
SYSLIB = -lpthread -lz
|
||||
LDFLAGS = -shared
|
||||
polarssl =
|
||||
|
||||
ifeq ($(CC),)
|
||||
CC = g++
|
||||
endif
|
||||
|
||||
ifeq ($(AR),)
|
||||
AR = ar
|
||||
endif
|
||||
|
||||
ifeq ($(RANLIB),)
|
||||
RANLIB = ranlib
|
||||
endif
|
||||
|
||||
ifeq ($(findstring on, $(polarssl)), on)
|
||||
CFLAGS += -DHAS_POLARSSL
|
||||
endif
|
||||
|
||||
ifeq ($(findstring Linux, $(OSNAME)), Linux)
|
||||
ifeq ($(findstring i686, $(OSTYPE)), i686)
|
||||
RPATH = linux32
|
||||
endif
|
||||
ifeq ($(findstring x86_64, $(OSTYPE)), x86_64)
|
||||
RPATH = linux64
|
||||
endif
|
||||
ifeq ($(findstring aarch64, $(OSTYPE)), aarch64)
|
||||
RPATH = aarch64
|
||||
endif
|
||||
n = `cat /proc/cpuinfo | grep processor | wc -l`
|
||||
MAKE_ARGS = -j $(n)
|
||||
SYSLIB += -lrt -ldl
|
||||
endif
|
||||
|
||||
# For Darwin
|
||||
ifeq ($(findstring Darwin, $(OSNAME)), Darwin)
|
||||
# CC += -arch x86_64 -arch arm64
|
||||
RPATH = macos
|
||||
SYSLIB += -rdynamic -L/usr/lib -liconv
|
||||
LDFLAGS = -dynamiclib -shared
|
||||
endif
|
||||
|
||||
ifeq ($(findstring FreeBSD, $(OSNAME)), FreeBSD)
|
||||
RPATH = freebsd
|
||||
SYSLIB += -L/usr/local/lib -liconv
|
||||
endif
|
||||
|
||||
ifeq ($(findstring SunOS, $(OSNAME)), SunOS)
|
||||
ifeq ($(findstring i386, $(OSTYPE)), i386)
|
||||
RPATH = sunos_x86
|
||||
endif
|
||||
SYSLIB += -liconv
|
||||
endif
|
||||
|
||||
##############################################################################
|
||||
|
||||
.PHONY = check help all_lib all samples all clean install uninstall uninstall_all build_one
|
||||
VERSION = 3.5.3-13
|
||||
|
||||
default: build_one acl_master
|
||||
help h:
|
||||
@(echo "usage: make help|all|all_lib|all_samples|clean|install|uninstall|uninstall_all|build_one")
|
||||
all_lib:
|
||||
@if test "$(polarssl)" = "on"; then \
|
||||
ENV_FLAGS = $(ENV_FLAGS):HAS_POLARSSL \
|
||||
export ENV_FLAGS; \
|
||||
else \
|
||||
export ENV_FLAGS; \
|
||||
fi
|
||||
# @(cd lib_acl; make pch)
|
||||
@(cd lib_acl; make $(MAKE_ARGS))
|
||||
@(cd lib_protocol; make $(MAKE_ARGS))
|
||||
@(cd lib_acl_cpp; make check)
|
||||
# @(cd lib_acl_cpp; make pch)
|
||||
@(cd lib_acl_cpp; make $(MAKE_ARGS))
|
||||
@(cd lib_rpc; make $(MAKE_ARGS))
|
||||
@if test "$(OSNAME)" = "Linux" -o "$(OSNAME)" = "FreeBSD" -o "$(OSNAME)" = "Darwin"; then cd lib_fiber; make; fi
|
||||
all_samples: all_lib
|
||||
@(cd unit_test; make $(MAKE_ARGS))
|
||||
@(cd lib_acl/samples; make)
|
||||
@(cd lib_protocol/samples; make)
|
||||
@(cd lib_acl_cpp/samples; make)
|
||||
# @(cd lib_dict; make $(MAKE_ARGS))
|
||||
# @(cd lib_tls; make $(MAKE_ARGS))
|
||||
all: all_lib acl_master all_samples
|
||||
clean cl:
|
||||
@(cd lib_acl; make clean)
|
||||
@(cd lib_protocol; make clean)
|
||||
@(cd lib_acl_cpp; make clean)
|
||||
@(cd lib_fiber; make clean)
|
||||
@(cd lib_rpc; make clean)
|
||||
@(cd unit_test; make clean)
|
||||
@(cd lib_acl/samples; make clean)
|
||||
@(cd lib_protocol/samples; make clean)
|
||||
@(cd app; make clean)
|
||||
@(rm -f libacl_all.a libacl.a)
|
||||
@(rm -f libacl_all.so libacl.so)
|
||||
# @(cd lib_dict; make clean)
|
||||
# @(cd lib_tls; make clean)
|
||||
|
||||
acl_master: all_lib
|
||||
@(cd app/master/daemon; make $(MAKE_ARGS); make install)
|
||||
@(cd app/master/tools/lib_global; make $(MAKE_ARGS);)
|
||||
@(cd app/master/tools/master_ctl; make $(MAKE_ARGS); make install)
|
||||
|
||||
packinstall:
|
||||
@(echo "")
|
||||
@(echo "begin copy file...")
|
||||
$(shell mkdir -p $(INC_ACL)/acl)
|
||||
$(shell mkdir -p $(INC_ACL)/acl_cpp)
|
||||
$(shell mkdir -p $(INC_ACL)/protocol)
|
||||
$(shell mkdir -p $(LIB_ACL))
|
||||
@echo "copying lib_acl/include/* $(INC_ACL)/acl/"
|
||||
@cp -Rf lib_acl/include/* $(INC_ACL)/acl/
|
||||
@echo "copying lib_acl_cpp/include/acl_cpp/* $(INC_ACL)/acl_cpp/"
|
||||
@cp -Rf lib_acl_cpp/include/acl_cpp/* $(INC_ACL)/acl_cpp/
|
||||
@echo "copying lib_protocol/include/* $(INC_ACL)/protocol/"
|
||||
@cp -Rf lib_protocol/include/* $(INC_ACL)/protocol/
|
||||
@echo "copying libacl_all.a $(LIB_ACL)/libacl_all.a";
|
||||
@cp -f libacl_all.a $(LIB_ACL)/libacl_all.a;
|
||||
@if test "$(OSNAME)" = "Linux"; then \
|
||||
$(shell mkdir -p $(INC_ACL)/fiber) \
|
||||
$(shell mkdir -p $(INC_ACL)/fiber/detail) \
|
||||
echo "copying lib_fiber/c/include/fiber/* $(INC_ACL)/fiber/"; \
|
||||
cp -f lib_fiber/c/include/fiber/* $(INC_ACL)/fiber/; \
|
||||
echo "copying lib_fiber/cpp/include/fiber/* $(INC_ACL)/fiber/"; \
|
||||
cp -f lib_fiber/cpp/include/fiber/* $(INC_ACL)/fiber/; \
|
||||
cp -f lib_fiber/cpp/include/fiber/detail/* $(INC_ACL)/fiber/detail/; \
|
||||
echo "copying lib_fiber/lib/libfiber.a $(LIB_ACL)/libfiber.a"; \
|
||||
cp -f lib_fiber/lib/libfiber.a $(LIB_ACL)/libfiber.a; \
|
||||
echo "copying lib_fiber/lib/libfiber_cpp.a $(LIB_ACL)/libfiber_cpp.a"; \
|
||||
cp -f lib_fiber/lib/libfiber_cpp.a $(LIB_ACL)/libfiber_cpp.a; \
|
||||
fi
|
||||
|
||||
install_master:
|
||||
$(shell mkdir -p $(BIN_PATH))
|
||||
$(shell mkdir -p $(DESTDIR)/opt/soft/services/)
|
||||
$(shell mkdir -p $(DESTDIR)/opt/soft/acl-master/conf/service)
|
||||
$(shell mkdir -p ./dist/master/libexec/$(RPATH))
|
||||
$(shell mkdir -p ./dist/master/bin/$(RPATH))
|
||||
@(cd app/master/daemon; make install)
|
||||
@(cd app/master/tools/master_ctl; make install)
|
||||
@(cd lib_fiber; make)
|
||||
#@echo "copying app/master/daemon/acl_master $(BIN_PATH)"
|
||||
#@cp -f app/master/daemon/acl_master $(BIN_PATH)
|
||||
@(cd dist/master && ./setup.sh $(DESTDIR) /opt/soft/acl-master)
|
||||
|
||||
install:
|
||||
@(echo "")
|
||||
@(echo "begin copy file...")
|
||||
$(shell mkdir -p $(INC_PATH)/acl)
|
||||
$(shell mkdir -p $(INC_PATH)/protocol)
|
||||
$(shell mkdir -p $(INC_PATH)/acl_cpp)
|
||||
$(shell mkdir -p $(LIB_DIST)/$(RPATH))
|
||||
$(shell mkdir -p ./dist/master/libexec/$(RPATH))
|
||||
cp -f app/master/daemon/acl_master ./dist/master/libexec/$(RPATH)/
|
||||
cp -f libacl_all.a $(LIB_DIST)/$(RPATH)/
|
||||
cp -f lib_acl/lib/libacl.a $(LIB_DIST)/$(RPATH)/
|
||||
cp -f lib_acl_cpp/lib/libacl_cpp.a $(LIB_DIST)/$(RPATH)/
|
||||
cp -f lib_protocol/lib/libprotocol.a $(LIB_DIST)/$(RPATH)/
|
||||
cp -Rf lib_acl/include/* $(INC_PATH)/acl/
|
||||
cp -Rf lib_protocol/include/* $(INC_PATH)/protocol/
|
||||
cp -Rf lib_acl_cpp/include/acl_cpp/* $(INC_PATH)/acl_cpp/
|
||||
|
||||
uninstall:
|
||||
@(echo "")
|
||||
@(echo "begin remove file...")
|
||||
rm -f ./dist/master/libexec/$(RPATH)/*
|
||||
rm -f $(LIB_DIST)/$(RPATH)/libacl_all.a
|
||||
rm -f $(LIB_DIST)/$(RPATH)/libacl.a
|
||||
rm -f $(LIB_DIST)/$(RPATH)/libprotocol.a
|
||||
rm -f $(LIB_DIST)/$(RPATH)/libacl_cpp.a
|
||||
rm -f $(LIB_DIST)/$(RPATH)/lib_dict.a
|
||||
rm -f $(LIB_DIST)/$(RPATH)/lib_tls.a
|
||||
rm -Rf $(INC_PATH)/protocol/*
|
||||
rm -Rf $(INC_PATH)/acl_cpp/*
|
||||
rm -Rf $(INC_PATH)/acl/*
|
||||
rm -Rf $(INC_PATH)/dict/*
|
||||
rm -Rf $(INC_PATH)/tls/*
|
||||
|
||||
uninstall_all:
|
||||
@(echo "")
|
||||
@(echo "begin remove all dist files ...")
|
||||
rm -Rf $(INC_PATH)/acl/*
|
||||
rm -Rf $(INC_PATH)/protocol/*
|
||||
rm -Rf $(INC_PATH)/acl_cpp/*
|
||||
rm -Rf $(INC_PATH)/dist/*
|
||||
rm -Rf $(INC_PATH)/tls/*
|
||||
rm -f ./dist/master/libexec/linux32/*
|
||||
rm -f ./dist/master/libexec/linux64/*
|
||||
rm -f ./dist/master/libexec/sunos_x86/*
|
||||
rm -f ./dist/master/libexec/freebsd/*
|
||||
rm -f $(LIB_DIST)/linux32/*.a
|
||||
rm -f $(LIB_DIST)/linux64/*.a
|
||||
rm -f $(LIB_DIST)/sunos_x86/*.a
|
||||
rm -f $(LIB_DIST)/freebsd/*.a
|
||||
rm -f $(LIB_DIST)/win32/*.lib
|
||||
rm -f $(LIB_DIST)/win32/*.dll
|
||||
rm -f win32_build/vc/lib_acl/*.map
|
||||
rm -f win32_build/vc/lib_acl/*.ilk
|
||||
rm -f win32_build/vc/lib_protocol/*.map
|
||||
rm -f win32_build/vc/lib_protocol/*.ilk
|
||||
|
||||
RELEASE_PATH = release
|
||||
build_one: all_lib
|
||||
@(mkdir -p $(RELEASE_PATH); mkdir -p $(RELEASE_PATH)/acl; \
|
||||
mkdir -p $(RELEASE_PATH)/protocol; \
|
||||
mkdir -p $(RELEASE_PATH)/acl_cpp)
|
||||
@(cp lib_acl/lib/libacl.a $(RELEASE_PATH)/acl/)
|
||||
@(cp lib_protocol/lib/libprotocol.a $(RELEASE_PATH)/protocol/)
|
||||
@(cp lib_acl_cpp/lib/libacl_cpp.a $(RELEASE_PATH)/acl_cpp/)
|
||||
@(cd $(RELEASE_PATH)/acl; ar -x libacl.a)
|
||||
@(cd $(RELEASE_PATH)/protocol; ar -x libprotocol.a)
|
||||
@(cd $(RELEASE_PATH)/acl_cpp; ar -x libacl_cpp.a)
|
||||
$(AR) $(ARFL) ./libacl_all.a $(RELEASE_PATH)/acl/*.o \
|
||||
$(RELEASE_PATH)/protocol/*.o $(RELEASE_PATH)/acl_cpp/*.o
|
||||
$(RANLIB) ./libacl_all.a
|
||||
rm -f libacl.a
|
||||
ln -s libacl_all.a libacl.a
|
||||
$(CC) $(LDFLAGS) -o ./libacl_all.so $(RELEASE_PATH)/acl_cpp/*.o \
|
||||
$(RELEASE_PATH)/protocol/*.o $(RELEASE_PATH)/acl/*.o \
|
||||
$(SYSLIB)
|
||||
rm -f libacl.so
|
||||
ln -s libacl_all.so libacl.so
|
||||
@(rm -rf $(RELEASE_PATH))
|
||||
@echo ""
|
||||
@echo "Over, libacl_all.a and libacl_all.so were built ok!"
|
||||
@echo ""
|
||||
|
||||
check:
|
||||
@(echo "TYPE: $(OSTYPE)")
|
||||
@(echo "OSNAME: $(OSNAME)")
|
||||
@(echo "RPATH: $(RPATH)")
|
@ -1,438 +0,0 @@
|
||||
[中文简体](README_CN.md)
|
||||
|
||||
# Acl -- One Advanced C/C++ Library for Unix/Windows
|
||||
|
||||
# 0. About Acl project
|
||||
The Acl (Advanced C/C++ Library) project is powerful multi-platform network communication library and service framework, suppoting LINUX, WIN32, Solaris, FreeBSD, MacOS, AndroidOS, iOS. Many applications written by Acl run on these devices with Linux, Windows, iPhone and Android and serve billions of users. There are some important modules in Acl project, including network communcation, server framework, application protocols, multiple coders, etc. The common protocols such as HTTP/SMTP/ICMP//MQTT/Redis/Memcached/Beanstalk/Handler Socket are implemented in Acl, and the codec library such as XML/JSON/MIME/BASE64/UUCODE/QPCODE/RFC2047/RFC1035, etc., are also included in Acl. Acl also provides unified abstract interface for popular databases such as Mysql, Postgresql, Sqlite. Using Acl library users can write database application more easily, quickly and safely.
|
||||
|
||||
Architecture diagram:
|
||||
![Overall architecture diagram](res/img/architecture_en.png)
|
||||
|
||||
<hr>
|
||||
|
||||
* [0. About Acl project](#0-about-acl-project)
|
||||
* [1. The six most important modules](#1-the-six-most-important-modules)
|
||||
* [1.1. Basic network module](#11-basic-network-module)
|
||||
* [1.2. Coroutine](#12-coroutine)
|
||||
* [1.3. HTTP module](#13-http-module)
|
||||
* [1.4. Redis client](#14-redis-client)
|
||||
* [1.5. MQTT module](#15-mqtt-module)
|
||||
* [1.6. Server framework](#16-server-framework)
|
||||
|
||||
* [2. The other important modules](#2-the-other-important-modules)
|
||||
* [2.1. MIME module](#21-mime-module)
|
||||
* [2.2. Codec module](#22-codec-module)
|
||||
* [2.3. Database module](#23-database-module)
|
||||
* [2.4. Connection pool manager](#24-connection-pool-manager)
|
||||
* [2.5. The other client libraries](#25-the-other-client-libraries)
|
||||
* [2.6. DNS module](#26-dns-module)
|
||||
|
||||
* [3. Platform support and compilation](#3-platform-support-and-compilation)
|
||||
* [3.1. Compiling Acl on different platforms](#31-compiling-acl-on-different-platforms)
|
||||
* [3.2. Precautions when compiling on Windows](#32-precautions-when-compiling-on-windows)
|
||||
|
||||
* [4. Quick start](#4-quick-start)
|
||||
* [4.1. The first demo with Acl](#41-the-first-demo-with-acl)
|
||||
* [4.2. Simple TCP server](#42-simple-tcp-server)
|
||||
* [4.3. Simple TCP client](#43-simple-tcp-client)
|
||||
* [4.4. Coroutine TCP server](#44-coroutine-tcp-server)
|
||||
* [4.5. One Http client](#45-one-http-client)
|
||||
* [4.6. Coroutine Http server](#46-coroutine-http-server)
|
||||
* [4.7. One Redis client](#47-one-redis-client)
|
||||
|
||||
* [5. More about](#5-more-about)
|
||||
* [5.1. Samples](#51-samples)
|
||||
* [5.2. FAQ](#52-faq)
|
||||
* [5.3. Who are using acl?](#53-who-are-using-acl)
|
||||
* [5.4. License](#54-license)
|
||||
* [5.5. Reference](#55-reference)
|
||||
|
||||
<hr>
|
||||
|
||||
# 1. The six most important modules
|
||||
As a C/C++ foundation library, Acl provides many useful functions for users to develop applications, including six important modules: Network, Coroutine, HTTP, Redis client, MQTT, and Server framework.
|
||||
|
||||
## 1.1. Basic network module
|
||||
- Stream processing module
|
||||
This module is the most basic streaming communication module for the entire acl network communication. It not only supports network streaming, but also supports file streaming. It mainly supports:
|
||||
- Read data by line, compatible with \r\n under win32, and compatible with the end of \n under UNIX
|
||||
- Read data by line but require automatic removal of the trailing \n or \r\n
|
||||
- Read data as a string separator
|
||||
- Read the specified length of data
|
||||
- Try to read a row of data or try to read the specified length of data
|
||||
- Detect network IO status
|
||||
- Write a row of data
|
||||
- Write data by formatter, similar to fprintf
|
||||
- File stream location operation, similar to fseek
|
||||
- Write a set of data at once, similar to writev under unix
|
||||
- Truncate the file, similar to ftrunk
|
||||
- Get the file size
|
||||
- Get the current file stream pointer location, similar to ftell
|
||||
- Get the file size
|
||||
- Obtain the local address and remote address of the network stream
|
||||
|
||||
- Network operation module
|
||||
- This module mainly supports network server monitoring (supports TCP/UDP/UNIX domain socket), network client connection (supports TCP/UNIX domain socket), DNS domain name query and result cache (supports calling system gethostbyname/getaddrinfo function and direct Send DNS protocol two ways), socket (socket) operation and take the local network card and other functions.
|
||||
- Non-blocking network flow
|
||||
- Support non-blocking mode connection, read (by row read, specified length read), write (write line, write specified length, write a set of data) and other operations.
|
||||
|
||||
- Common network application protocol library
|
||||
- It mainly supports common network application protocols, such as: HTTP, SMTP, ICMP, in which HTTP and ICMP modules implement blocking and non-blocking communication methods. In addition, the HTTP protocol supports server and client in C++ version of lib_acl_cpp. Two communication methods, when used as a server, support the interface usage similar to JAVA HttpServlet. When used as a client mode, it supports connection pool and cluster management. The module supports both cookie, session, and HTTP MIME file upload. Rich functions such as block transfer, automatic character set conversion, automatic decompression, and breakpoint resume.
|
||||
|
||||
- Common network communication library
|
||||
- Support memcached, beanstalk, handler socket client communication library, the communication library supports connection pool mode.
|
||||
|
||||
## 1.2. Coroutine
|
||||
The coroutine module in Acl can be used on multiple platforms, and there are many engineering practices in some important projects.
|
||||
- Run on Linux, MacOS, Windows, iOS and Android
|
||||
- Support x86, Arm architecture
|
||||
- Support select/poll/epoll/kqueue/iocp/win32 GUI message
|
||||
- The DNS protocol has been implemented in acl coroutine, so DNS API can also be used in coroutine model
|
||||
- Hook system IO API on Unix and Windows
|
||||
- **Read API:** read/readv/recv/recvfrom/recvmsg
|
||||
- **Write API:** write/writev/send/sendto/sendmsg/sendfile64
|
||||
- **Socket API:** socket/listen/accept/connect/setsockopt
|
||||
- **event API:** select/poll/epoll_create/epoll_ctl/epoll_wait
|
||||
- **DNS API:** gethostbyname/gethostbyname_r/getaddrinfo/freeaddrinfo
|
||||
- Support **shared stack** mode to minimize memory usage
|
||||
- Synchronization primitive
|
||||
- Coroutine **mutex**, **semphore** can be used between coroutines
|
||||
- Coroutine **event** can be used between coroutines and threads
|
||||
- For more information, see **[Using Acl fiber](lib_fiber/README_en.md)**
|
||||
|
||||
## 1.3. HTTP module
|
||||
Supports HTTP/1.1, can be used in client and server sides.
|
||||
- HttpServlet interface like Java(server side)
|
||||
- Connection pool mode(client side)
|
||||
- Chunked block transfer
|
||||
- Gzip compression/decompression
|
||||
- SSL encrypted
|
||||
- Breakpoints transmission
|
||||
- Setting/acquisition of cookies
|
||||
- Session managment(server side)
|
||||
- Websocket transmission
|
||||
- HTTP MIME format
|
||||
- Sync/Async mode
|
||||
- ...
|
||||
|
||||
## 1.4. Redis client
|
||||
The redis client module in Acl is powerful, high-performance and easy to use.
|
||||
- Support Bitmap/String/Hash/List/Set/Sorted Set/PubSub/HyperLogLog/Geo/Script/Stream/Server/Cluster/etc.
|
||||
- Provides stl-like C++ interface for each redis command
|
||||
- Automaticaly cache and adapt the changing of hash slots of the redis cluster on the client
|
||||
- Communication in single, cluster or pipeline mode
|
||||
- Connection pool be used in signle or cluster mode
|
||||
- High performance in cluster or pipline mode
|
||||
- Same interface for single, cluster and pipeline modes
|
||||
- Retry automatically for the reason of network error
|
||||
- Can be used in the shared stack coroutine mode
|
||||
- For more information, see **[Using Acl redis client](lib_acl_cpp/samples/redis/README.md)**
|
||||
|
||||
## 1.5. MQTT module
|
||||
The MQTT 3.1.1 version has been implemented in Acl, which has a stream parser, so can be used indepedentily of any IO mode.
|
||||
- Support **MQTT 3.1.1** protocol: CONNECT/CONNACK/PUBLISH/PUBACK/PUBREC/PUBREL/PUBCOMP/SUBSCRIBE/SUBACK/UNSUBSCRIBE/UNSUBACK/PINGREQ/PINGRESP/DISCONNECT
|
||||
- One class per command
|
||||
- Stream parser can be used for any IO mode
|
||||
- Data parsing separats from network communicationo
|
||||
- Can be used on client and server sides
|
||||
- For more information, see **[Using Acl MQTT](lib_acl_cpp/samples/mqtt/README.md)**
|
||||
|
||||
## 1.6. Server framework
|
||||
The most important module in Acl is the server framework, which helps users quickly write back-end services, such as web services. Tools in app/wizard can help users generate one appropriate service code within several seconds. The server framework of Acl includes two parts, one is the services manager, the other is the service written by Acl service template. The services manager named **acl_master** in Acl comes from the famous **MTA Postfix**, whose name is master, and acl_master has many extensions to master in order to be as one general services manager. There are six service templates in Acl that can be used to write application services, as below:
|
||||
- **Process service:** One connection one process, the advantage is that the programming is simple, safe and stable, and the disadvantage is that the concurrency is too low;
|
||||
- **Threads service:** Each process handles all client connections through a set of threads in the thread pool. The IO event trigger mode is used that a connection is bound to a thread only if it has readable data, and the thread will be released after processing the data. The service model's advantage is that it can handle a large number of client connections in one process with a small number of threads. Compare with the aio model, the programming is relatively simple;
|
||||
- **Aio service:** Similar to nginx/squid/ircd, one thread can handle a large number of client connections in a non-blocking IO manner. The advantages of this model are high processing efficiency and low resource consumption, while the disadvantages are more complex programming;
|
||||
- **Fiber service:** Although the non-blocking service model can obtain large concurrent processing capability, the programming complexity is high. The coroutine model combines the features of large concurrent processing and low programming complexity, enabling programmers to easily implement sequential IO programming;
|
||||
- **UDP service:** The model is mainly a service model supporting UDP communication process;
|
||||
- **Trigger service:** The model instance is mainly used to process the background service process of some scheduled tasks (similar to the system's crontab).
|
||||
|
||||
# 2. The other important modules
|
||||
|
||||
## 2.1. MIME module
|
||||
MIME(Multipurpose Internet Mail Extensions) format is widely used in email application. MIME format is too important that it can be used not only for email applications, but also for Web applications. MIME RFC such as RFC2045/RFC2047/RFC822 has been implemented in Acl. Acl has a MIME data stream parser that is indepedent of the IO model, so it can be used by synchronous or asynchronous IO programs.
|
||||
|
||||
## 2.2. Codec module
|
||||
Thare are some common codecs in Acl, such as Json, Xml, Base64, Url, etc., which are all stream parser and indepedent of IO communication. Json is very popular, so Acl also provides serialization/deserialization tools which can be used to transfer between Json data and C struct objects, which greatly improves the programming efficiency.
|
||||
|
||||
## 2.3. Database module
|
||||
The unified database interface in Acl is designed to easily and safely operate thease well-known open source databases such as Mysql, Postgresql and SQLite. The SQL codec is designed to escape the charactors to avoid the DB SQL attacks. When users use Acl to write database applications, Acl will dynamically load the dynamic libraries of Mysql, Postgresql or SQLite. The advantage of dynamic loading is that users who don't need the database functionality don't care about it at all.
|
||||
|
||||
## 2.4. Connection pool manager
|
||||
There's a genernal connection pool manager in Acl, which is used widely by the other important modules, including redis, database, and http modules, etc.
|
||||
|
||||
## 2.5. The other client libraries
|
||||
In addition to redis client, Acl also implements some other important client libraries, such as memcached client, handler-socket, beanstalk, disque and so on.
|
||||
|
||||
## 2.6. DNS module
|
||||
Acl not only wraps the system DNS API, such as getaddrinfo and gethostbyname, but also implements the DNS protocol specified in RFC1035. Users can use the DNS module in Acl to implement their own DNS client or server.
|
||||
|
||||
# 3. Platform support and compilation
|
||||
## 3.1. Compiling Acl on different platforms
|
||||
Acl project currently supports Linux, Windows, MacOS, FreeBSD, Solaris, Android, and iOS.
|
||||
- **Linux/UNIX:** The compiler is gcc/clang, enter **`acl/`** directory and run **`make`**, then libacl_all.a and libacl_all.so will be generated in acl/ directory, libacl_all.a is consist of three libraries including lib_acl.a, lib_protocol.a and libacl_cpp.a;
|
||||
- **Windows:** Can be compiled with VS2003/VS2008/VS2010/VS2012/VS2013/VS2015/VS2019. (If you need to compile with VS6/VS2005, you can refer to the compilation conditions of VS2003);
|
||||
- **MacOS/iOS:** Compiled with xcode;
|
||||
- **Android:** Open Adnroid's project in **`acl/android/acl_c++_shared/`** with **`Android Studio`**;
|
||||
- Support for cross platform compilation with **cmake**.
|
||||
|
||||
## 3.2. Precautions when compiling on Windows
|
||||
There are a few things to keep in mind when using dynamic libraries in a WIN32 environment:
|
||||
- When using the dynamic library of lib_acl, it needs to be predefined in the user's project: ACL_DLL;
|
||||
- When using the HTTP library or ICMP library in the lib_protocol dynamic library, you need to predefine HTTP_DLL or ICMP_DLL in the project;
|
||||
- When using the dynamic library of lib_acl_cpp, you need to predefine ACL_CPP_DLL in the project. If you use the VC2003 compiler environment, you need to predefine VC2003.
|
||||
- When using the dynamic library of lib_dict, you need to predefine DICT_DLL in the project;
|
||||
- When using a dynamic library of lib_tls, you need to predefine TLS_DLL in your project.
|
||||
- Detailed compilation process, see: [Compilation and use of acl library](BUILD.md)
|
||||
|
||||
# 4. Quick start
|
||||
## 4.1. The first demo with Acl
|
||||
```c++
|
||||
#include <iostream>
|
||||
#include "acl_cpp/lib_acl.hpp"
|
||||
|
||||
int main(void) {
|
||||
acl::string buf = "hello world!\r\n";
|
||||
std::cout << buf.c_str() << std::endl;
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
## 4.2. Simple TCP server
|
||||
```c++
|
||||
#include <thread>
|
||||
#include "acl_cpp/lib_acl.hpp"
|
||||
|
||||
void run(void) {
|
||||
const char* addr = "127.0.0.1:8088";
|
||||
acl::server_socket server;
|
||||
if (!server.open(addr)) { // Bind and listen the local address.
|
||||
return;
|
||||
}
|
||||
|
||||
while (true) {
|
||||
acl::socket_stream* conn = server.accept(); // Wait for connection.
|
||||
if (conn == NULl) {
|
||||
break;
|
||||
}
|
||||
std::thread thread([=] { // Start one thread to handle the connection.
|
||||
char buf[256];
|
||||
int ret = conn->read(buf, sizeof(buf), false); // Read data.
|
||||
if (ret > 0) {
|
||||
conn->write(buf, ret); // Write the received data.
|
||||
}
|
||||
delete conn;
|
||||
});
|
||||
thread.detach();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 4.3. Simple TCP client
|
||||
```c++
|
||||
#include "acl_cpp/lib_acl.hpp"
|
||||
|
||||
void run(void) {
|
||||
const char* addr = "127.0.0.1:8088";
|
||||
int conn_timeout = 5, rw_timeout = 10;
|
||||
acl::socket_stream conn;
|
||||
if (!conn.open(addr, conn_timeout, rw_timeout)) { // Connecting the server.
|
||||
return;
|
||||
}
|
||||
const char data[] = "Hello world!\r\n";
|
||||
if (conn.write(data, sizeof(data) - 1) == -1) { // Send data to server.
|
||||
return;
|
||||
}
|
||||
char buf[256];
|
||||
int ret = conn.read(buf, sizeof(buf) - 1, false);
|
||||
if (ret > 0) { // Read from server.
|
||||
buf[ret] = 0;
|
||||
std::cout << buf << std::endl;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 4.4. Coroutine TCP server
|
||||
```c++
|
||||
#include "acl_cpp/lib_acl.hpp"
|
||||
#include "fiber/go_fiber.hpp"
|
||||
|
||||
void run(void) {
|
||||
const char* addr = "127.0.0.1:8088";
|
||||
acl::server_socket server;
|
||||
if (!server.open(addr)) {
|
||||
return;
|
||||
}
|
||||
|
||||
go[&] { // Create one server coroutine to wait for connection.
|
||||
while (true) {
|
||||
acl::socket_stream* conn = server.accept();
|
||||
if (conn) {
|
||||
go[=] { // Create one client coroutine to handle the connection.
|
||||
char buf[256];
|
||||
int ret = conn->read(buf, sizeof(buf), false);
|
||||
if (ret > 0) {
|
||||
(void) conn->write(buf, ret);
|
||||
}
|
||||
delete conn;
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
acl::fiber::schedule(); // Start the coroutine scheculde process.
|
||||
}
|
||||
```
|
||||
|
||||
## 4.5. One Http client
|
||||
```c++
|
||||
#include "acl_cpp/lib_acl.hpp"
|
||||
|
||||
bool run(void) {
|
||||
acl::http_request conn("www.baidu.com:80");
|
||||
acl::http_header& header = conn.request_header()
|
||||
header.set_url("/")
|
||||
.set_keep_alive(false);
|
||||
.set_content_type("text/html");
|
||||
|
||||
if (!conn.request(NULL, 0)) {
|
||||
return false;
|
||||
}
|
||||
int status = conn.http_status();
|
||||
if (status != 200) {
|
||||
return false;
|
||||
}
|
||||
long long len = conn.body_length();
|
||||
if (len <= 0) {
|
||||
return true;
|
||||
}
|
||||
acl::string buf;
|
||||
if (!conn.get_body(body)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
```
|
||||
|
||||
## 4.6. Coroutine Http server
|
||||
```c++
|
||||
#include "acl_cpp/lib_acl.hpp" // Must before http_server.hpp
|
||||
#include "fiber/http_server.hpp"
|
||||
|
||||
static char *var_cfg_debug_msg;
|
||||
static acl::master_str_tbl var_conf_str_tab[] = {
|
||||
{ "debug_msg", "test_msg", &var_cfg_debug_msg },
|
||||
{ 0, 0, 0 }
|
||||
};
|
||||
|
||||
static int var_cfg_io_timeout;
|
||||
static acl::master_int_tbl var_conf_int_tab[] = {
|
||||
{ "io_timeout", 120, &var_cfg_io_timeout, 0, 0 },
|
||||
{ 0, 0 , 0 , 0, 0 }
|
||||
};
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
const char* addr = "0.0.0.0|8194";
|
||||
const char* conf = argc >= 2 ? argv[1] : NULL;
|
||||
acl::http_server server;
|
||||
|
||||
// Call the methods in acl::master_base class .
|
||||
server.set_cfg_int(var_conf_int_tab).set_cfg_str(var_conf_str_tab);
|
||||
|
||||
// Call the methods in acl::http_server .
|
||||
server.on_proc_init([&addr] {
|
||||
printf("---> after process init: addr=%s, io_timeout=%d\r\n", addr, var_cfg_io_timeout);
|
||||
}).on_proc_exit([] {
|
||||
printf("---> before process exit\r\n");
|
||||
}).on_proc_sighup([] (acl::string& s) {
|
||||
s = "+ok";
|
||||
printf("---> process got sighup\r\n");
|
||||
return true;
|
||||
}).on_thread_accept([] (acl::socket_stream& conn) {
|
||||
printf("---> accept %d\r\n", conn.sock_handle());
|
||||
return true;
|
||||
}).Get("/", [](acl::HttpRequest&, acl::HttpResponse& res) {
|
||||
std::string buf("hello world1!\r\n");
|
||||
res.setContentLength(buf.size());
|
||||
return res.write(buf.c_str(), buf.size());
|
||||
}).Post("/json", [](acl::HttpRequest& req, acl::HttpResponse& res) {
|
||||
acl::json* json = req.getJson();
|
||||
if (json) {
|
||||
return res.write(*json);
|
||||
} else {
|
||||
std::string buf = "no json got\r\n";
|
||||
res.setContentLength(buf.size());
|
||||
return res.write(buf.c_str(), buf.size());
|
||||
}
|
||||
}).run_alone(addr, conf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
## 4.7. One redis client
|
||||
```c++
|
||||
#include <thread>
|
||||
#include "acl_cpp/lib_acl.hpp"
|
||||
|
||||
static void thread_run(acl::redis_client_cluster& conns) {
|
||||
acl::redis cmd(&conns);
|
||||
std::map<acl::string, acl::string> attrs;
|
||||
attrs["name1"] = "value1";
|
||||
attrs["name2"] = "value2";
|
||||
attrs["name3"] = "value3";
|
||||
acl::string key = "hash-key-1";
|
||||
if (!cmd.hmset(key, attrs)) {
|
||||
printf("hmset error=%s\r\n", cmd.result_error());
|
||||
return;
|
||||
}
|
||||
|
||||
attrs.clear();
|
||||
if (!cmd.hgetall(key, attrs)) {
|
||||
printf("hgetall error=%s\r\n", cmd.result_error());
|
||||
}
|
||||
}
|
||||
|
||||
void run(void) {
|
||||
const char* addr = "126.0.0.1:6379";
|
||||
acl::redis_client_cluster conns;
|
||||
conns.set(addr, 0);
|
||||
|
||||
const size_t nthreads = 10;
|
||||
std::thread threads[nthreads];
|
||||
// Create some threads to test redis using the same conns.
|
||||
for (size_t i = 0; i < nthreads; i++) {
|
||||
threads[i] = std::thread(thread_run, std::ref(conns));
|
||||
}
|
||||
// Wait for all threads to exit
|
||||
for (size_t i = 0; i < nthreads; i++) {
|
||||
threads[i].join();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
# 5. More about
|
||||
## 5.1. Samples
|
||||
There are a lot of examples in the acl library for reference, please refer to: [SAMPLES.md](SAMPLES.md)
|
||||
|
||||
## 5.2. FAQ
|
||||
If you have some questions when using Acl, please see [FAQ.md](FAQ.md).
|
||||
|
||||
## 5.3. Who are using acl?
|
||||
[![iqiyi](res/logo/logo_iqiyi.png)](http://www.iqiyi.com/)
|
||||
[![263](res/logo/logo_263.png)](http://www.263.net/)
|
||||
[![hexun](res/logo/logo_hexun.png)](http://www.hexun.com/)
|
||||
[![v1](res/logo/logo_v1.png)](http://www.v1.cn/)
|
||||
[![ksyun](res/logo/logo_ksyun.png)](https://www.ksyun.com/)
|
||||
[![weibangong](res/logo/logo_weibangong.png)](https://www.weibangong.com/)
|
||||
[![xianyou](res/logo/logo_xianyou.png)](http://www.i3game.com/)
|
||||
[![foundao](res/logo/logo_foundao.png)](http://www.foundao.com/)
|
||||
|
||||
## 5.4. License
|
||||
- LGPL-v3 license (see [LICENSE.txt](LICENSE.txt) in the acl project)
|
||||
|
||||
## 5.5. Reference
|
||||
- Web site: https://blog.csdn.net/zsxxsz
|
||||
- Github: https://github.com/acl-dev/acl
|
||||
- Gitee: https://gitee.com/acl-dev/acl
|
||||
- Weibo: http://weibo.com/zsxxsz
|
||||
- QQ Group: 693868497
|
@ -1,326 +0,0 @@
|
||||
# acl -- One advanced C/C++ library for Unix/Windows.
|
||||
|
||||
[English](README.md)
|
||||
|
||||
<!-- vim-markdown-toc GFM -->
|
||||
* [一、描述](#一描述)
|
||||
* [1.1、库组成](#11库组成)
|
||||
* [1.2、功能模块组成](#12功能模块组成)
|
||||
* [1.2.1、网络通信库](#121网络通信库)
|
||||
* [1.2.1.1、流处理模块](#1211流处理模块)
|
||||
* [1.2.1.2、网络操作模块](#1212网络操作模块)
|
||||
* [1.2.1.3、非阻塞网络流](#1213非阻塞网络流)
|
||||
* [1.2.1.4、常见网络应用协议库](#1214常见网络应用协议库)
|
||||
* [1.2.1.5、常见网络通信库](#1215常见网络通信库)
|
||||
* [1.2.2、网络 IO 事件引擎](#122网络-io-事件引擎)
|
||||
* [1.2.3、网络服务器框架](#123网络服务器框架)
|
||||
* [1.2.3.1、进程模型](#1231进程模型)
|
||||
* [1.2.3.2、线程模型](#1232线程模型)
|
||||
* [1.2.3.3、非阻塞模型](#1233非阻塞模型)
|
||||
* [1.2.3.4、协程模型](#1234协程模型)
|
||||
* [1.2.3.5、UDP通信模型](#1235udp通信模型)
|
||||
* [1.2.3.6、触发器模型](#1236触发器模型)
|
||||
* [1.2.4、线程及线程池模块](#124线程及线程池模块)
|
||||
* [1.2.5、HTTP 协议库](#125http-协议库)
|
||||
* [1.2.5.1、客户端模式](#1251客户端模式)
|
||||
* [1.2.5.2、服务端模式](服务端模式)
|
||||
* [1.2.6、Redis 客户端库](#126redis-客户端库)
|
||||
* [1.2.7、MQTT 协议库](#127mqtt-协议库)
|
||||
* [1.2.8、MIME 协议库](#128mime-协议库)
|
||||
* [1.2.9、网络协程库](#129网络协程库)
|
||||
* [1.2.10、数据库相关](#1210数据库相关)
|
||||
* [1.2.11、数字键的 K-V 磁盘存储模块(zdb)](#1211数字键的-k-v-磁盘存储模块zdb)
|
||||
* [1.2.12、其它功能库](#1212其它功能库)
|
||||
* [1.2.12.1、常用数据结构模块](#12121常用数据结构模块)
|
||||
* [1.2.12.2、内存操作模块](#12122-内存操作模块)
|
||||
* [1.2.12.3、常用字符串操作模块](#12123常用字符串操作模块)
|
||||
* [1.2.12.4、文件目录模块](#12124文件目录模块)
|
||||
* [1.2.12.5、读配置文件模块](#12125读配置文件模块)
|
||||
* [1.2.12.6、文件队列处理库](#12126文件队列处理库)
|
||||
* [1.2.12.7、json解析库](#12127json解析库)
|
||||
* [1.2.12.8、xml解析库](#12128xml解析库)
|
||||
* [1.2.12.9、常见编码库](#12129常见编码库)
|
||||
* [二、平台支持及编译](#二平台支持及编译)
|
||||
* [三、目录结构说明](#三目录结构说明)
|
||||
* [3.1、lib_acl---基础 C 库](#31lib_acl)
|
||||
* [3.2、lib_protocol---HTTP/SMTP/ICMP 协议 C 库](#32lib_protocol)
|
||||
* [3.3、lib_acl_cpp---C++ 功能库](#33lib_acl_cpp)
|
||||
* [3.4、lib_fiber---网络协程库](#34lib_fiber)
|
||||
* [3.5、图例](#35图例)
|
||||
* [3.6、acl 库中有大量示例可供参考,请参考:SAMPLES.md](#36acl-库中有大量示例可供参考请参考samplesmd)
|
||||
* [3.7、acl 使用 FAQ](#37acl-使用-faq-参考-faqmd)
|
||||
* [四、谁在使用acl](#四谁在使用acl)
|
||||
* [五、使用许可](#五使用许可)
|
||||
* [六、参考](#六参考)
|
||||
|
||||
<!-- vim-markdown-toc -->
|
||||
|
||||
## 一、描述
|
||||
acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架,同时提供更多的实用功能库。通过该库,用户可以非常容易地编写支持多种模式(多线程、多进程、非阻塞、触发器、UDP方式、协程方式)的服务器程序,WEB 应用程序,数据库应用程序。此外,该库还提供了常见应用的客户端通信库(如:HTTP、SMTP、ICMP、MQTT、Redis、Memcache、Beanstalk、Handler socket),常见流式编解码库:XML/JSON/MIME/BASE64/UUCODE/QPCODE/RFC2047 etc。
|
||||
|
||||
### 1.1、库组成
|
||||
本工程主要包含 4 个库及大量示例。4 个库的说明如下:
|
||||
1. **lib_acl**: 该库是最基础的库,其它 3 个库均依赖于该库; 该库以 C 语言实现。
|
||||
2. **lib_protocol**: 该库主要实现了 http 协议及 icmp/ping 协议; 该库以 C 语言实现。
|
||||
3. **lib_acl_cpp**: 该库用 C++ 语言封装了 lib_acl/lib_protocol 两个库,同时增加了一些其它有价值的功能应用。
|
||||
4. **lib_fiber**: 该库为支持协程库,直接 hook 系统 read/write 等 API,与 epoll 配合支持高并发网络编程,有关协程更多内容参考 [README.md](lib_fiber/README.md)。
|
||||
|
||||
* 整体架构图
|
||||
![整体架构图](res/img/architecture.png)
|
||||
|
||||
### 1.2、功能模块组成
|
||||
#### 1.2.1、网络通信库
|
||||
##### 1.2.1.1、流处理模块
|
||||
该模块是整个 acl 网络通信最基础的流式通信模块,不仅支持网络流,同时还支持文件流,主要支持:
|
||||
1. 按行读数据,兼容 win32 下的 \r\n,同时兼容 UNIX 下的 \n 的结束符
|
||||
2. 按行读数据但要求自动去掉尾部的 \n 或 \r\n
|
||||
3. 以字符串为分隔符读取数据
|
||||
4. 读规定长度的数据
|
||||
5. 尝试性读一行数据或尝试性读规定长度数据
|
||||
6. 探测网络 IO 状态
|
||||
7. 写入一行数据
|
||||
8. 按格式符写入数据,类似于 fprintf
|
||||
9. 文件流定位操作,类似于 fseek
|
||||
10. 一次性写入一组数据,类似于 unix 下的 writev
|
||||
11. 将文件截短,类似于 ftrunk
|
||||
12. 获取文件大小
|
||||
13. 获得当前文件流指针位置,类似于 ftell
|
||||
14. 获得文件尺寸
|
||||
15. 获得网络流的本地地址及远程地址
|
||||
|
||||
##### 1.2.1.2、网络操作模块
|
||||
该模块主要支持网络服务端监听(支持 TCP/UDP/UNIX 域套接口)、网络客户端连接(支持 TCP/UNIX 域套接口)、DNS 域名查询及结果缓存(支持调用系统 gethostbyname/getaddrinfo 函数和直接发送 DNS 协议两种方式)、套接口(socket)操作及取本机网卡等功能。
|
||||
|
||||
##### 1.2.1.3、非阻塞网络流
|
||||
支持非阻塞方式连接、读(按行读,规定长度读)、写(写行,写规定长度,写一组数据)等操作。
|
||||
|
||||
##### 1.2.1.4、常见网络应用协议库
|
||||
主要支持常见网络应用协议,诸如:HTTP、SMTP、MQTT、ICMP,其中 HTTP、MQTT、ICMP 两个模块实现了阻塞、非阻塞两种通信方式;此外,HTTP 协议在C++版的 lib_acl_cpp 中还支持服务端、客户端两种通信方式,当作为服务端使用时,支持类似于 JAVA HttpServlet 的接口使用方式,当作为客户端方式使用时,支持连接池与集群管理方式,该模块同时支持 cookie、session、HTTP MIME 文件上传、分块传输、字符集自动转换、自动解压缩、断点续传等丰富的功能。
|
||||
|
||||
##### 1.2.1.5、常见网络通信库
|
||||
支持 Redis、Memcached、MQTT、Beanstalk、Handler socket 客户端通信库,该通信库支持连接池方式。
|
||||
|
||||
#### 1.2.2、网络 IO 事件引擎
|
||||
支持 select(UNIX/LINUX/WIN32)、poll(UNIX/LINUX)、epoll(LINUX)、kqueue(BSD)、devpoll(solaris)、iocp(WIN32)、窗口消息(WIN32) 等系统事件引擎,同时支持 Reactor 及 Proactor 两种编程模型。
|
||||
|
||||
#### 1.2.3、网络服务器框架
|
||||
该模块是 acl 中最为重要的模块,提供了服务器编程中常用的基础设施,该服务器框架来源于著名的 Postfix,在其基础上进行了诸多扩展,有关 acl 服务器编程的更多内容介绍参见:[acl服务器编程](https://blog.csdn.net/zsxxsz/category_8736921.html?spm=1001.2014.3001.5482)。
|
||||
目前已经支持的主要服务模型有:
|
||||
|
||||
##### 1.2.3.1、进程模型
|
||||
一个连接一个进程,这种模型的优点是编程简单、安全稳定,缺点是并发度不高;
|
||||
|
||||
##### 1.2.3.2、线程模型
|
||||
每个子进程是由线程池中的一组线程处理所有的客户端连接,采用 IO 事件触发方式,只有当连接有数据可读时才会将连接与一个线程进行绑定,线程处理完后立即归还给线程池,这种模型的最大优点是可以用少量的线程便可以处理大量的客户端连接,而且编程比较简单(相对于非阻塞模型);
|
||||
|
||||
##### 1.2.3.3、非阻塞模型
|
||||
每个子进程是由一个单独的非阻塞线程组成,该线程采用完全非阻塞 IO 方式处理外来的大量客户端连接(类似于 nginx/squid/ircd),该模型的优点是处理效率高占用资源少,可以处理大量客户端连接,缺点是编程比较复杂;
|
||||
|
||||
##### 1.2.3.4、协程模型
|
||||
虽然非阻塞服务模型可以获得大并发处理能力,但编程复杂度较高,协程模型综合了大并发的处理能力和较低的编程复杂度的特点,使编程人员可以顺序 IO 的编程方式简单实现业务逻辑;
|
||||
|
||||
##### 1.2.3.5、UDP通信模型
|
||||
该模型主要为了支持 UDP 网络过程而增加的服务模型;
|
||||
|
||||
##### 1.2.3.6、触发器模型
|
||||
该模型的实例主要用来处理一些定时任务的后台服务过程(类似于系统的 crontab)。
|
||||
|
||||
服务器框架中的子进程实用采用半驻留服务模型,支持子进程预启动机制、最大最小进程数控制、子进程异常报警、单一进程监听多个地址(可同时监听TCP/UDP套接字以及 UNIX 域套接字)、子进程安全控制、日志输出至 syslog-ng、多进程TCP连接均匀化;采用配置文件驱动方式,每个服务一个配置文件,方便进程管理及服务进程在线升级。
|
||||
|
||||
#### 1.2.4、线程及线程池模块
|
||||
提供了跨平台的支持 Posix 规范的线程接口(支持WIN32);线程池模块通过多种措施最大程度地减少线程任务分配时的锁冲突(用在 acl 服务器框架中多进程多线程服务模型中)。
|
||||
|
||||
#### 1.2.5、HTTP 协议库
|
||||
提供了完整的 HTTP 协议实现,支持 HTTP/1.0、1.1 版本,更多内容介绍见:[Acl HTTP编程](https://blog.csdn.net/zsxxsz/category_8736920.html)。
|
||||
|
||||
##### 1.2.5.1、客户端模式
|
||||
1. 支持连接池方式;
|
||||
2. 支持 chunked 块传输;
|
||||
3. 支持压缩传输;
|
||||
4. 支持 SSL 加密传输;
|
||||
5. 支持断点续传;
|
||||
6. 支持设置/获取 Cookies;
|
||||
7. 支持 Websocket.
|
||||
|
||||
##### 1.2.5.2、服务端模式
|
||||
1. 支持类似于 Java 的 HttpServlet 使用方式;
|
||||
2. 支持 chunked 块传输;
|
||||
3. 支持压缩传输;
|
||||
4. 支持 SSL 加密传输;
|
||||
5. 支持断点续传;
|
||||
6. 支持设置/获取 Cookies;
|
||||
7. 支持 HTTP MIME 格式;
|
||||
8. 支持 Websocket.
|
||||
|
||||
#### 1.2.6、Redis 客户端库
|
||||
1. 支持 redis 集群模式及非集群模式;
|
||||
2. 支持连接池方式;
|
||||
3. 按 redis 数据结构类型分成独立的 C++ 类;
|
||||
4. 每个命令映射为 1 个至多个函数.
|
||||
更多有关 Acl Redis 客户端库编程的内容参见:[Acl Redis 介绍](lib_acl_cpp/samples/redis/README.md), [Redis示例](https://blog.csdn.net/zsxxsz/category_8736931.html)。
|
||||
|
||||
#### 1.2.7、MQTT 协议库
|
||||
1. 支持 MQTT3.1.1 版本;
|
||||
2. 支持流式 MQTT 协议解析及构建;
|
||||
3. 可以用在客户端及服务端;
|
||||
4. 支持阻塞通信模式及非阻塞通信模式。
|
||||
有关 Acl MQTT 编程使用示例参见:[Acl MQTT](lib_acl_cpp/samples/mqtt/README.md)。
|
||||
|
||||
#### 1.2.8、MIME 协议库
|
||||
1. 支持流式 MIME 数据解析;
|
||||
2. 支持 MIME RFC2045,RFC2047,RFC822.
|
||||
|
||||
#### 1.2.9、网络协程库
|
||||
直接 hook 系统底层 IO API,与 epoll 配合实现网络 IO 的高并发、高性能编程框架,通过该模块可以使一些原生的常见阻塞式网络库(如 mysql/redis/http 等客户端库)直接支持高并发网络操作;通过使用该模块,编程者采用顺序思维编程方式,在协程库内部将阻塞模式转为非阻塞模式,因而大大提高了网络并发能力及处理性能。
|
||||
|
||||
#### 1.2.10、数据库相关
|
||||
设计了统一的数据库操作接口及连接池处理方式,目前支持 sqlite/mysql/postgresql。
|
||||
|
||||
#### 1.2.11、数字键的 K-V 磁盘存储模块(zdb)
|
||||
采取 KEY/VALUE 分块存储方式,因为 KEY 限定为数字类型,只需内存计算便可算出 KEY 的位置,KEY 中存放了 VALUE 的位置,所以对于任何的数据查询只需两次磁盘定位。(本人在和讯做流量统计存储时,使用该种方式替代了BSD、TC 等采用B树的 K-V 存储)。
|
||||
|
||||
#### 1.2.12、其它功能库
|
||||
|
||||
##### 1.2.12.1、常用数据结构模块
|
||||
该模块提供了常见的哈希表(及多种哈希算法)、动态数组、双向链表、平衡二叉树、队列、二分块查找树、256 叉匹配树等数组结构;提供了统一的数据结构遍历方法(采用 acl_foreach)。
|
||||
|
||||
##### 1.2.12.2、 内存操作模块
|
||||
|
||||
该模块提供三种内存池模型:
|
||||
1. <b>基本的内存方式:</b>内部封装了系统的 malloc/free API,提供了内存校验等安全措施;该方式同时提供外部注册接口,允许使用者注册自己的内存分配模型;
|
||||
2. <b>内存片(slab) 方式:</b>根据不同的尺寸大小分配多个定长内存链,可以有效地减少内存碎片,大大提升内存分配效率;
|
||||
3. <b>内存链方式:</b>将长度不一的小内存分配在一条内存页上,可以非常有效地使用内存,减少内存浪费。
|
||||
|
||||
##### 1.2.12.3、常用字符串操作模块
|
||||
支持字符串匹配查找、前(后)向比较、字符串分割、字符串大小写转换、H2B/B2H 转换、URL 编码/解码等功能。
|
||||
|
||||
##### 1.2.12.4、文件目录模块
|
||||
支持多级目录创建、多级目录扫描、文件句柄缓存等功能,同时在处理多级目录采用循环方式,避免了递归方式时可能的栈溢出的隐患。
|
||||
|
||||
##### 1.2.12.5、读配置文件模块
|
||||
支持读 name=value 形式的配置文件,value 较长时可以使用反斜杠(\)折行,采用配置表方式提取配置文件中的配置项。
|
||||
|
||||
##### 1.2.12.6、文件队列处理库
|
||||
支持多组目录队列文件的创建、扫描、删除等操作;常用于临时文件队列调度的服务程序中。
|
||||
|
||||
##### 1.2.12.7、json 解析库
|
||||
支持流式方式解析 json 数据,同时支持 json 数据包组装。
|
||||
|
||||
##### 1.2.12.8、xml 解析库
|
||||
支持流式方式解析 xml 数据,同时支持 xml 数据包组装。
|
||||
|
||||
##### 1.2.12.9、常见编码库
|
||||
还包括 rfc2047、url、base64、uucode、qpcode、charset 等编解码库,这些解码库均采用流式解析方式,适合于多种网络 IO 模型(阻塞/非阻塞TCP、UDP)。
|
||||
|
||||
## 二、平台支持及编译
|
||||
整个工程目前支持 Linux(AS4,5,6, CS4,5,6, ubuntu), Windows, MacOS, FreeBSD, Solaris,Android,IOS。
|
||||
* Linux/UNIX: 编译器为 gcc,直接在终端命令行方式下分别进入 lib_acl/lib_protocol/lib_acl_cpp 目录下,运行 make 命令即可。
|
||||
* Windows: 可以用 VC2003/VC2008/VC2010/VC2012/vc2013/vc2015/vc2017/vc2019 进行编译。
|
||||
* MacOS:可使用 xcode 进行编译。
|
||||
* 同时支持 CMake 跨平台编译方式
|
||||
|
||||
当在 WIN32 环境下使用动态库时有几点需要注意:
|
||||
* 使用 lib_acl 的动态库时,需要在用户的工程预定义: ACL_DLL;
|
||||
* 使用 lib_protocol 动态库中的 HTTP 库或 ICMP 库时,需要在工程中预定义 HTTP_DLL 或 ICMP_DLL;
|
||||
* 使用 lib_acl_cpp 的动态库时,需要在工程中预定义 ACL_CPP_DLL,如果您使用用 VC2003 编译环境则还需要预定义 VC2003;
|
||||
* 详细编译过程,参见:[acl 库的编译及使用](BUILD.md)
|
||||
|
||||
## 三、目录结构说明
|
||||
|
||||
### 3.1、lib_acl
|
||||
1. init : 主要用于初始化 acl 基础库
|
||||
2. stdlib : 是一些比较基础的功能函数库,在 stdlib/ 根目录下主要包括一些有关日志记录、网络/文件流处理、VSTRING缓冲操作等功能函数;在 stdlib/ 下还有二级目录,如下:
|
||||
- 2.1 common : 该目录主要为一些常用的数据结构及算法的功能函数库,象哈希表、链表、队列、动态数组、堆栈、缓存、平衡二叉树、模式匹配树等;
|
||||
- 2.2 memory : 该目录主要包含与内存操作相关的函数库,象内存基础分配与校验、内存池管理、内存切片管理等;
|
||||
- 2.3 filedir : 该目录主要包含与目录遍历、目录创建等相关的库;
|
||||
- 2.4 configure : 该目录主要包含配置文件的分析库;
|
||||
- 2.5 iostuff : 该目录主要包含一些常用的IO操作的函数库,象读/写超时、设置IO句柄的阻塞模式等;
|
||||
- 2.6 string : 该目录主要包含一些常用的字符串操作的库,提供了比标准C更灵活高效的字符串操作功能;
|
||||
- 2.7 debug : 主要用于协助调试内存的泄露等功能;
|
||||
- 2.8 sys : 主要是与不同操作系统平台相关的API的封装函数库;
|
||||
3. **net: 是与网络操作相关的函数库,包含网络监听、网络连接、DNS查询、套接口参数设置等功能;**
|
||||
- 3.1 connect : 主要是与网络连接相关的函数库,包含网络连接、域套接口连接等;
|
||||
- 3.2 listen : 主要是与网络监听相关的函数库,包含网络监听、域套接口监听等;
|
||||
- 3.3 dns : 主要是与DNS域名查询相关的函数库,包含对 gethostbyname 等接口的封装、按RFC1035标准直接发送UDP包方式进行查询等功能;
|
||||
4. **event : 主要封装了 select/poll/epoll/iocp/win message/kqueue/devpoll 等系统API接口,使处理网络事件更加灵活、高效、简单,另外还包含定时器接口,acl 中的很多网络应用都会用到这些接口,象 aio、master 等模块;**
|
||||
5. **aio : 主要包含网络异步操作的功能函数,该套函数库在处理高并发时有非常高的效率,而且提供了比基础API更为高级的调用方式,比使用象 libevent 之类的函数库更为简单,而且是线程安全的;**
|
||||
6. msg : 主要包含了基于线程的消息事件及基于网络的消息事件功能;
|
||||
7. thread : 主要是封装了各个OS平台下的基础线程API,使对外接口保持一致性,消除了平台的差异性,同时还提供了半驻留线程池的函数库,以及对于线程局部变量的扩展;
|
||||
8. db : 主要是一些与数据库有关的功能库,定义了一个通用的数据库连接池的框架(并且实现了mysql的连接池实例);一个简单的内存数据库(由哈希表、链表、平衡二叉树组合而成);ZDB数据存储引擎,这是一个高效的基于数字键的存储引擎;
|
||||
9. proctl : win32 平台下父子进程控制功能库;
|
||||
10. code : 常见编码函数库,包括 base64编解码、URL编解码以及一些汉字字符集编码等;
|
||||
11. unit_test : 包含有关进行 C 语言单元测试的功能库;
|
||||
12. xml: 是一个流式的 xml 解析器及构造器,可以支持阻塞及阻塞式网络通信;
|
||||
13. json: 是一个流式的 json 解析器及构造器,可以支持阻塞及阻塞式网络通信;
|
||||
14. **master: 是在 UNIX 环境下支持多种服务器模式的服务器框架,目前主要支持多进程模式、多进程多线程模式、多进程非阻塞模式、多进程触发器模式及 UDP 通信模式;**
|
||||
|
||||
### 3.2、lib_protocol
|
||||
1. http: HTTP 协议相关的库,支持 HTTP/1.1,通讯方式支持同步/异步方式
|
||||
2. icmp: icmp/ping 协议库,支持同步/异步通信方式
|
||||
3. smtp: 邮件客户端发信协议库
|
||||
|
||||
### 3.3、lib_acl_cpp
|
||||
1. stdlib: 主要包含字符串处理类(string),xml/json 解析库,zlib 压缩库(依赖于 zlib 库), 日志记录类, 字符集转码(在UNIX环境下需要 iconv 库), memcached 客户库, 互斥类(支持线程锁、文件锁);
|
||||
2. **stream: 支持网络流/文件流,支持阻塞/非阻塞两种通信方式,在非阻塞模式下支持 select/poll/epoll/iocp/win32 message/kqueue/devpoll;支持 ssl 加密传输(阻塞及非阻塞方式,需要 polarssl库);**
|
||||
3. ipc: 在非阻塞通信方式,提供了阻塞模块与非阻塞模块整合的方式;
|
||||
4. **http: 比较完整的 HTTP 通信库及协议解析库,支持客户端及服务端模式,支持 ssl/gzip 传输方式; 支持类似于 Java HttpServlet 方式的大部分接口,方便编写 CGI 及 WEB 服务器程序;**
|
||||
5. db: 封装了 MYSQL/SQLITE 库,支持数据库连接池;
|
||||
6. hsocket: 实现了完整的 handler-socket 客户端通信库;
|
||||
7. **mime: 支持完整的与邮件编码相关的库(邮件的 rfc2045-rfc2047/rfc822/base64/uucode 编码及解码库).**
|
||||
8. **master: 封装了 C 库的服务器框架库**
|
||||
9. beanstalk: 消息队列应用 beanstalkd 的客户端通信库,支持连接池
|
||||
10. connpool: 通用的连接池库
|
||||
11. hscoket: mysql 插件 handle-socket 的客户端通信库,支持连接池
|
||||
12. memcache: memcached 应用的客户端库,支持连接池及连接池集群管理
|
||||
13. queue: 磁盘文件队列操作库
|
||||
14. ipc: 阻塞/非阻塞通信整合库
|
||||
15. session: HTTP 会话库
|
||||
16. **redis: 完整实现了 redis 协议的客户端通信库(总共 12 个大类,150 多个命令),支持连接池及连接池集群管理**
|
||||
17. disque: 支持集群消息队列服务 disque 的客户端库,支持连接池及连接池集群管理
|
||||
18. **mqtt: 支持流式解析 MQTT 协议,可以与任何 IO 通信方式结合;同时提供了阻塞及非阻塞通信接口**
|
||||
|
||||
### 3.4、lib_fiber
|
||||
1. c 目录:该目录下主要为 C 语言版本实现的网络协程库,其中包含源文件及头文件
|
||||
2. cpp 目录:该目录下封装了 C 语言版本的网络协程库
|
||||
3. samples 目录:该目录下有大量的使用协程库编程的例子
|
||||
|
||||
### 3.5、图例
|
||||
* 类索引图:
|
||||
![类索引图](res/img/index.jpg)
|
||||
* 异步 IO 类继承图
|
||||
![异步 IO 类继承图](res/img/aio_inherit.jpg)
|
||||
* IO 流继承图
|
||||
![IO 流继承图](res/img/stream_inherit.jpg)
|
||||
* acl 服务框架守护进程事件处理流程
|
||||
![acl 服务守护进程事件处理流程](res/img/acl_master.jpg)
|
||||
* acl 服务器框架子进程事件处理流程
|
||||
![服务子进程事件流程](res/img/master_proc.jpg)
|
||||
* 接收上传文件的 CGI 程序:
|
||||
![接收上传文件的 CGI 程序](res/img/cgi_upload.jpg)
|
||||
* 文件下载客户端程序:
|
||||
![文件下载客户端程序](res/img/http_download.jpg)
|
||||
* 网页下载程序:
|
||||
![网页下载程序](res/img/http_client.jpg)
|
||||
|
||||
### 3.6、acl 库中有大量示例可供参考,请参考:[SAMPLES.md](SAMPLES.md)
|
||||
### 3.7、acl 使用 FAQ 参考 [FAQ.md](FAQ.md)
|
||||
|
||||
## 四、谁在使用acl
|
||||
[![iqiyi](res/logo/logo_iqiyi.png)](http://www.iqiyi.com/)
|
||||
[![263](res/logo/logo_263.png)](http://www.263.net/)
|
||||
[![hexun](res/logo/logo_hexun.png)](http://www.hexun.com/)
|
||||
[![v1](res/logo/logo_v1.png)](http://www.v1.cn/)
|
||||
[![ksyun](res/logo/logo_ksyun.png)](https://www.ksyun.com/)
|
||||
[![weibangong](res/logo/logo_weibangong.png)](https://www.weibangong.com/)
|
||||
[![xianyou](res/logo/logo_xianyou.png)](http://www.i3game.com/)
|
||||
[![foundao](res/logo/logo_foundao.png)](http://www.foundao.com/)
|
||||
|
||||
## 五、使用许可
|
||||
- LGPL-v3 license (see [LICENSE.txt](LICENSE.txt) in the acl project)
|
||||
|
||||
## 六、参考
|
||||
- WEB 站点: https://blog.csdn.net/zsxxsz
|
||||
- Github: https://github.com/acl-dev/acl
|
||||
- Gitee: https://gitee.com/acl-dev/acl
|
||||
- Download: https://sourceforge.net/projects/acl- 微 博: http://weibo.com/zsxxsz
|
||||
- QQ 群: 693868497
|
@ -1,319 +0,0 @@
|
||||
# acl -- One advanced C/C++ library for Unix/Windows.
|
||||
|
||||
<!-- vim-markdown-toc GFM -->
|
||||
* [1 Description](#1-Description)
|
||||
* [1.1 Library composition](#11-Library-composition)
|
||||
* [1.2 Function module composition](#12-Function-module-composition)
|
||||
* [1.2.1 Network communication library](#121-Network-communication-library)
|
||||
* [1.2.1.1 Stream processing module](#1211-Stream-processing-module)
|
||||
* [1.2.1.2 Network operation module](#1212-Network-operation-module)
|
||||
* [1.2.1.3 Non-blocking network flow](#1213-Non-blocking-network-flow)
|
||||
* [1.2.1.4 Common network application protocol Library](#1214-Common-network-application-protocol-library)
|
||||
* [1.2.1.5 Common network communication library](#1215-Common-network-communication-library)
|
||||
* [1.2.2 Network IO event engine](#122-Network-io-event-engine)
|
||||
* [1.2.3 Web server framework](#123-Web-server-framework)
|
||||
* [1.2.3.1 Process model](#1231-Process-model)
|
||||
* [1.2.3.2 Thread model](#1232-Thread-model)
|
||||
* [1.2.3.3 Non-blocking model](#1233-Non-blocking-model)
|
||||
* [1.2.3.4 Coroutine model](#1234-Coroutine-model)
|
||||
* [1.2.3.5 UDP communication model](#1235-UDP-communication-model)
|
||||
* [1.2.3.6 Trigger model](#1236-Trigger-model)
|
||||
* [1.2.4 Thread and thread pool module](#124-Thread-and-thread-pool-module)
|
||||
* [1.2.5 HTTP protocol](#125-HTTP-protocol)
|
||||
* [1.2.5.1 Client mode](#1251-Client-mode)
|
||||
* [1.2.5.2 Server mode](#1252-Server-mode)
|
||||
* [1.2.6 Redis client library](#126-Redis-client-library)
|
||||
* [1.2.7 MIME protocol library](#127-Mime-protocol-library)
|
||||
* [1.2.8 Network coroutine library](#128-Network-coroutine-library)
|
||||
* [1.2.9 Database related](#129-Database-related)
|
||||
* [1.2.10 K-V disk storage module (zdb) for numeric keys](#1210-Numeric-key-K-V-disk-storage-module-zdb)
|
||||
* [1.2.11 Other function libraries](#1211-Other-function-libraries)
|
||||
* [1.2.11.1 Common data structure module](#12111-Common-data-structure-module)
|
||||
* [1.2.11.2 Memory operation module](#12112-Memory-operation-module)
|
||||
* [1.2.11.3 Common string operation module](#12113-Common-string-operation-module)
|
||||
* [1.2.11.4 File Directory module](#12114-File-Directory-module)
|
||||
* [1.2.11.5 Read configuration file module](#12115-Read-configuration-file-module)
|
||||
* [1.2.11.6 File queue processing library](#12116-File-queue-processing-library)
|
||||
* [1.2.11.7 Json parsing library](#12117-Json-parsing-library)
|
||||
* [1.2.11.8 Xml parsing library](#12118-Xml-parsing-library)
|
||||
* [1.2.11.9 Common coding library](#12119-Common-coding-library)
|
||||
* [2 Platform support and compilation](#2-Platform-support-and-compilation)
|
||||
* [3 Description of directory structure](#3-Description-of-directory-structure)
|
||||
* [3.1 lib_acl---Basic C library](#31-lib_acl)
|
||||
* [3.2 lib_protocol---HTTP/SMTP/ICMP Protocol C Library](#32-lib_protocol)
|
||||
* [3.3 lib_acl_cpp---C++ Function Library](#33-lib_acl_cpp)
|
||||
* [3.4 lib_fiber---network coroutine library](#34-lib_fiber)
|
||||
* [3.5 Legend](#35-Legend)
|
||||
* [3.6 There are a lot of examples in the acl library for reference, please refer to: SAMPLES.md](#36-There-are-a-lot-of-examples-in-the-acl-library-for-reference-please-refer-to-samplesmd)
|
||||
* [3.7 Acl using FAQ](#37-Acl-using-FAQ-faqmd)
|
||||
* [4 Who are using acl](#4-Who-are-using-acl)
|
||||
* [5 License](#5-License)
|
||||
* [6 Reference](#6-Reference)
|
||||
|
||||
<!-- vim-markdown-toc -->
|
||||
|
||||
## 1 Description
|
||||
The acl project is a cross-platform (supporting LINUX, WIN32, Solaris, MacOS, FreeBSD) network communication library and server programming framework, while providing more useful functional libraries. Through this library, users can easily write server programs, WEB applications, and database applications that support multiple modes (multi-threaded, multi-process, non-blocking, trigger, UDP, and coroutine). In addition, the library also provides client communication libraries for common applications (such as: HTTP, SMTP, ICMP, redis, memcache, beanstalk, handler socket), common streaming codec library: XML/JSON/MIME/BASE64/UUCODE/ QPCODE/RFC2047 etc.
|
||||
|
||||
### 1.1 Library composition
|
||||
This project consists of 5 libraries and a large number of examples. The description of the five libraries is as follows:
|
||||
1. lib_acl: This library is the most basic library, the other four libraries are dependent on the library; the library is implemented in C language.
|
||||
2. lib_protocol: This library mainly implements the http protocol and the icmp/ping protocol; the library is implemented in C language.
|
||||
3. lib_acl_cpp: This library encapsulates the lib_acl/lib_protocol libraries in C++ and adds some other valuable functional applications.
|
||||
4. lib_fiber: This library supports the coroutine library, directly hooks the system read/write API, and supports high-concurrency network programming with epoll.
|
||||
5. lib_dict: This library mainly implements the dictionary storage of KEY-VALUE, which also depends on BDB, CDB and tokyocabinet libraries.
|
||||
6. lib_tls: This library encapsulates the openssl library so that the communication mode of lib_acl can support ssl.
|
||||
|
||||
* Overall architecture diagram
|
||||
![Overall architecture diagram](res/img/architecture_en.png)
|
||||
|
||||
### 1.2 Function module composition
|
||||
#### 1.2.1 Network communication library
|
||||
##### 1.2.1.1 Stream processing module
|
||||
This module is the most basic streaming communication module for the entire acl network communication. It not only supports network streaming, but also supports file streaming. It mainly supports:
|
||||
1. Read data by line, compatible with \r\n under win32, and compatible with the end of \n under UNIX
|
||||
2. Read data by line but require automatic removal of the trailing \n or \r\n
|
||||
3. Read data as a string separator
|
||||
4. Read the specified length of data
|
||||
5. Try to read a row of data or try to read the specified length of data
|
||||
6. Detect network IO status
|
||||
7. Write a row of data
|
||||
8. Write data by formatter, similar to fprintf
|
||||
9. File stream location operation, similar to fseek
|
||||
10. Write a set of data at once, similar to writev under unix
|
||||
11. Truncate the file, similar to ftrunk
|
||||
12. Get the file size
|
||||
13. Get the current file stream pointer location, similar to ftell
|
||||
14. Get the file size
|
||||
15. Obtain the local address and remote address of the network stream
|
||||
|
||||
##### 1.2.1.2 Network operation module
|
||||
This module mainly supports network server monitoring (supports TCP/UDP/UNIX domain socket), network client connection (supports TCP/UNIX domain socket), DNS domain name query and result cache (supports calling system gethostbyname/getaddrinfo function and direct Send DNS protocol two ways), socket (socket) operation and take the local network card and other functions.
|
||||
|
||||
##### 1.2.1.3 Non-blocking network flow
|
||||
Support non-blocking mode connection, read (by row read, specified length read), write (write line, write specified length, write a set of data) and other operations.
|
||||
|
||||
##### 1.2.1.4 Common network application protocol library
|
||||
It mainly supports common network application protocols, such as: HTTP, SMTP, ICMP, in which HTTP and ICMP modules implement blocking and non-blocking communication methods. In addition, the HTTP protocol supports server and client in C++ version of lib_acl_cpp. Two communication methods, when used as a server, support the interface usage similar to JAVA HttpServlet. When used as a client mode, it supports connection pool and cluster management. The module supports both cookie, session, and HTTP MIME file upload. Rich functions such as block transfer, automatic character set conversion, automatic decompression, and breakpoint resume.
|
||||
|
||||
##### 1.2.1.5 Common network communication library
|
||||
Support memcached, beanstalk, handler socket client communication library, the communication library supports connection pool mode.
|
||||
|
||||
#### 1.2.2 Network IO event engine
|
||||
Supports select (UNIX/LINUX/WIN32), poll (UNIX/LINUX), epoll (LINUX), kqueue (BSD), devpoll (solaris), iocp (WIN32), window message (WIN32) and other system event engines, and supports Reactor And Proactor two programming models.
|
||||
|
||||
#### 1.2.3 Web server framework
|
||||
This module is the most important module in acl, and provides the infrastructure commonly used in server programming. The server framework is derived from the famous Postfix. It has been expanded on the basis of the following. The main service models that have been supported are:
|
||||
|
||||
##### 1.2.3.1 Process model
|
||||
One connection to a process, the advantage of this model is that the programming is simple, safe and stable, and the disadvantage is that the degree of concurrency is not high;
|
||||
|
||||
##### 1.2.3.2 Thread model
|
||||
Each child process handles all client connections by a group of threads in the thread pool. The IO event trigger mode is used. The connection is bound to a thread only when the connection has data readable. The thread is returned immediately after processing. For the thread pool, the biggest advantage of this model is that it can handle a large number of client connections with a small number of threads, and the programming is relatively simple (relative to the non-blocking model);
|
||||
|
||||
##### 1.2.3.3 Non-blocking model
|
||||
Each child process consists of a single non-blocking thread that handles a large number of foreign client connections (similar to nginx/squid/ircd) in a completely non-blocking IO manner. The advantage of this model is that it has high processing efficiency and low resource consumption. Can handle a large number of client connections, the disadvantage is that programming is more complicated;
|
||||
|
||||
##### 1.2.3.4 Coroutine model
|
||||
Although the non-blocking service model can obtain large concurrent processing capability, the programming complexity is high. The coroutine model combines the features of large concurrent processing and low programming complexity, enabling programmers to easily implement sequential IO programming. Business logic;
|
||||
|
||||
##### 1.2.3.5 UDP communication model
|
||||
The model is mainly used to support the UDP network process and the service model is added;
|
||||
|
||||
##### 1.2.3.6 Trigger model
|
||||
The model instance is mainly used to process the background service process of some scheduled tasks (similar to the system's crontab).
|
||||
|
||||
The sub-process utility in the server framework adopts the semi-resident service model, supports the sub-process pre-boot mechanism, the maximum and minimum process number control, the sub-process abnormal alarm, and the single process to listen to multiple addresses (can simultaneously listen to TCP/UDP sockets and UNIX). Domain sockets), child process security control, log output to syslog-ng, multi-process TCP connection uniformity; configuration file-driven mode, one configuration file per service, convenient process management and online upgrade of service process.
|
||||
|
||||
#### 1.2.4 Thread and thread pool module
|
||||
Provides a cross-platform support for the Posix-compliant thread interface (WIN32 support); the thread pool module minimizes lock conflicts in thread task allocation (used in the multi-process multi-threaded service model in the acl server framework).
|
||||
|
||||
#### 1.2.5 HTTP protocol
|
||||
Provides a complete HTTP protocol implementation, supports HTTP/1.0, 1.1 version; supports both client mode and server mode:
|
||||
|
||||
##### 1.2.5.1 Client mode
|
||||
1. Support connection pool mode;
|
||||
2. Support chunked block transfer;
|
||||
3. Support compressed transmission;
|
||||
4. Support SSL encrypted transmission;
|
||||
5. Support for resumed breakpoints;
|
||||
6. Support setting/acquisition of cookies;
|
||||
7. Support Websocket.
|
||||
|
||||
##### 1.2.5.2 Server mode
|
||||
1. Support Java-like HttpServlet usage;
|
||||
2. Support chunked block transfer;
|
||||
3. Support compressed transmission;
|
||||
4. Support SSL encrypted transmission;
|
||||
5. Support for resumed breakpoints;
|
||||
6. Support setting/acquisition of cookies;
|
||||
7. Support HTTP MIME format;
|
||||
8. Support Websocket.
|
||||
|
||||
#### 1.2.6 Redis client library
|
||||
1. Support redis cluster mode and non-cluster mode;
|
||||
2. Support connection pool mode;
|
||||
3. Divide into separate C++ classes according to the redis data structure type;
|
||||
4. Each command is mapped to 1 to more functions.
|
||||
Specific content reference: [Use the acl library to write efficient C++ redis client application] (http://zsxxsz.iteye.com/blog/2184744)
|
||||
|
||||
#### 1.2.7 MIME protocol library
|
||||
1. Support streaming MIME data parsing;
|
||||
2. Support MIME RFC2045, RFC2047, RFC822.
|
||||
|
||||
#### 1.2.8 Network coroutine library
|
||||
Direct hook system The underlying IO API, in conjunction with epoll, implements a high-concurrency, high-performance programming framework for network IO. This module enables some native common blocking network libraries (such as client libraries such as mysql/redis/http) to directly support high Concurrent network operation; by using this module, the programmer uses the sequential thinking programming method to change the blocking mode to the non-blocking mode inside the coroutine library, thus greatly improving the network concurrency and processing performance.
|
||||
|
||||
#### 1.2.9 Database related
|
||||
Designed a unified database operation interface and connection pool processing, currently supports sqlite/mysql/postgresql.
|
||||
|
||||
#### 1.2.10 Numeric key K-V disk storage module (zdb)
|
||||
Take the KEY/VALUE block storage method, because the KEY is limited to the numeric type, you only need the memory calculation to calculate the position of the KEY, and the KEY stores the location of the VALUE, so you only need two disk positioning for any data query. (I used this method to replace K-V storage using B-trees such as BSD and TC when doing traffic statistics storage.)
|
||||
|
||||
#### 1.2.11 Other function libraries
|
||||
|
||||
##### 1.2.11.1 Common data structure module
|
||||
The module provides common hash tables (and multiple hash algorithms), dynamic arrays, doubly linked lists, balanced binary trees, queues, binary search trees, 256-fork matching trees, and other array structures; provides a unified data structure traversal method (using acl_foreach).
|
||||
|
||||
##### 1.2.11.2 Memory operation module
|
||||
|
||||
This module provides three memory pool models:
|
||||
1. <b>Basic memory mode:</b> The system's malloc/free API is encapsulated internally to provide security measures such as memory verification. This method also provides an external registration interface that allows users to register their own memory allocation models. ;
|
||||
2. <b>memory slice (slab) mode:</b> allocate multiple fixed-length memory chains according to different sizes, which can effectively reduce memory fragmentation and greatly improve memory allocation efficiency;
|
||||
3. <b>memory chain mode:</b> Allocate small memory of different lengths on one memory page, which can use memory very effectively and reduce memory waste.
|
||||
|
||||
##### 1.2.11.3 Common string operation module
|
||||
Supports string matching lookup, pre (post) comparison, string splitting, string case conversion, H2B/B2H conversion, URL encoding/decoding, etc.
|
||||
|
||||
##### 1.2.11.4 File directory module
|
||||
Support multi-level directory creation, multi-level directory scanning, file handle caching, etc., while processing multi-level directories in a round-robin manner, avoiding the potential for stack overflow in recursive mode.
|
||||
|
||||
##### 1.2.11.5 Read configuration file module
|
||||
Supports reading the configuration file of the name=value format. When the value is long, you can use the backslash (\) to wrap the line, and use the configuration table to extract the configuration items in the configuration file.
|
||||
|
||||
##### 1.2.11.6 File queue processing library
|
||||
Supports the creation, scanning, and deletion of multiple sets of directory queue files; it is commonly used in service programs for temporary file queue scheduling.
|
||||
|
||||
##### 1.2.11.7 Json parsing library
|
||||
Supports streaming parsing of json data while supporting json packet assembly.
|
||||
|
||||
##### 1.2.11.8 Xml parsing library
|
||||
Support streaming methods to parse xml data while supporting xml packet assembly.
|
||||
|
||||
##### 1.2.11.9 Common coding library
|
||||
It also includes codecs such as rfc2047, url, base64, uucode, qpcode, charset, etc. These decoding libraries are all streamed and are suitable for multiple network IO models (blocking/non-blocking TCP, UDP).
|
||||
|
||||
## 2 Platform support and compilation
|
||||
The entire project currently supports Linux (AS4, 5, 6, CS4, 5, 6, ubuntu), Windows, MacOS, FreeBSD, Solaris, Android, IOS.
|
||||
* Linux/UNIX: The compiler is gcc, enter the lib_acl/lib_protocol/lib_acl_cpp directory directly in the terminal command line mode, run the make command.
|
||||
* Windows: Can be compiled with VC2003/VC2008/VC2010/VC2012/vc2013/vc2015. (If you need to compile with VC6/VC2005, you can refer to the compilation conditions of VC2003).
|
||||
* MacOS: Compiled with xcode.
|
||||
* Support for CMake cross-platform compilation
|
||||
|
||||
There are a few things to keep in mind when using dynamic libraries in a WIN32 environment:
|
||||
* When using the dynamic library of lib_acl, it needs to be predefined in the user's project: ACL_DLL;
|
||||
* When using the HTTP library or ICMP library in the lib_protocol dynamic library, you need to predefine HTTP_DLL or ICMP_DLL in the project;
|
||||
* When using the dynamic library of lib_acl_cpp, you need to predefine ACL_CPP_DLL in the project. If you use the VC2003 compiler environment, you need to predefine VC2003.
|
||||
* When using the dynamic library of lib_dict, you need to predefine DICT_DLL in the project;
|
||||
* When using a dynamic library of lib_tls, you need to predefine TLS_DLL in your project.
|
||||
* Detailed compilation process, see: [compilation and use of acl library] (BUILD.md)
|
||||
|
||||
## 3 Description of directory structure
|
||||
|
||||
### 3.1 lib_acl
|
||||
1. init : mainly used to initialize the acl base library
|
||||
2. stdlib: is a relatively basic function library. In the stdlib/ root directory, it mainly includes some functions related to logging, network/file stream processing, VSTRING buffer operation, etc. There are two directories under stdlib/, as follows :
|
||||
- 2.1 common : This directory is mainly used for some commonly used data structures and algorithmic function libraries, such as hash tables, linked lists, queues, dynamic arrays, stacks, caches, balanced binary trees, pattern matching trees, etc.
|
||||
- 2.2 memory : This directory mainly contains function libraries related to memory operations, such as memory base allocation and verification, memory pool management, memory slice management, etc.
|
||||
- 2.3 filedir: This directory mainly contains libraries related to directory traversal, directory creation, etc.
|
||||
- 2.4 configure : This directory mainly contains the analysis library of the configuration file;
|
||||
- 2.5 iostuff: This directory mainly contains some commonly used function libraries for IO operations, such as read/write timeout, setting the blocking mode of IO handles, etc.
|
||||
- 2.6 string : This directory mainly contains some commonly used string manipulation libraries, providing more flexible and efficient string manipulation functions than standard C;
|
||||
- 2.7 debug : Mainly used to assist in debugging memory leaks and other functions;
|
||||
- 2.8 sys: is mainly a package function library of APIs related to different operating system platforms;
|
||||
3. **net: is a function library related to network operation, including network monitoring, network connection, DNS query, socket parameter setting and other functions;
|
||||
- 3.1 connect : Mainly a function library related to network connection, including network connection, domain socket connection, etc.;
|
||||
- 3.2 listen : Mainly related to the network monitoring function library, including network monitoring, domain socket monitoring, etc.;
|
||||
- 3.3 dns: Mainly related to the DNS domain name query, including the encapsulation of interfaces such as gethostbyname, and the ability to directly send UDP packets according to the RFC1035 standard.
|
||||
4. **event: Mainly encapsulates system API interfaces such as select/poll/epoll/iocp/win message/kqueue/devpoll, which makes handling network events more flexible, efficient, and simple. It also includes timer interface, many in acl. Network applications will use these interfaces, such as aio, master and other modules; **
|
||||
5. **aio: A function that mainly contains asynchronous operations on the network. This library is very efficient when dealing with high concurrency, and provides a more advanced calling method than the base API, than using a file like libevent. The library is simpler and thread safe;**
|
||||
6. msg: mainly contains thread-based message events and network-based message events;
|
||||
7. thread: Mainly encapsulates the basic thread API under each OS platform, which makes the external interface consistent, eliminates the difference of the platform, and also provides a semi-resident thread pool function library, as well as thread-local variables. Expansion
|
||||
8. db: Mainly some database-related function libraries, defines a common database connection pool framework (and implements mysql connection pool instance); a simple in-memory database (by hash table, linked list, balanced binary tree) Combined); ZDB data storage engine, which is an efficient digital key-based storage engine;
|
||||
9. proctl: the parent and child process control function library under the win32 platform;
|
||||
10. code : Common coding function library, including base64 codec, URL codec and some Chinese character set encoding;
|
||||
11. unit_test : contains a library of functions for testing C language units;
|
||||
12. xml: is a streaming xml parser and constructor that supports blocking and blocking network communication;
|
||||
13. json: is a streaming json parser and constructor that supports blocking and blocking network communications;
|
||||
14. **master: is a server framework that supports multiple server modes in the UNIX environment. Currently, it supports multi-process mode, multi-process multi-thread mode, multi-process non-blocking mode, multi-process trigger mode and UDP communication mode; *
|
||||
|
||||
### 3.2 lib_protocol
|
||||
1. http: HTTP protocol related library, support HTTP/1.1, communication mode supports synchronous/asynchronous mode
|
||||
2. icmp: icmp/ping protocol library, supporting synchronous/asynchronous communication
|
||||
3. smtp: mail client sending protocol library
|
||||
|
||||
### 3.3 lib_acl_cpp
|
||||
1. stdlib: mainly contains string processing class (string), xml/json parsing library, zlib compression library (depends on zlib library), logging class, character set transcoding (ivel library is required in UNIX environment), memcached client Library, mutual exclusion class (supports thread lock, file lock);
|
||||
2. **stream: Supports network flow/file flow, supports blocking/non-blocking communication modes, supports select/poll/epoll/iocp/win32 message/kqueue/devpoll in non-blocking mode; supports ssl encrypted transmission (blocking) And non-blocking mode, need polarsl library); **
|
||||
3. ipc: provides a way to integrate blocking modules with non-blocking modules in non-blocking communication mode;
|
||||
4. **http: A complete HTTP communication library and protocol parsing library, support client and server mode, support ssl/gzip transmission mode; support most interfaces similar to Java HttpServlet mode, convenient to write CGI and WEB server programs ;**
|
||||
5. db: encapsulates the MYSQL/SQLITE library and supports database connection pooling;
|
||||
6. hsocket: implements the complete handler-socket client communication library;
|
||||
7. **mime: Supports complete library related to mail encoding (rfc2045-rfc2047/rfc822/base64/uucode encoding and decoding library for mail).**
|
||||
8. **master: Server framework library that encapsulates the C library**
|
||||
9. beanstalk: message queue application beanstalkd client communication library, support connection pool
|
||||
10. connpool: Universal connection pool library
|
||||
11. hscoket: mysql plugin handle-socket client communication library, support connection pool
|
||||
12. memcache: client library of memcached application, support connection pool and connection pool cluster management
|
||||
13. queue: disk file queue operation library
|
||||
14. ipc: Blocking/non-blocking communication integration library
|
||||
15. session: HTTP session library
|
||||
16. **redis: Full implementation of the redis protocol client communication library (12 major categories, more than 150 commands), support connection pooling and connection pool cluster management**
|
||||
17. disque: Support for cluster message queue service disque client library, support connection pool and connection pool cluster management
|
||||
|
||||
### 3.4 lib_fiber
|
||||
1. c directory: This directory is mainly a network coroutine library implemented in C language version, which contains source files and header files.
|
||||
2. cpp directory: This directory contains the C language version of the network coroutine library
|
||||
3. samples directory: There are a lot of examples in this directory using the programming of the coroutine library.
|
||||
|
||||
### 3.5 Legend
|
||||
* Class index map:
|
||||
![class index map](res/img/index.jpg)
|
||||
* Asynchronous IO class inheritance graph
|
||||
![Asynchronous IO class inheritance graph](res/img/aio_inherit.jpg)
|
||||
* IO stream inheritance graph
|
||||
![IO stream inheritance map](res/img/stream_inherit.jpg)
|
||||
* acl service framework daemon event processing flow
|
||||
![acl service daemon event processing flow] (res/img/acl_master.jpg)
|
||||
* acl server framework child process event processing flow
|
||||
![Service Child Process Event Flow] (res/img/master_proc.jpg)
|
||||
* Receive a CGI program that uploads files:
|
||||
![CGI program to receive uploaded files] (res/img/cgi_upload.jpg)
|
||||
* File download client program:
|
||||
![File Download Client Program] (res/img/http_download.jpg)
|
||||
* Web downloader:
|
||||
![Web downloader](res/img/http_client.jpg)
|
||||
|
||||
### 3.6 There are a lot of examples in the acl library for reference, please refer to: [SAMPLES.md](SAMPLES.md)
|
||||
### 3.7 Acl using FAQ: [FAQ.md](FAQ.md)
|
||||
|
||||
## 4 Who are using acl?
|
||||
[![iqiyi](res/logo/logo_iqiyi.png)](http://www.iqiyi.com/)
|
||||
[![263](res/logo/logo_263.png)](http://www.263.net/)
|
||||
[![hexun](res/logo/logo_hexun.png)](http://www.hexun.com/)
|
||||
[![v1](res/logo/logo_v1.png)](http://www.v1.cn/)
|
||||
[![lecloud](res/logo/logo_lecloud.png)](http://www.lecloud.com/)
|
||||
[![ksyun](res/logo/logo_ksyun.png)](https://www.ksyun.com/)
|
||||
[![weibangong](res/logo/logo_weibangong.png)](https://www.weibangong.com/)
|
||||
[![xianyou](res/logo/logo_xianyou.png)](http://www.i3game.com/)
|
||||
[![foundao](res/logo/logo_foundao.png)](http://www.foundao.com/)
|
||||
|
||||
## 5 License
|
||||
- LGPL-v3 license (see [LICENSE.txt](LICENSE.txt) in the acl project)
|
||||
|
||||
## 6 Reference
|
||||
- WEB site: https://blog.csdn.net/zsxxsz
|
||||
- Github: https://github.com/acl-dev/acl
|
||||
- Oschina: https://gitee.com/acl-dev/acl
|
||||
- Weibo: http://weibo.com/zsxxsz
|
||||
- QQ Group: 693868497
|
@ -1,181 +0,0 @@
|
||||
# acl 示例
|
||||
## acl 项目的测试及应用示例,主要包括三个示例集合,如下:
|
||||
|
||||
### 1、acl/samples:该目录下的例子主要是基于 lib_acl 及 lib_protocol 两个库的例子
|
||||
- 1.1 acl: 打印当前 acl 库版本号程序
|
||||
- 1.2 aio/client: 非阻塞 io 客户端
|
||||
- 1.3 aio/server: 非阻塞 io 服务器
|
||||
- 1.4 base64: base64 编/解码程序
|
||||
- 1.5 btree: 二叉树程序
|
||||
- 1.6 cache: 对象缓存程序
|
||||
- 1.7 cache2: 对象缓存程序
|
||||
- 1.8 cgi_env: CGI 程序用来获得 CGI 环境变量
|
||||
- 1.9 chunk_chain: 二分块数据程序
|
||||
- 1.10 configure: 配置文件处理程序
|
||||
- 1.11 connect: 网络客户端连接程序
|
||||
- 1.12 dbpool: 数据库连接池程序
|
||||
- 1.13 dlink: 二分块查找算法程序
|
||||
- 1.14 dns: 域名查询程序
|
||||
- 1.15 dns_req: 域名查询程序
|
||||
- 1.16 event: 事件引擎程序
|
||||
- 1.17 fifo: 先进先出算法程序
|
||||
- 1.18 file: 文件流处理程序
|
||||
- 1.19 file_fmt: 将 UNIX 下的 \n 转为 WIN32 下的 \r\n 或者反向转换程序
|
||||
- 1.20 FileDir: win32 下目录操作程序
|
||||
- 1.21 flock: 文件锁处理程序
|
||||
- 1.22 gc: 内存自动回收程序
|
||||
- 1.23 htable: 哈希表处理程序
|
||||
- 1.24 http/header: http 客户端程序
|
||||
- 1.25 http/url_get1: 网页下载客户端程序
|
||||
- 1.26 http/url_get2: 网页下载客户端程序
|
||||
- 1.27 http/url_get3: 网页下载客户端程序
|
||||
- 1.28 http_aio: 简单的 HTTP 异步下载程序
|
||||
- 1.29 http_client: WIN32 下 HTTP 客户端程序
|
||||
- 1.30 http_probe: HTTP 客户端程序
|
||||
- 1.31 ifconf: 获取本机网卡的程序
|
||||
- 1.32 iplink: IP 地址段管理程序
|
||||
- 1.33 iterator: C 方式进行遍历的程序
|
||||
- 1.34 json: json 对象处理程序
|
||||
- 1.35 json2: json 对象处理程序
|
||||
- 1.36 json3: json 对象处理程序
|
||||
- 1.37 jt2ft: 简体转繁体程序
|
||||
- 1.38 log: 日志处理程序
|
||||
- 1.39 master/aio_echo: 非阻塞回显服务器程序
|
||||
- 1.40 master/aio_proxy: 非阻塞 TCP 代理程序
|
||||
- 1.41 master/ioctl_echo2: 多线程回显示服务器程序
|
||||
- 1.42 master/ioctl_echo3: 多线程回显示服务器程序
|
||||
- 1.43 master/master_notify: 多线程服务器程序
|
||||
- 1.44 master/master_threads: 多线程服务器程序
|
||||
- 1.45 master/single_echo: 多进程回显示服务器程序
|
||||
- 1.46 master/trigger: 触发器服务器程序
|
||||
- 1.47 master/udp_echo: UDP 回显服务器程序
|
||||
- 1.48 memdb: 简单的内存数据库程序
|
||||
- 1.49 mempool: 内存池程序
|
||||
- 1.50 mkdir: 创建多级目录程序
|
||||
- 1.51 net: 简单网络程序
|
||||
- 1.52 ping: 阻塞/非阻塞 PING 程序
|
||||
- 1.53 pipe: 管道处理程序
|
||||
- 1.54 proctl: WIN32 下父子进程程序
|
||||
- 1.55 resolve: 域名解析程序
|
||||
- 1.56 server: 简单的服务器程序
|
||||
- 1.57 server1: 简单的服务器程序
|
||||
- 1.58 slice: 内存池切片程序
|
||||
- 1.59 slice_mem: 内存池切片程序
|
||||
- 1.60 smtp_client: smtp 客户端发信程序
|
||||
- 1.61 string: acl 字符串处理程序
|
||||
- 1.62 thread: 线程程序
|
||||
- 1.63 token_tree: 256 叉树程序
|
||||
- 1.64 udp_clinet: UDP 客户端程序
|
||||
- 1.65 udp_server: UDP 服务器程序
|
||||
- 1.66 urlcode: URL 编码处理程序
|
||||
- 1.67 vstream: IO 网络流处理程序
|
||||
- 1.68 vstream_client: 网络客户端流程序
|
||||
- 1.69 vstream_fseek: 文件流处理程序
|
||||
- 1.70 vstream_fseek2: 文件流处理程序
|
||||
- 1.71 vstream_popen: 管道流处理程序
|
||||
- 1.71 vstream_popen2: 管道流处理程序
|
||||
- 1.71 vstream_popen3: 管道流处理程序
|
||||
- 1.72 vstream_server: 网络服务端程序
|
||||
- 1.73 xml: XML 解析程序
|
||||
- 1.74 xml2: XML 解析程序
|
||||
- 1.75 zdb: 数字KEY/VALUE 文件存储引擎程序
|
||||
|
||||
### 2、acl/lib_acl_cpp/samples:该目录下的例子基本是基于 lib_acl_cpp 库写的 C++ 例子
|
||||
- 2.1 aio/aio_client: 非阻塞网络客户端程序
|
||||
- 2.2 aio/aio_dns: 非阻塞域名解析客户端程序
|
||||
- 2.3 aio/aio_echo: 非阻塞回显服务器程序
|
||||
- 2.4 aio/aio_ipc: 阻塞/非阻塞整合的网络程序
|
||||
- 2.5 aio/aio_server: 非阻塞服务器程序
|
||||
- 2.6 beanstalk: 队列应用 beanstalkd 的客户端程序
|
||||
- 2.7 benchmark: 与性能测试相关的程序集
|
||||
- 2.8 cgi: 简单的 WEB CGI 程序
|
||||
- 2.9 cgi_upload: 接收上传文件的 CGI 程序
|
||||
- 2.10 charset: 字符集转换程序
|
||||
- 2.11 check_trigger: 检测远程 HTTP 服务器状态的触发器程序
|
||||
- 2.12 connect_manager: 客户端连接池集群管理程序
|
||||
- 2.13 db_service: 与数据库相关的程序
|
||||
- 2.14 dbpool: 使用数据库客户端连接池的程序
|
||||
- 2.15 dircopy: 目录文件拷贝程序
|
||||
- 2.16 final_class: 禁止继承类程序
|
||||
- 2.17 flock: 文件锁处理程序
|
||||
- 2.18 fs_benchmark: 文件系统压力测试程序
|
||||
- 2.19 fstream: 文件流程序
|
||||
- 2.20 gui_rpc: WIN32 下阻塞过程与 WIN32 界面的消息整合的例子
|
||||
- 2.21 hsclient: handle-socket 客户端程序
|
||||
- 2.22 http_client: HTTP 客户端程序
|
||||
- 2.23 http_client2: HTTP 客户端程序
|
||||
- 2.24 http_mime: HTTP 协议的 MIME 格式处理程序
|
||||
- 2.25 htttp/http_request: 使用 http_request 类的 HTTP 客户端程序
|
||||
- 2.26 http_request_manager: HTTP 客户端连接池集群程序
|
||||
- 2.27 http_request_pool: HTTP 客户端连接池程序
|
||||
- 2.28 http_request2: 使用 http_request 类的 HTTP 客户端程序
|
||||
- 2.29 http/http_response: 使用 http_reponse 类响应 HTTP 客户端请求的程序
|
||||
- 2.30 http_server: 简单的 HTTP 服务器程序
|
||||
- 2.31 http_servlet: 类似于 JAVA HttpServlet 的程序
|
||||
- 2.32 http_servlet2: 类似于 JAVA HttpServlet 的程序
|
||||
- 2.33 HttpClient: 简单的 HTTP 客户端程序
|
||||
- 2.34 json/json0 - json7: json 字符串对象解析程序
|
||||
- 2.35 logger: 日志程序
|
||||
- 2.36 master/master_aio: 非阻塞服务器程序
|
||||
- 2.37 master_aio_proxy: 非阻塞 TCP 代理服务器程序
|
||||
- 2.38 master/master_http_aio: 简单的非阻塞 HTTP 服务器程序
|
||||
- 2.39 master/master_http_rpc: 阻塞/非阻塞整合的 HTTP 服务器程序
|
||||
- 2.40 master/master_http_threads: 多线程 HTTP 服务器程序
|
||||
- 2.40 master/master_http_threads2: 多线程 HTTP 服务器程序
|
||||
- 2.41 master/maser_proc: 进程池服务器程序
|
||||
- 2.42 master/master_threads: 多线程服务器程序
|
||||
- 2.43 master/master_trigger: 触发器服务器程序
|
||||
- 2.44 master/master_udp: UDP 通信服务器程序
|
||||
- 2.45 master/master_udp_threads: 多线程 UDP 通信服务器程序
|
||||
- 2.46 md5: md5 处理程序
|
||||
- 2.47 mem_cache: memcached 客户端程序
|
||||
- 2.47 memcache_pool: memcached 支持连接池的客户端程序
|
||||
- 2.48 mime: 邮件 MIME 解析处理程序
|
||||
- 2.49 mime_base64: MIME BASE64 格式处理程序
|
||||
- 2.50 mime_qp: MIME QP 格式处理程序
|
||||
- 2.51 mime_xxcode: MIME XXCODE 格式处理程序
|
||||
- 2.52 mysql: mysql 客户端程序
|
||||
- 2.53 mysql2: mysql 客户端程序
|
||||
- 2.54 rfc822: 邮件的 RFC822 协议处理程序
|
||||
- 2.55 rfc2047: 邮件的 RFC2047 协议处理程序
|
||||
- 2.56 rpc_download: 采用阻塞/非阻塞整合方式进行 HTTP 下载的程序
|
||||
- 2.57 scan_dir: 目录递归扫描程序
|
||||
- 2.58 singleton: 单例程序
|
||||
- 2.59 session: 会话程序
|
||||
- 2.60 socket_client: 网络客户端程序
|
||||
- 2.61 socket_stream: 网络流处理程序
|
||||
- 2.62 sqlite: sqlite 数据库程序
|
||||
- 2.63 ssl_aio_client: SSL 非阻塞网络客户端程序
|
||||
- 2.64 ssl_clinet: SSL 阻塞网络客户端程序
|
||||
- 2.65 string: 动态缓冲区处理程序
|
||||
- 2.66 string2: 动态缓冲区处理程序
|
||||
- 2.67 thread: 多线程程序
|
||||
- 2.68 thread_client: 多线程客户端程序
|
||||
- 2.69 thread_pool: 线程池程序
|
||||
- 2.70 udp_client: UDP 通信客户端程序
|
||||
- 2.71 url_coder: URL 编、解码程序
|
||||
- 2.72 win_dbservice: 基于 WIN32 图形界面的数据库处理程序
|
||||
- 2.73 winaio: 基于 WIN32 图形界面的非阻塞客户端程序
|
||||
- 2.74 xml: XML 对象解析处理程序
|
||||
- 2.75 zlib: 压缩格式处理程序
|
||||
- 2.75 redis/redis_connection: redis Connection 客户端程序
|
||||
- 2.76 redis/redis_hash: redis 哈希表类客户端程序
|
||||
- 2.77 redis/redis_hyperloglog: redis hyperloglog 客户端程序
|
||||
- 2.78 redis/redis_key: redis 键类客户端程序
|
||||
- 2.79 redis/redis_list: redis 列表客户端程序
|
||||
- 2.80 redis/redis_manager: redis 连接池集群管理客户端程序
|
||||
- 2.81 redis/redis_pool: redis 连接池客户端程序
|
||||
- 2.82 redis/redis_pubsub: redis 发布订阅客户端程序
|
||||
- 2.83 redis/redis_server: redis 服务器管理的客户端程序
|
||||
- 2.84 redis/redis_set: redis 集合客户端程序
|
||||
- 2.85 redis/redis_string: redis 字符串客户端程序
|
||||
- 2.86 redis/redis_trans: redis 事务客户端程序
|
||||
- 2.87 redis/redis_zset: redis 有序集客户端程序
|
||||
- 2.88 redis/redis_zset_pool: redis 有序集客户端程序,使用有序集对象存储大数据块,支持连接池方式
|
||||
|
||||
### 3、acl/app:该目录下的例子主要是一些比较实用的例子
|
||||
- **3.1 wizard: 用来生成基于 acl 服务器框架的程序模板的程序**
|
||||
- 3.2 gid: 用来产生全局唯一 ID 号的服务程序(含客户端库)
|
||||
- 3.3 net_tools: 用来测试网络状态的程序
|
||||
- 3.4 master_dispatch: 对后端服务器分配 TCP 连接的连接均衡程序
|
||||
- 3.5 jaws(目前不可用):基于 acl 的非阻塞通信模块和 HTTP 模块写的一个简易的 HTTP 高并发服务器程序
|
@ -1 +0,0 @@
|
||||
theme: jekyll-theme-slate
|
@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup />
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir)include;$(SolutionDir)lib_acl_cpp\include;$(SolutionDir)lib_acl\include;$(SolutionDir)lib_protocol\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)lib_acl_cpp;$(SolutionDir)lib_acl;$(SolutionDir)lib_protocol;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>lib_acl_cpp_vc2015d.lib;lib_acl_vc2015d.lib;lib_protocol_vc2015d.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup />
|
||||
</Project>
|
@ -1,30 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<Group
|
||||
location = "container:"
|
||||
name = "samples">
|
||||
<Group
|
||||
location = "container:"
|
||||
name = "fiber">
|
||||
<FileRef
|
||||
location = "group:lib_fiber/samples/xcode/fiber_server/fiber_server.xcodeproj">
|
||||
</FileRef>
|
||||
</Group>
|
||||
</Group>
|
||||
<FileRef
|
||||
location = "group:lib_fiber/fiber_cpp.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:lib_fiber/fiber.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:lib_acl/acl.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:lib_protocol/protocol.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:lib_acl_cpp/acl_cpp.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
@ -1,244 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2013
|
||||
VisualStudioVersion = 12.0.31101.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_acl", "lib_acl\lib_acl_vc2013.vcxproj", "{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_protocol", "lib_protocol\lib_protocol_vc2013.vcxproj", "{FE724EF7-3763-4E78-BDF5-BCBC075719FD}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_acl_cpp", "lib_acl_cpp\lib_acl_cpp_vc2013.vcxproj", "{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "doc", "doc", "{C65ABD0D-658D-4FE6-8221-4400B8387F27}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
changes.txt = changes.txt
|
||||
README.md = README.md
|
||||
SAMPLES.md = SAMPLES.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{F3FA3285-72DD-49F2-82EF-8CA03CE20792}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "fiber", "fiber", "{BF81B2CD-2948-4EB9-925F-764AE0EB9BF9}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fiber", "lib_fiber\samples\fiber\fiber_vc2013.vcxproj", "{6265F6E1-CF6D-4C22-8F91-95921659C146}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690} = {AD99B75A-40BF-46DC-844B-23417FDC8690}
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfiber_cpp", "lib_fiber\cpp\libfiber_cpp_vc2013.vcxproj", "{F2479E2C-7267-436C-A1F1-A63B39E7CB30}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfiber", "lib_fiber\c\libfiber_vc2013.vcxproj", "{AD99B75A-40BF-46DC-844B-23417FDC8690}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinEchod", "lib_fiber\samples\WinEchod\WinEchod_vc2013.vcxproj", "{F74A61AD-A309-47A5-A7C6-BAC888660BBC}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30} = {F2479E2C-7267-436C-A1F1-A63B39E7CB30}
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC} = {6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690} = {AD99B75A-40BF-46DC-844B-23417FDC8690}
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD} = {FE724EF7-3763-4E78-BDF5-BCBC075719FD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
DebugDll|Mixed Platforms = DebugDll|Mixed Platforms
|
||||
DebugDll|Win32 = DebugDll|Win32
|
||||
DebugDll|x64 = DebugDll|x64
|
||||
Release|Mixed Platforms = Release|Mixed Platforms
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
ReleaseDll|Mixed Platforms = ReleaseDll|Mixed Platforms
|
||||
ReleaseDll|Win32 = ReleaseDll|Win32
|
||||
ReleaseDll|x64 = ReleaseDll|x64
|
||||
Template|Mixed Platforms = Template|Mixed Platforms
|
||||
Template|Win32 = Template|Win32
|
||||
Template|x64 = Template|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|Win32.Build.0 = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|x64.ActiveCfg = Release|x64
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.ReleaseDll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.ReleaseDll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.ReleaseDll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.ReleaseDll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.ReleaseDll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|Win32.ActiveCfg = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|Win32.Build.0 = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|x64.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|Win32.Build.0 = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|x64.ActiveCfg = Release|x64
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.ReleaseDll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.ReleaseDll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.ReleaseDll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.ReleaseDll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.ReleaseDll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|Win32.ActiveCfg = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|Win32.Build.0 = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|x64.ActiveCfg = ReleaseDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Release|Win32.Build.0 = Release|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Release|x64.ActiveCfg = Release|x64
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.ReleaseDll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.ReleaseDll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.ReleaseDll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.ReleaseDll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.ReleaseDll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|Win32.ActiveCfg = Release|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|Win32.Build.0 = Release|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|x64.ActiveCfg = ReleaseDll|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Release|Win32.Build.0 = Release|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Release|x64.ActiveCfg = Release|x64
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.ReleaseDll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.ReleaseDll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.ReleaseDll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.ReleaseDll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.ReleaseDll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Template|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Template|Mixed Platforms.Build.0 = Release|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Template|Win32.ActiveCfg = Release|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Template|Win32.Build.0 = Release|Win32
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146}.Template|x64.ActiveCfg = Release|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Release|Win32.Build.0 = Release|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Release|x64.ActiveCfg = Release|x64
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.ReleaseDll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.ReleaseDll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.ReleaseDll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.ReleaseDll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.ReleaseDll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Template|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Template|Mixed Platforms.Build.0 = Release|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Template|Win32.ActiveCfg = Release|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Template|Win32.Build.0 = Release|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Template|x64.ActiveCfg = Release|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Release|Win32.Build.0 = Release|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Release|x64.ActiveCfg = Release|x64
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.ReleaseDll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.ReleaseDll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.ReleaseDll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.ReleaseDll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.ReleaseDll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Template|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Template|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Template|Win32.ActiveCfg = DebugDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Template|Win32.Build.0 = DebugDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Template|x64.ActiveCfg = DebugDll|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Release|Win32.Build.0 = Release|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Release|x64.ActiveCfg = Release|x64
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.ReleaseDll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.ReleaseDll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.ReleaseDll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.ReleaseDll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.ReleaseDll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Template|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Template|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Template|Win32.ActiveCfg = DebugDll|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Template|Win32.Build.0 = DebugDll|Win32
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC}.Template|x64.ActiveCfg = DebugDll|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{BF81B2CD-2948-4EB9-925F-764AE0EB9BF9} = {F3FA3285-72DD-49F2-82EF-8CA03CE20792}
|
||||
{6265F6E1-CF6D-4C22-8F91-95921659C146} = {BF81B2CD-2948-4EB9-925F-764AE0EB9BF9}
|
||||
{F74A61AD-A309-47A5-A7C6-BAC888660BBC} = {BF81B2CD-2948-4EB9-925F-764AE0EB9BF9}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -1,140 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27004.2009
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_acl", "lib_acl\lib_acl_vc2017.vcxproj", "{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_protocol", "lib_protocol\lib_protocol_vc2017.vcxproj", "{FE724EF7-3763-4E78-BDF5-BCBC075719FD}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_acl_cpp", "lib_acl_cpp\lib_acl_cpp_vc2017.vcxproj", "{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "doc", "doc", "{C65ABD0D-658D-4FE6-8221-4400B8387F27}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
changes.txt = changes.txt
|
||||
README.md = README.md
|
||||
SAMPLES.md = SAMPLES.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{083DCC81-9A3F-4B12-9821-2B9F52BCCF79}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "app", "app", "{30B69273-9D47-4AD6-B1C5-CF362F9C6D80}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "acl", "acl", "{90E84C91-D60C-47C0-AE83-16056AB38FCC}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "acl_cpp", "acl_cpp", "{AB838366-C278-426E-ADDF-BE3A32BADD3E}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "protocol", "protocol", "{239E2283-051C-466D-8D61-877FDACE4EDF}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aio", "aio", "{5E5307B3-44A8-4E49-A91D-999EF818C486}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "client", "client", "{B600857F-0C3F-4146-B347-009B57B67ADE}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
DebugDll|Mixed Platforms = DebugDll|Mixed Platforms
|
||||
DebugDll|Win32 = DebugDll|Win32
|
||||
DebugDll|x64 = DebugDll|x64
|
||||
Release|Mixed Platforms = Release|Mixed Platforms
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
Releasedll|Mixed Platforms = Releasedll|Mixed Platforms
|
||||
Releasedll|Win32 = Releasedll|Win32
|
||||
Releasedll|x64 = Releasedll|x64
|
||||
Template|Mixed Platforms = Template|Mixed Platforms
|
||||
Template|Win32 = Template|Win32
|
||||
Template|x64 = Template|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|Win32.Build.0 = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|x64.ActiveCfg = Release|x64
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Releasedll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Releasedll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|Win32.ActiveCfg = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|Win32.Build.0 = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|x64.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|Win32.Build.0 = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|x64.ActiveCfg = Release|x64
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Releasedll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Releasedll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|Win32.ActiveCfg = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|Win32.Build.0 = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|x64.ActiveCfg = ReleaseDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Release|Win32.Build.0 = Release|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Release|x64.ActiveCfg = Release|x64
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Releasedll|Mixed Platforms.ActiveCfg = Releasedll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Releasedll|Mixed Platforms.Build.0 = Releasedll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Releasedll|Win32.ActiveCfg = Releasedll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Releasedll|Win32.Build.0 = Releasedll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Releasedll|x64.ActiveCfg = Releasedll|x64
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|Mixed Platforms.ActiveCfg = Releasedll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|Mixed Platforms.Build.0 = Releasedll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|Win32.ActiveCfg = Release|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|Win32.Build.0 = Release|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|x64.ActiveCfg = Releasedll|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{90E84C91-D60C-47C0-AE83-16056AB38FCC} = {083DCC81-9A3F-4B12-9821-2B9F52BCCF79}
|
||||
{AB838366-C278-426E-ADDF-BE3A32BADD3E} = {083DCC81-9A3F-4B12-9821-2B9F52BCCF79}
|
||||
{239E2283-051C-466D-8D61-877FDACE4EDF} = {083DCC81-9A3F-4B12-9821-2B9F52BCCF79}
|
||||
{5E5307B3-44A8-4E49-A91D-999EF818C486} = {90E84C91-D60C-47C0-AE83-16056AB38FCC}
|
||||
{B600857F-0C3F-4146-B347-009B57B67ADE} = {5E5307B3-44A8-4E49-A91D-999EF818C486}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {40FA3A5B-123F-4EC0-9EEB-8A9C17BF573B}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -1,905 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30717.126
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_acl", "lib_acl\lib_acl_vc2019.vcxproj", "{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_protocol", "lib_protocol\lib_protocol_vc2019.vcxproj", "{FE724EF7-3763-4E78-BDF5-BCBC075719FD}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_acl_cpp", "lib_acl_cpp\lib_acl_cpp_vc2019.vcxproj", "{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "doc", "doc", "{C65ABD0D-658D-4FE6-8221-4400B8387F27}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
changes.txt = changes.txt
|
||||
README.md = README.md
|
||||
SAMPLES.md = SAMPLES.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{083DCC81-9A3F-4B12-9821-2B9F52BCCF79}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "app", "app", "{30B69273-9D47-4AD6-B1C5-CF362F9C6D80}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "acl", "acl", "{90E84C91-D60C-47C0-AE83-16056AB38FCC}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "acl_cpp", "acl_cpp", "{AB838366-C278-426E-ADDF-BE3A32BADD3E}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "protocol", "protocol", "{239E2283-051C-466D-8D61-877FDACE4EDF}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aio", "aio", "{5E5307B3-44A8-4E49-A91D-999EF818C486}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfiber", "lib_fiber\c\libfiber_vc2019.vcxproj", "{AD99B75A-40BF-46DC-844B-23417FDC8690}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfiber_cpp", "lib_fiber\cpp\libfiber_cpp_vc2019.vcxproj", "{F2479E2C-7267-436C-A1F1-A63B39E7CB30}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "redis_ssl", "lib_acl_cpp\samples\redis\redis_ssl\redis_ssl_vc2019.vcxproj", "{4D42F462-A2FE-4B4A-A680-53668FA128A6}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC} = {6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD} = {FE724EF7-3763-4E78-BDF5-BCBC075719FD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "fiber_cpp", "fiber_cpp", "{FD628E34-FBB8-4C60-8176-B770EC631CD9}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server", "lib_fiber\samples-c++1x\server\server.vcxproj", "{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30} = {F2479E2C-7267-436C-A1F1-A63B39E7CB30}
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC} = {6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690} = {AD99B75A-40BF-46DC-844B-23417FDC8690}
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD} = {FE724EF7-3763-4E78-BDF5-BCBC075719FD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "master_fiber", "lib_fiber\samples\master_fiber\master_fiber_vc2019.vcxproj", "{3E725148-0807-4CBA-8FC1-7FCA46F605F3}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30} = {F2479E2C-7267-436C-A1F1-A63B39E7CB30}
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC} = {6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690} = {AD99B75A-40BF-46DC-844B-23417FDC8690}
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD} = {FE724EF7-3763-4E78-BDF5-BCBC075719FD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinFiber", "lib_fiber\samples-gui\WinFiber\WinFiber_vc2019.vcxproj", "{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30} = {F2479E2C-7267-436C-A1F1-A63B39E7CB30}
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC} = {6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690} = {AD99B75A-40BF-46DC-844B-23417FDC8690}
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD} = {FE724EF7-3763-4E78-BDF5-BCBC075719FD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "fiber_gui", "fiber_gui", "{1CB30F2E-2587-43E7-A3CF-787783FB6924}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HttpGet", "lib_fiber\samples-gui\HttpGet\HttpGet.vcxproj", "{FE7E9F00-7F46-4072-8B29-A4E915259CDE}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30} = {F2479E2C-7267-436C-A1F1-A63B39E7CB30}
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC} = {6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690} = {AD99B75A-40BF-46DC-844B-23417FDC8690}
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD} = {FE724EF7-3763-4E78-BDF5-BCBC075719FD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EchoServer", "lib_fiber\samples-gui\EchoServer\EchoServer.vcxproj", "{30A882E6-CF13-494F-9132-CE15E040B9DE}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30} = {F2479E2C-7267-436C-A1F1-A63B39E7CB30}
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC} = {6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690} = {AD99B75A-40BF-46DC-844B-23417FDC8690}
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD} = {FE724EF7-3763-4E78-BDF5-BCBC075719FD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "client", "lib_fiber\samples-c++1x\client\client.vcxproj", "{2F80A939-E4BD-4ED7-B512-95FC2B563036}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30} = {F2479E2C-7267-436C-A1F1-A63B39E7CB30}
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC} = {6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690} = {AD99B75A-40BF-46DC-844B-23417FDC8690}
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD} = {FE724EF7-3763-4E78-BDF5-BCBC075719FD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server-threads", "lib_fiber\samples-c++1x\server-threads\server-threads.vcxproj", "{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30} = {F2479E2C-7267-436C-A1F1-A63B39E7CB30}
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC} = {6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690} = {AD99B75A-40BF-46DC-844B-23417FDC8690}
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD} = {FE724EF7-3763-4E78-BDF5-BCBC075719FD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "httpd", "lib_fiber\samples-c++1x\httpd\httpd.vcxproj", "{2F80A939-E4BD-4ED7-B512-95FC2B563009}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "httpc", "lib_fiber\samples-c++1x\httpc\httpc.vcxproj", "{2F80A939-E4BD-4ED7-B512-95FC2B563099}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "redis_list", "lib_acl_cpp\samples\redis\redis_list\redis_list_vc2019.vcxproj", "{1D669177-07FD-4DDD-A13E-52A7DF19CA62}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "client2", "lib_fiber\samples\client2\client2_vc2019.vcxproj", "{A08F48F5-D359-4332-8743-F9D85887AEF6}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690} = {AD99B75A-40BF-46DC-844B-23417FDC8690}
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "fiber", "fiber", "{57B0C6FC-DDAE-41EC-8E04-2D2D8E803D7A}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server2", "lib_fiber\samples\server2\server2_vc2019.vcxproj", "{7F39A2AE-FE11-4C92-A174-269BE486DE4D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690} = {AD99B75A-40BF-46DC-844B-23417FDC8690}
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "thread", "thread", "{5084C239-8D10-4E35-9E9F-A58550DE70B5}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "thread_once", "lib_acl\samples\thread\thread_once\thread_once_vc2019.vcxproj", "{A08F48F5-D359-4332-8743-F9D85887AEFE}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aio_server", "lib_acl\samples\aio\server\aio_server_vc2019.vcxproj", "{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aio_client", "lib_acl\samples\aio\client\aio_client_vc2019.vcxproj", "{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aio_client2", "lib_acl\samples\aio\client2\aio_client2_vc2019.vcxproj", "{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wizard_demo", "wizard_demo", "{FF701178-83CC-4992-B3FA-114073E7A33A}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "httpd_proxy", "app\wizard_demo\httpd_proxy\httpd_proxy_vc2019.vcxproj", "{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC} = {6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD} = {FE724EF7-3763-4E78-BDF5-BCBC075719FD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fiber_tbox", "lib_fiber\samples\fiber_tbox\fiber_tbox.vcxproj", "{92668907-1B34-4B74-98A2-5849FDE67B34}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dns-gate", "app\wizard_demo\dns-gate\service\dns-gate_vc2019.vcxproj", "{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wizard", "app\wizard\wizard_vc2019.vcxproj", "{84376B60-FF20-4FD0-967E-C568FC2FBC53}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC} = {6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD} = {FE724EF7-3763-4E78-BDF5-BCBC075719FD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gson", "app\gson\gson_vc2019.vcxproj", "{D15D860E-5012-471A-83D4-81A1251BF88D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B} = {B40213C2-507C-4C7F-A6E1-B850C9BDC27B}
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD} = {FE724EF7-3763-4E78-BDF5-BCBC075719FD}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "net_tools", "app\net_tools\net_tools_vc2019.vcxproj", "{45276293-D169-4D73-8930-F255C09DA976}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
DebugDll|Mixed Platforms = DebugDll|Mixed Platforms
|
||||
DebugDll|Win32 = DebugDll|Win32
|
||||
DebugDll|x64 = DebugDll|x64
|
||||
Release|Mixed Platforms = Release|Mixed Platforms
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
Releasedll|Mixed Platforms = Releasedll|Mixed Platforms
|
||||
Releasedll|Win32 = Releasedll|Win32
|
||||
Releasedll|x64 = Releasedll|x64
|
||||
Template|Mixed Platforms = Template|Mixed Platforms
|
||||
Template|Win32 = Template|Win32
|
||||
Template|x64 = Template|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|x64.ActiveCfg = Release|x64
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|Win32.Build.0 = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Template|x64.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|x64.ActiveCfg = Release|x64
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|Win32.Build.0 = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Template|x64.ActiveCfg = ReleaseDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Release|x64.ActiveCfg = Release|x64
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Releasedll|Mixed Platforms.ActiveCfg = Releasedll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Releasedll|Win32.ActiveCfg = Releasedll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Releasedll|x64.ActiveCfg = Releasedll|x64
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|Mixed Platforms.ActiveCfg = Releasedll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|Mixed Platforms.Build.0 = Releasedll|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|Win32.Build.0 = Debug|Win32
|
||||
{6EC1F44E-6A6A-48E9-B699-D7E89B63C8DC}.Template|x64.ActiveCfg = Releasedll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Release|x64.ActiveCfg = Release|x64
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Template|Win32.Build.0 = Debug|Win32
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Template|x64.ActiveCfg = Debug|x64
|
||||
{AD99B75A-40BF-46DC-844B-23417FDC8690}.Template|x64.Build.0 = Debug|x64
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Release|x64.ActiveCfg = Release|x64
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Template|Win32.Build.0 = Debug|Win32
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Template|x64.ActiveCfg = Debug|x64
|
||||
{F2479E2C-7267-436C-A1F1-A63B39E7CB30}.Template|x64.Build.0 = Debug|x64
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Release|x64.ActiveCfg = Release|x64
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Releasedll|Mixed Platforms.ActiveCfg = Releasedll|Win32
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Releasedll|Win32.ActiveCfg = Releasedll|Win32
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Releasedll|x64.ActiveCfg = Releasedll|x64
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Template|Win32.Build.0 = Debug|Win32
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Template|x64.ActiveCfg = Debug|x64
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6}.Template|x64.Build.0 = Debug|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Release|x64.ActiveCfg = Release|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Template|Win32.Build.0 = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Template|x64.ActiveCfg = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2}.Template|x64.Build.0 = Debug|Win32
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Release|x64.ActiveCfg = Release|x64
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Template|Win32.Build.0 = Debug|Win32
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Template|x64.ActiveCfg = Debug|Win32
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3}.Template|x64.Build.0 = Debug|Win32
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Release|x64.ActiveCfg = Release|x64
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Template|Win32.Build.0 = Debug|Win32
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Template|x64.ActiveCfg = Debug|x64
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222}.Template|x64.Build.0 = Debug|x64
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Release|x64.ActiveCfg = Release|x64
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Template|Win32.Build.0 = Debug|Win32
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Template|x64.ActiveCfg = Debug|x64
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE}.Template|x64.Build.0 = Debug|x64
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Release|x64.ActiveCfg = Release|x64
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Template|Win32.Build.0 = Debug|Win32
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Template|x64.ActiveCfg = Debug|x64
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE}.Template|x64.Build.0 = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Debug|x64.Build.0 = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.DebugDll|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.DebugDll|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.DebugDll|Win32.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.DebugDll|Win32.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.DebugDll|x64.ActiveCfg = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.DebugDll|x64.Build.0 = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Release|Win32.Build.0 = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Release|x64.ActiveCfg = Release|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Release|x64.Build.0 = Release|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Releasedll|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Releasedll|Mixed Platforms.Build.0 = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Releasedll|Win32.ActiveCfg = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Releasedll|Win32.Build.0 = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Releasedll|x64.ActiveCfg = Release|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Releasedll|x64.Build.0 = Release|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Template|Win32.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Template|x64.ActiveCfg = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036}.Template|x64.Build.0 = Debug|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Debug|x64.Build.0 = Debug|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.DebugDll|x64.Build.0 = DebugDll|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Release|Win32.Build.0 = Release|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Release|x64.ActiveCfg = Release|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Release|x64.Build.0 = Release|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Releasedll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Releasedll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Releasedll|x64.Build.0 = ReleaseDll|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Template|Win32.Build.0 = Debug|Win32
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Template|x64.ActiveCfg = Debug|x64
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3}.Template|x64.Build.0 = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Debug|x64.Build.0 = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.DebugDll|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.DebugDll|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.DebugDll|Win32.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.DebugDll|Win32.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.DebugDll|x64.ActiveCfg = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.DebugDll|x64.Build.0 = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Release|Win32.Build.0 = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Release|x64.ActiveCfg = Release|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Release|x64.Build.0 = Release|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Releasedll|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Releasedll|Mixed Platforms.Build.0 = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Releasedll|Win32.ActiveCfg = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Releasedll|Win32.Build.0 = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Releasedll|x64.ActiveCfg = Release|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Releasedll|x64.Build.0 = Release|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Template|Win32.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Template|x64.ActiveCfg = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009}.Template|x64.Build.0 = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Debug|x64.Build.0 = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.DebugDll|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.DebugDll|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.DebugDll|Win32.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.DebugDll|Win32.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.DebugDll|x64.ActiveCfg = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.DebugDll|x64.Build.0 = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Release|Win32.Build.0 = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Release|x64.ActiveCfg = Release|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Release|x64.Build.0 = Release|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Releasedll|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Releasedll|Mixed Platforms.Build.0 = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Releasedll|Win32.ActiveCfg = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Releasedll|Win32.Build.0 = Release|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Releasedll|x64.ActiveCfg = Release|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Releasedll|x64.Build.0 = Release|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Template|Win32.Build.0 = Debug|Win32
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Template|x64.ActiveCfg = Debug|x64
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099}.Template|x64.Build.0 = Debug|x64
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Debug|x64.Build.0 = Debug|x64
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.DebugDll|x64.Build.0 = DebugDll|x64
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Release|Win32.Build.0 = Release|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Release|x64.ActiveCfg = Release|x64
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Release|x64.Build.0 = Release|x64
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Releasedll|Mixed Platforms.ActiveCfg = Releasedll|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Releasedll|Mixed Platforms.Build.0 = Releasedll|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Releasedll|Win32.ActiveCfg = Releasedll|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Releasedll|Win32.Build.0 = Releasedll|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Releasedll|x64.ActiveCfg = Releasedll|x64
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Releasedll|x64.Build.0 = Releasedll|x64
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Template|Win32.Build.0 = Debug|Win32
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Template|x64.ActiveCfg = Debug|x64
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62}.Template|x64.Build.0 = Debug|x64
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.DebugDll|x64.ActiveCfg = DebugDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Release|Win32.Build.0 = Release|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Release|x64.ActiveCfg = Release|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Releasedll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Releasedll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Releasedll|x64.ActiveCfg = ReleaseDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Template|Win32.Build.0 = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Template|x64.ActiveCfg = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6}.Template|x64.Build.0 = Debug|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.DebugDll|x64.ActiveCfg = DebugDll|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Release|Win32.Build.0 = Release|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Release|x64.ActiveCfg = Release|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Releasedll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Releasedll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Releasedll|x64.ActiveCfg = ReleaseDll|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Template|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Template|Mixed Platforms.Build.0 = Release|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Template|Win32.ActiveCfg = Release|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Template|Win32.Build.0 = Release|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Template|x64.ActiveCfg = Release|Win32
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D}.Template|x64.Build.0 = Release|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.DebugDll|x64.ActiveCfg = DebugDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Release|Win32.Build.0 = Release|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Release|x64.ActiveCfg = Release|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Releasedll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Releasedll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Releasedll|x64.ActiveCfg = ReleaseDll|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Template|Win32.Build.0 = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Template|x64.ActiveCfg = Debug|Win32
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE}.Template|x64.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.DebugDll|x64.ActiveCfg = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Release|Win32.Build.0 = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Release|x64.ActiveCfg = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Releasedll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Releasedll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Releasedll|x64.ActiveCfg = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Template|Win32.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Template|x64.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20}.Template|x64.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.DebugDll|x64.ActiveCfg = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Release|Win32.Build.0 = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Release|x64.ActiveCfg = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Releasedll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Releasedll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Releasedll|x64.ActiveCfg = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Template|Win32.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Template|x64.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23}.Template|x64.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Debug|x64.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.DebugDll|x64.ActiveCfg = DebugDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Release|Win32.Build.0 = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Release|x64.ActiveCfg = Release|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Releasedll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Releasedll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Releasedll|x64.ActiveCfg = ReleaseDll|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Template|Win32.Build.0 = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Template|x64.ActiveCfg = Debug|Win32
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24}.Template|x64.Build.0 = Debug|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Debug|x64.Build.0 = Debug|x64
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.DebugDll|x64.Build.0 = DebugDll|x64
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Release|Win32.Build.0 = Release|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Release|x64.ActiveCfg = Release|x64
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Release|x64.Build.0 = Release|x64
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Releasedll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Releasedll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Releasedll|x64.Build.0 = ReleaseDll|x64
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Template|Win32.Build.0 = Debug|Win32
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Template|x64.ActiveCfg = Debug|x64
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C}.Template|x64.Build.0 = Debug|x64
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Debug|x64.Build.0 = Debug|x64
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.DebugDll|x64.Build.0 = DebugDll|x64
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Release|Win32.Build.0 = Release|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Release|x64.ActiveCfg = Release|x64
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Release|x64.Build.0 = Release|x64
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Releasedll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Releasedll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Releasedll|x64.Build.0 = ReleaseDll|x64
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Template|Win32.Build.0 = Debug|Win32
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Template|x64.ActiveCfg = Debug|x64
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34}.Template|x64.Build.0 = Debug|x64
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Debug|x64.Build.0 = Debug|x64
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.DebugDll|x64.ActiveCfg = DebugDll|x64
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.DebugDll|x64.Build.0 = DebugDll|x64
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Release|Win32.Build.0 = Release|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Release|x64.ActiveCfg = Release|x64
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Release|x64.Build.0 = Release|x64
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Releasedll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Releasedll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Releasedll|x64.ActiveCfg = ReleaseDll|x64
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Releasedll|x64.Build.0 = ReleaseDll|x64
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Template|Win32.Build.0 = Debug|Win32
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Template|x64.ActiveCfg = Debug|x64
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88}.Template|x64.Build.0 = Debug|x64
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Debug|x64.Build.0 = Debug|x64
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.DebugDll|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.DebugDll|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.DebugDll|Win32.ActiveCfg = Debug|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.DebugDll|Win32.Build.0 = Debug|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.DebugDll|x64.ActiveCfg = Debug|x64
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.DebugDll|x64.Build.0 = Debug|x64
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Release|Win32.Build.0 = Release|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Release|x64.ActiveCfg = Release|x64
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Release|x64.Build.0 = Release|x64
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Releasedll|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Releasedll|Mixed Platforms.Build.0 = Release|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Releasedll|Win32.ActiveCfg = Release|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Releasedll|Win32.Build.0 = Release|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Releasedll|x64.ActiveCfg = Release|x64
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Releasedll|x64.Build.0 = Release|x64
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Template|Win32.Build.0 = Debug|Win32
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Template|x64.ActiveCfg = Debug|x64
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53}.Template|x64.Build.0 = Debug|x64
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Debug|x64.Build.0 = Debug|x64
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.DebugDll|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.DebugDll|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.DebugDll|Win32.ActiveCfg = Debug|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.DebugDll|Win32.Build.0 = Debug|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.DebugDll|x64.ActiveCfg = Debug|x64
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.DebugDll|x64.Build.0 = Debug|x64
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Release|Win32.Build.0 = Release|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Release|x64.ActiveCfg = Release|x64
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Release|x64.Build.0 = Release|x64
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Releasedll|Mixed Platforms.ActiveCfg = Release|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Releasedll|Mixed Platforms.Build.0 = Release|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Releasedll|Win32.ActiveCfg = Release|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Releasedll|Win32.Build.0 = Release|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Releasedll|x64.ActiveCfg = Release|x64
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Releasedll|x64.Build.0 = Release|x64
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Template|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Template|Mixed Platforms.Build.0 = Debug|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Template|Win32.ActiveCfg = Debug|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Template|Win32.Build.0 = Debug|Win32
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Template|x64.ActiveCfg = Debug|x64
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D}.Template|x64.Build.0 = Debug|x64
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Debug|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Debug|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Debug|Win32.ActiveCfg = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Debug|Win32.Build.0 = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Debug|x64.ActiveCfg = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.DebugDll|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.DebugDll|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.DebugDll|x64.ActiveCfg = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.DebugDll|x64.Build.0 = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Release|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Release|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Release|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Release|Win32.Build.0 = ReleaseDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Release|x64.ActiveCfg = ReleaseDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Releasedll|Mixed Platforms.ActiveCfg = ReleaseDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Releasedll|Mixed Platforms.Build.0 = ReleaseDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Releasedll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Releasedll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Releasedll|x64.ActiveCfg = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Releasedll|x64.Build.0 = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Template|Mixed Platforms.ActiveCfg = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Template|Mixed Platforms.Build.0 = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Template|Win32.ActiveCfg = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Template|Win32.Build.0 = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Template|x64.ActiveCfg = DebugDll|Win32
|
||||
{45276293-D169-4D73-8930-F255C09DA976}.Template|x64.Build.0 = DebugDll|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{90E84C91-D60C-47C0-AE83-16056AB38FCC} = {083DCC81-9A3F-4B12-9821-2B9F52BCCF79}
|
||||
{AB838366-C278-426E-ADDF-BE3A32BADD3E} = {083DCC81-9A3F-4B12-9821-2B9F52BCCF79}
|
||||
{239E2283-051C-466D-8D61-877FDACE4EDF} = {083DCC81-9A3F-4B12-9821-2B9F52BCCF79}
|
||||
{5E5307B3-44A8-4E49-A91D-999EF818C486} = {90E84C91-D60C-47C0-AE83-16056AB38FCC}
|
||||
{4D42F462-A2FE-4B4A-A680-53668FA128A6} = {AB838366-C278-426E-ADDF-BE3A32BADD3E}
|
||||
{FD628E34-FBB8-4C60-8176-B770EC631CD9} = {083DCC81-9A3F-4B12-9821-2B9F52BCCF79}
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B2} = {FD628E34-FBB8-4C60-8176-B770EC631CD9}
|
||||
{3E725148-0807-4CBA-8FC1-7FCA46F605F3} = {FD628E34-FBB8-4C60-8176-B770EC631CD9}
|
||||
{141DDEA4-DDEF-4D7E-9FE1-5FEFE0D95222} = {1CB30F2E-2587-43E7-A3CF-787783FB6924}
|
||||
{1CB30F2E-2587-43E7-A3CF-787783FB6924} = {083DCC81-9A3F-4B12-9821-2B9F52BCCF79}
|
||||
{FE7E9F00-7F46-4072-8B29-A4E915259CDE} = {1CB30F2E-2587-43E7-A3CF-787783FB6924}
|
||||
{30A882E6-CF13-494F-9132-CE15E040B9DE} = {1CB30F2E-2587-43E7-A3CF-787783FB6924}
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563036} = {FD628E34-FBB8-4C60-8176-B770EC631CD9}
|
||||
{EE518BE5-94B2-4F8E-82CC-C08503BBD6B3} = {FD628E34-FBB8-4C60-8176-B770EC631CD9}
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563009} = {FD628E34-FBB8-4C60-8176-B770EC631CD9}
|
||||
{2F80A939-E4BD-4ED7-B512-95FC2B563099} = {FD628E34-FBB8-4C60-8176-B770EC631CD9}
|
||||
{1D669177-07FD-4DDD-A13E-52A7DF19CA62} = {AB838366-C278-426E-ADDF-BE3A32BADD3E}
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEF6} = {57B0C6FC-DDAE-41EC-8E04-2D2D8E803D7A}
|
||||
{57B0C6FC-DDAE-41EC-8E04-2D2D8E803D7A} = {083DCC81-9A3F-4B12-9821-2B9F52BCCF79}
|
||||
{7F39A2AE-FE11-4C92-A174-269BE486DE4D} = {57B0C6FC-DDAE-41EC-8E04-2D2D8E803D7A}
|
||||
{5084C239-8D10-4E35-9E9F-A58550DE70B5} = {90E84C91-D60C-47C0-AE83-16056AB38FCC}
|
||||
{A08F48F5-D359-4332-8743-F9D85887AEFE} = {5084C239-8D10-4E35-9E9F-A58550DE70B5}
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE20} = {5E5307B3-44A8-4E49-A91D-999EF818C486}
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE23} = {5E5307B3-44A8-4E49-A91D-999EF818C486}
|
||||
{4A56E6AE-448C-4D98-AB7F-3C077ECABE24} = {5E5307B3-44A8-4E49-A91D-999EF818C486}
|
||||
{FF701178-83CC-4992-B3FA-114073E7A33A} = {30B69273-9D47-4AD6-B1C5-CF362F9C6D80}
|
||||
{58FE3581-C997-4BD5-9AC6-AEEB54A43D2C} = {FF701178-83CC-4992-B3FA-114073E7A33A}
|
||||
{92668907-1B34-4B74-98A2-5849FDE67B34} = {FD628E34-FBB8-4C60-8176-B770EC631CD9}
|
||||
{7D4D4DD5-E3E7-4D35-BA76-B451974F1E88} = {FF701178-83CC-4992-B3FA-114073E7A33A}
|
||||
{84376B60-FF20-4FD0-967E-C568FC2FBC53} = {30B69273-9D47-4AD6-B1C5-CF362F9C6D80}
|
||||
{D15D860E-5012-471A-83D4-81A1251BF88D} = {30B69273-9D47-4AD6-B1C5-CF362F9C6D80}
|
||||
{45276293-D169-4D73-8930-F255C09DA976} = {30B69273-9D47-4AD6-B1C5-CF362F9C6D80}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {40FA3A5B-123F-4EC0-9EEB-8A9C17BF573B}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -1,66 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_acl", "lib_acl\lib_acl_vc2003.vcproj", "{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_protocol", "lib_protocol\lib_protocol_vc2003.vcproj", "{FE724EF7-3763-4E78-BDF5-BCBC075719FD}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_dict", "lib_dict\lib_dict.vcproj", "{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_tls", "lib_tls\lib_tls.vcproj", "{389FDE47-7F16-4DD4-B37A-27918BE745B6}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
DebugDll = DebugDll
|
||||
Release = Release
|
||||
ReleaseDll = ReleaseDll
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfiguration) = postSolution
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug.ActiveCfg = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug.Build.0 = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll.ActiveCfg = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll.Build.0 = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release.ActiveCfg = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release.Build.0 = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.ReleaseDll.ActiveCfg = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.ReleaseDll.Build.0 = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug.ActiveCfg = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug.Build.0 = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll.ActiveCfg = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll.Build.0 = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release.ActiveCfg = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release.Build.0 = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.ReleaseDll.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.ReleaseDll.Build.0 = ReleaseDll|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.Debug.ActiveCfg = Debug|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.Debug.Build.0 = Debug|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.DebugDll.ActiveCfg = DebugDll|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.DebugDll.Build.0 = DebugDll|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.Release.ActiveCfg = Release|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.Release.Build.0 = Release|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.ReleaseDll.ActiveCfg = ReleaseDll|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.ReleaseDll.Build.0 = ReleaseDll|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.Debug.ActiveCfg = Debug|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.Debug.Build.0 = Debug|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.DebugDll.ActiveCfg = DebugDll|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.DebugDll.Build.0 = DebugDll|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.Release.ActiveCfg = Release|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.Release.Build.0 = Release|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.ReleaseDll.ActiveCfg = ReleaseDll|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.ReleaseDll.Build.0 = ReleaseDll|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionItems) = postSolution
|
||||
changes.txt = changes.txt
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -1,60 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_acl", "lib_acl\lib_acl_vc2010.vcxproj", "{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_protocol", "lib_protocol\lib_protocol_vc2010.vcxproj", "{FE724EF7-3763-4E78-BDF5-BCBC075719FD}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_dict", "lib_dict\lib_dict.vcxproj", "{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_tls", "lib_tls\lib_tls.vcxproj", "{389FDE47-7F16-4DD4-B37A-27918BE745B6}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F9F91DA0-E242-4D91-A3E1-EE9440A70B53}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
changes.txt = changes.txt
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
DebugDll|Win32 = DebugDll|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
ReleaseDll|Win32 = ReleaseDll|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|Win32.Build.0 = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.ReleaseDll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.ReleaseDll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|Win32.Build.0 = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.ReleaseDll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.ReleaseDll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.Release|Win32.Build.0 = Release|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.ReleaseDll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{9E6E9FE9-EAAC-44BA-B463-70DE0233822E}.ReleaseDll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.Release|Win32.Build.0 = Release|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.ReleaseDll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{389FDE47-7F16-4DD4-B37A-27918BE745B6}.ReleaseDll|Win32.Build.0 = ReleaseDll|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -1,40 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2012
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_acl", "lib_acl\lib_acl_vc2012.vcxproj", "{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_protocol", "lib_protocol\lib_protocol_vc2012.vcxproj", "{FE724EF7-3763-4E78-BDF5-BCBC075719FD}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2597AF7B-516E-478A-B72E-0BC8A59E8965}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
changes.txt = changes.txt
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
DebugDll|Win32 = DebugDll|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
ReleaseDll|Win32 = ReleaseDll|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.Release|Win32.Build.0 = Release|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.ReleaseDll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}.ReleaseDll|Win32.Build.0 = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|Win32.ActiveCfg = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.DebugDll|Win32.Build.0 = DebugDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.Release|Win32.Build.0 = Release|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.ReleaseDll|Win32.ActiveCfg = ReleaseDll|Win32
|
||||
{FE724EF7-3763-4E78-BDF5-BCBC075719FD}.ReleaseDll|Win32.Build.0 = ReleaseDll|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -1,175 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="acl_c++_shared" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="android-gradle" name="Android-Gradle">
|
||||
<configuration>
|
||||
<option name="GRADLE_PROJECT_PATH" value=":" />
|
||||
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.3.1" />
|
||||
<option name="LAST_KNOWN_AGP_VERSION" value="3.3.1" />
|
||||
</configuration>
|
||||
</facet>
|
||||
<facet type="native-android-gradle" name="Native-Android-Gradle">
|
||||
<configuration>
|
||||
<option name="SELECTED_ABI" />
|
||||
<option name="SELECTED_VARIANT" />
|
||||
</configuration>
|
||||
</facet>
|
||||
<facet type="android" name="Android">
|
||||
<configuration>
|
||||
<option name="SELECTED_BUILD_VARIANT" value="debug" />
|
||||
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
|
||||
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
|
||||
<afterSyncTasks>
|
||||
<task>generateDebugSources</task>
|
||||
</afterSyncTasks>
|
||||
<option name="ALLOW_USER_CONFIGURATION" value="false" />
|
||||
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
|
||||
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
|
||||
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/src/debug/res;file://$MODULE_DIR$/build/generated/res/rs/debug;file://$MODULE_DIR$/build/generated/res/resValues/debug" />
|
||||
<option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/androidTest/res;file://$MODULE_DIR$/src/androidTestDebug/res;file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug;file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" />
|
||||
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
|
||||
<option name="PROJECT_TYPE" value="1" />
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
|
||||
<output url="file://$MODULE_DIR$/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.cxx" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.externalNativeBuild" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../include">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../include" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../include/pgsql" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../include/sqlite" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../include/mysql" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../include/pgsql" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../include/sqlite" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../include/mysql" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../include" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../include/mysql">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../include/mysql" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../include/pgsql">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../include/pgsql" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../include/sqlite">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../include/sqlite" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/include" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/include" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/include">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/include" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/include">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/include" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/include" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_protocol/include">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_protocol/include" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_protocol/include" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_protocol/src">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_protocol/src" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_protocol/src" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: javax.annotation:javax.annotation-api:1.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core:2.2.2@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:rules:0.5@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner:0.5@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource:2.2.2@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:exposed-instrumentation-api-publish:0.5@aar" level="project" />
|
||||
</component>
|
||||
</module>
|
@ -1,120 +0,0 @@
|
||||
apply plugin: 'com.android.library'
|
||||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
//classpath 'com.android.tools.build:gradle:3.3.2'
|
||||
//classpath 'com.android.tools.build:gradle:2.3.0'
|
||||
classpath 'com.android.tools.build:gradle:3.3.1'
|
||||
}
|
||||
//implementation {}
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 28
|
||||
buildToolsVersion "28.0.3"
|
||||
|
||||
repositories {
|
||||
maven { url 'https://repo1.maven.org/maven2' }
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 14
|
||||
targetSdkVersion 28
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
|
||||
def HOOK_NEW = false
|
||||
|
||||
// testIstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
//arguments "-DANDROID_STL=stl_shared"
|
||||
//arguments "-DANDROID_STL=gnustl_shared" // for ndk12b, ndk16b
|
||||
//arguments "-DACL_DISABLE_HOOK_IO=YES" // for ndk12b
|
||||
|
||||
arguments "-DANDROID_STL=c++_shared" // for ndk20 or above
|
||||
arguments "-DHAS_ATOMIC=YES" // for ndk20 or above
|
||||
|
||||
arguments "-DCMAKE_BUILD_TYPE=RELEASE"
|
||||
arguments "-DCMAKE_CXX_FLAGS_RELEASE=-O3"
|
||||
arguments "-DCMAKE_C_FLAGS_RELEASE=-O3"
|
||||
//arguments "-DCMAKE_VERBOSE_MAKEFILE=ON"
|
||||
arguments "-DACL_CLIENT_ONLY=YES"
|
||||
arguments "-DHAS_MBEDTLS=YES"
|
||||
arguments "-DACL_BUILD_SHARED=YES"
|
||||
//cppFlags "-fexceptions"
|
||||
|
||||
if (HOOK_NEW) {
|
||||
arguments "-DACL_HOOK_NEW=YES"
|
||||
}
|
||||
|
||||
//abiFilters 'armeabi', 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'
|
||||
//abiFilters 'armeabi', 'arm64-v8a', 'armeabi-v7a', 'x86' // for ndk16b
|
||||
abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86' // for ndk20 or above
|
||||
}
|
||||
cmake {
|
||||
//arguments '-DANDROID_PLATFORM=android-14','-DANDROID_TOOLCHAIN=clang'
|
||||
//targets 'acl_static', 'protocol_static', 'acl_cpp_static', 'fiber_static', 'fiber_cpp_static' // for ndk12b, ndk16b
|
||||
targets 'acl_static', 'protocol_static', 'acl_cpp_static', 'fiber_static', 'fiber_cpp_static', 'acl', 'protocol', 'acl_cpp', 'fiber', 'fiber_cpp' // for ndk20 or above
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled true
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
debug {
|
||||
jniDebuggable true
|
||||
debuggable true
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
path '../../CMakeLists.txt'
|
||||
version "3.10.2"
|
||||
}
|
||||
}
|
||||
|
||||
packagingOptions {
|
||||
exclude 'lib/arm64-v8a/libgnustl_shared.so'
|
||||
exclude 'lib/armeabi-v7a/libgnustl_shared.so'
|
||||
exclude 'lib/armeabi/libgnustl_shared.so'
|
||||
exclude 'lib/x86/libgnustl_shared.so'
|
||||
exclude 'lib/arm64-v8a/libc++_shared.so'
|
||||
exclude 'lib/armeabi-v7a/libc++_shared.so'
|
||||
exclude 'lib/armeabi/libc++_shared.so'
|
||||
exclude 'lib/x86/libc++_shared.so'
|
||||
}
|
||||
|
||||
productFlavors {
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
//compile fileTree(include: ['*.jar'], dir: 'libs')
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
//androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
|
||||
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
|
||||
exclude group: 'com.android.support', module: 'support-annotations'
|
||||
})
|
||||
//compile 'com.android.support:appcompat-v7:25.3.1'
|
||||
//compile 'com.android.support.constraint:constraint-layout:1.0.2'
|
||||
//testCompile 'junit:junit:4.12'
|
||||
//compile files('libs/junit-4.12.jar')
|
||||
//implementation files('libs/junit-4.12.jar')
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
#Thu Mar 07 11:56:22 CST 2019
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
|
@ -1,160 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn ( ) {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die ( ) {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
esac
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
||||
|
||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
@ -1,90 +0,0 @@
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
@ -1,9 +0,0 @@
|
||||
## This file must *NOT* be checked into Version Control Systems,
|
||||
# as it contains information specific to your local configuration.
|
||||
#
|
||||
# Location of the SDK. This is only used by Gradle.
|
||||
# For customization when using a Version Control System, please read the
|
||||
# header note.
|
||||
#Mon May 20 09:16:13 CST 2019
|
||||
ndk.dir=E:\\tools\\android\\Sdk\\ndk-bundle
|
||||
sdk.dir=E:\\tools\\android\\Sdk
|
@ -1,10 +0,0 @@
|
||||
## This file must *NOT* be checked into Version Control Systems,
|
||||
# as it contains information specific to your local configuration.
|
||||
#
|
||||
# Location of the SDK. This is only used by Gradle.
|
||||
# For customization when using a Version Control System, please read the
|
||||
# header note.
|
||||
#Thu Oct 17 17:02:59 CST 2019
|
||||
#ndk.dir=/Users/shuxinzheng/Library/Android/sdk/ndk-bundle
|
||||
ndk.dir=/Users/shuxinzheng/Library/Android/ndk
|
||||
sdk.dir=/Users/shuxinzheng/Library/Android/sdk
|
@ -1,8 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.acl_dev.acl">
|
||||
|
||||
<application android:allowBackup="true" android:label="@string/app_name"
|
||||
android:supportsRtl="true">
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
@ -1,3 +0,0 @@
|
||||
<resources>
|
||||
<string name="app_name">Acl</string>
|
||||
</resources>
|
@ -1,321 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="acl_ndk12b" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="android-gradle" name="Android-Gradle">
|
||||
<configuration>
|
||||
<option name="GRADLE_PROJECT_PATH" value=":" />
|
||||
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.3.1" />
|
||||
<option name="LAST_KNOWN_AGP_VERSION" value="3.3.1" />
|
||||
</configuration>
|
||||
</facet>
|
||||
<facet type="native-android-gradle" name="Native-Android-Gradle">
|
||||
<configuration>
|
||||
<option name="SELECTED_BUILD_VARIANT" value="debug-x86" />
|
||||
</configuration>
|
||||
</facet>
|
||||
<facet type="android" name="Android">
|
||||
<configuration>
|
||||
<option name="SELECTED_BUILD_VARIANT" value="debug" />
|
||||
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
|
||||
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
|
||||
<afterSyncTasks>
|
||||
<task>generateDebugSources</task>
|
||||
</afterSyncTasks>
|
||||
<option name="ALLOW_USER_CONFIGURATION" value="false" />
|
||||
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
|
||||
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
|
||||
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/build/generated/res/rs/debug;file://$MODULE_DIR$/build/generated/res/resValues/debug" />
|
||||
<option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="" />
|
||||
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
|
||||
<option name="PROJECT_TYPE" value="1" />
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
|
||||
<output url="file://$MODULE_DIR$/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.cxx" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.externalNativeBuild" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/aio">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/aio" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/code">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/code" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/db">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/db" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/db/memdb">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/db/memdb" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/db/mysql">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/db/mysql" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/db/null">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/db/null" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/db/zdb">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/db/zdb" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/event">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/event" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/init">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/init" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/ioctl">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/ioctl" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/json">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/json" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/master">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/master" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/master/template">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/master/template" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/msg">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/msg" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/net">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/net" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/net/connect">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/net/connect" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/net/dns">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/net/dns" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/net/listen">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/net/listen" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/private">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/private" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/common">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/common" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/configure">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/configure" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/debug">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/debug" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/filedir">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/filedir" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/iostuff">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/iostuff" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/memory">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/memory" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/string">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/string" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/sys">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/sys" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/sys/unix">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/sys/unix" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/thread">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/thread" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/unit_test">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/unit_test" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/xml">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/xml" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/beanstalk">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/beanstalk" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/connpool">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/connpool" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/db">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/db" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/disque">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/disque" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/event">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/event" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/hsocket">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/hsocket" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/http">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/http" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/ipc">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/ipc" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/master">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/master" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/memcache">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/memcache" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/mime">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/mime" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/mime/internal">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/mime/internal" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/net">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/net" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/queue">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/queue" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/redis">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/redis" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/serialize">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/serialize" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/session">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/session" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/smtp">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/smtp" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/stdlib">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/stdlib" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/stream">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/stream" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/c/src">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/c/src" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/c/src/common">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/c/src/common" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/c/src/dns">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/c/src/dns" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/c/src/event">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/c/src/event" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/c/src/fiber">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/c/src/fiber" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/c/src/fiber/boost">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/c/src/fiber/boost" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/c/src/hook">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/c/src/hook" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/cpp/src">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/cpp/src" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/cpp/src/keeper">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/cpp/src/keeper" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_protocol/src">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_protocol/src" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_protocol/src/http">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_protocol/src/http" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_protocol/src/icmp">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_protocol/src/icmp" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_protocol/src/smtp">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_protocol/src/smtp" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: javax.annotation:javax.annotation-api:1.2@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core:2.2.2@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:rules:0.5@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner:0.5@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource:2.2.2@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:exposed-instrumentation-api-publish:0.5@aar" level="project" />
|
||||
</component>
|
||||
</module>
|
@ -1,108 +0,0 @@
|
||||
apply plugin: 'com.android.library'
|
||||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
//classpath 'com.android.tools.build:gradle:3.3.2'
|
||||
//classpath 'com.android.tools.build:gradle:2.3.0'
|
||||
classpath 'com.android.tools.build:gradle:3.3.1'
|
||||
}
|
||||
//implementation {}
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 28
|
||||
buildToolsVersion "28.0.3"
|
||||
repositories {
|
||||
maven { url 'https://repo1.maven.org/maven2' }
|
||||
}
|
||||
defaultConfig {
|
||||
minSdkVersion 14
|
||||
targetSdkVersion 28
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
|
||||
// testIstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
//arguments "-DANDROID_STL=stl_shared"
|
||||
arguments "-DANDROID_STL=gnustl_shared" // for ndk12b, ndk16b
|
||||
arguments "-DACL_DISABLE_HOOK_IO=YES" // for ndk12b
|
||||
|
||||
//arguments "-DANDROID_STL=c++_shared" // for ndk20 or above
|
||||
//arguments "-DHAS_ATOMIC=YES" // for ndk20 or above
|
||||
|
||||
//arguments "-DCMAKE_VERBOSE_MAKEFILE=ON"
|
||||
arguments "-DCMAKE_BUILD_TYPE=RELEASE"
|
||||
arguments "-DCMAKE_CXX_FLAGS_RELEASE=-O3"
|
||||
arguments "-DCMAKE_C_FLAGS_RELEASE=-O3"
|
||||
arguments "-DACL_CLIENT_ONLY=YES"
|
||||
arguments "-DHAS_MBEDTLS=YES"
|
||||
arguments "-DACL_BUILD_SHARED=YES"
|
||||
//cppFlags "-fexceptions"
|
||||
|
||||
//abiFilters 'armeabi', 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'
|
||||
abiFilters 'armeabi', 'arm64-v8a', 'armeabi-v7a', 'x86' // for ndk12b, ndk16b
|
||||
//abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86' // for ndk20 or above
|
||||
}
|
||||
cmake {
|
||||
//arguments '-DANDROID_PLATFORM=android-14','-DANDROID_TOOLCHAIN=clang'
|
||||
targets 'acl_static', 'protocol_static', 'acl_cpp_static', 'fiber_static', 'fiber_cpp_static' // for ndk12b, ndk16b
|
||||
//targets 'acl_static', 'protocol_static', 'acl_cpp_static', 'fiber_static', 'fiber_cpp_static', 'acl', 'protocol', 'acl_cpp', 'fiber', 'fiber_cpp' // for ndk20 or above
|
||||
}
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled true
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
debug {
|
||||
jniDebuggable true
|
||||
debuggable true
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
path '../../CMakeLists.txt'
|
||||
version "3.10.2"
|
||||
}
|
||||
}
|
||||
packagingOptions {
|
||||
exclude 'lib/arm64-v8a/libgnustl_shared.so'
|
||||
exclude 'lib/armeabi-v7a/libgnustl_shared.so'
|
||||
exclude 'lib/armeabi/libgnustl_shared.so'
|
||||
exclude 'lib/x86/libgnustl_shared.so'
|
||||
exclude 'lib/arm64-v8a/libc++_shared.so'
|
||||
exclude 'lib/armeabi-v7a/libc++_shared.so'
|
||||
exclude 'lib/armeabi/libc++_shared.so'
|
||||
exclude 'lib/x86/libc++_shared.so'
|
||||
}
|
||||
productFlavors {
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
//compile fileTree(include: ['*.jar'], dir: 'libs')
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
//androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
|
||||
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
|
||||
exclude group: 'com.android.support', module: 'support-annotations'
|
||||
})
|
||||
//compile 'com.android.support:appcompat-v7:25.3.1'
|
||||
//compile 'com.android.support.constraint:constraint-layout:1.0.2'
|
||||
//testCompile 'junit:junit:4.12'
|
||||
//compile files('libs/junit-4.12.jar')
|
||||
//implementation files('libs/junit-4.12.jar')
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
#Thu Mar 07 11:56:22 CST 2019
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
|
@ -1,160 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn ( ) {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die ( ) {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
esac
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
||||
|
||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
@ -1,90 +0,0 @@
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
@ -1,9 +0,0 @@
|
||||
## This file must *NOT* be checked into Version Control Systems,
|
||||
# as it contains information specific to your local configuration.
|
||||
#
|
||||
# Location of the SDK. This is only used by Gradle.
|
||||
# For customization when using a Version Control System, please read the
|
||||
# header note.
|
||||
#Mon May 20 09:16:13 CST 2019
|
||||
ndk.dir=E:\\tools\\android\\Sdk\\ndk-bundle
|
||||
sdk.dir=E:\\tools\\android\\Sdk
|
@ -1,10 +0,0 @@
|
||||
## This file must *NOT* be checked into Version Control Systems,
|
||||
# as it contains information specific to your local configuration.
|
||||
#
|
||||
# Location of the SDK. This is only used by Gradle.
|
||||
# For customization when using a Version Control System, please read the
|
||||
# header note.
|
||||
#Thu Oct 17 17:02:59 CST 2019
|
||||
#ndk.dir=/Users/shuxinzheng/Library/Android/sdk/ndk-bundle
|
||||
ndk.dir=/Users/shuxinzheng/Library/Android/ndk
|
||||
sdk.dir=/Users/shuxinzheng/Library/Android/sdk
|
@ -1,8 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.acl_dev.acl">
|
||||
|
||||
<application android:allowBackup="true" android:label="@string/app_name"
|
||||
android:supportsRtl="true">
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
@ -1,3 +0,0 @@
|
||||
<resources>
|
||||
<string name="app_name">Acl</string>
|
||||
</resources>
|
@ -1,319 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="acl_ndk16b" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="android-gradle" name="Android-Gradle">
|
||||
<configuration>
|
||||
<option name="GRADLE_PROJECT_PATH" value=":" />
|
||||
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.3.1" />
|
||||
<option name="LAST_KNOWN_AGP_VERSION" value="3.3.1" />
|
||||
</configuration>
|
||||
</facet>
|
||||
<facet type="native-android-gradle" name="Native-Android-Gradle">
|
||||
<configuration>
|
||||
<option name="SELECTED_BUILD_VARIANT" value="debug-x86" />
|
||||
</configuration>
|
||||
</facet>
|
||||
<facet type="android" name="Android">
|
||||
<configuration>
|
||||
<option name="SELECTED_BUILD_VARIANT" value="debug" />
|
||||
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
|
||||
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
|
||||
<afterSyncTasks>
|
||||
<task>generateDebugSources</task>
|
||||
</afterSyncTasks>
|
||||
<option name="ALLOW_USER_CONFIGURATION" value="false" />
|
||||
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
|
||||
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
|
||||
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
|
||||
<option name="PROJECT_TYPE" value="1" />
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
|
||||
<output url="file://$MODULE_DIR$/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.cxx" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.externalNativeBuild" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/aio">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/aio" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/code">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/code" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/db">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/db" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/db/memdb">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/db/memdb" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/db/mysql">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/db/mysql" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/db/null">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/db/null" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/db/zdb">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/db/zdb" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/event">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/event" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/init">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/init" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/ioctl">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/ioctl" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/json">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/json" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/master">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/master" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/master/template">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/master/template" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/msg">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/msg" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/net">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/net" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/net/connect">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/net/connect" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/net/dns">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/net/dns" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/net/listen">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/net/listen" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/private">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/private" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/common">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/common" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/configure">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/configure" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/debug">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/debug" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/filedir">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/filedir" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/iostuff">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/iostuff" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/memory">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/memory" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/string">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/string" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/sys">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/sys" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/sys/unix">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/stdlib/sys/unix" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/thread">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/thread" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/unit_test">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/unit_test" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl/src/xml">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl/src/xml" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/beanstalk">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/beanstalk" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/connpool">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/connpool" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/db">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/db" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/disque">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/disque" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/event">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/event" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/hsocket">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/hsocket" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/http">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/http" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/ipc">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/ipc" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/master">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/master" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/memcache">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/memcache" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/mime">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/mime" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/mime/internal">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/mime/internal" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/net">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/net" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/queue">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/queue" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/redis">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/redis" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/serialize">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/serialize" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/session">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/session" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/smtp">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/smtp" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/stdlib">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/stdlib" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_acl_cpp/src/stream">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_acl_cpp/src/stream" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/c/src">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/c/src" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/c/src/common">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/c/src/common" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/c/src/dns">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/c/src/dns" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/c/src/event">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/c/src/event" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/c/src/fiber">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/c/src/fiber" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/c/src/fiber/boost">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/c/src/fiber/boost" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/c/src/hook">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/c/src/hook" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/cpp/src">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/cpp/src" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_fiber/cpp/src/keeper">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_fiber/cpp/src/keeper" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_protocol/src">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_protocol/src" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_protocol/src/http">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_protocol/src/http" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_protocol/src/icmp">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_protocol/src/icmp" isTestSource="false" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/../../lib_protocol/src/smtp">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../lib_protocol/src/smtp" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Android API 28 Platform" jdkType="Android SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: javax.annotation:javax.annotation-api:1.2@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-core:2.2.2@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:rules:0.5@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner:0.5@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test.espresso:espresso-idling-resource:2.2.2@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:exposed-instrumentation-api-publish:0.5@aar" level="project" />
|
||||
</component>
|
||||
</module>
|
@ -1,108 +0,0 @@
|
||||
apply plugin: 'com.android.library'
|
||||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
//classpath 'com.android.tools.build:gradle:3.3.2'
|
||||
//classpath 'com.android.tools.build:gradle:2.3.0'
|
||||
classpath 'com.android.tools.build:gradle:3.3.1'
|
||||
}
|
||||
//implementation {}
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 28
|
||||
buildToolsVersion "28.0.3"
|
||||
repositories {
|
||||
maven { url 'https://repo1.maven.org/maven2' }
|
||||
}
|
||||
defaultConfig {
|
||||
minSdkVersion 14
|
||||
targetSdkVersion 28
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
|
||||
// testIstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
//arguments "-DANDROID_STL=stl_shared"
|
||||
arguments "-DANDROID_STL=gnustl_shared" // for ndk12b, ndk16b
|
||||
//arguments "-DACL_DISABLE_HOOK_IO=YES" // for ndk12b
|
||||
|
||||
//arguments "-DANDROID_STL=c++_shared" // for ndk20 or above
|
||||
//arguments "-DHAS_ATOMIC=YES" // for ndk20 or above
|
||||
|
||||
//arguments "-DCMAKE_VERBOSE_MAKEFILE=ON"
|
||||
arguments "-DCMAKE_BUILD_TYPE=RELEASE"
|
||||
arguments "-DCMAKE_CXX_FLAGS_RELEASE=-O3"
|
||||
arguments "-DCMAKE_C_FLAGS_RELEASE=-O3"
|
||||
arguments "-DACL_CLIENT_ONLY=YES"
|
||||
arguments "-DHAS_MBEDTLS=YES"
|
||||
arguments "-DACL_BUILD_SHARED=YES"
|
||||
//cppFlags "-fexceptions"
|
||||
|
||||
//abiFilters 'armeabi', 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'
|
||||
abiFilters 'armeabi', 'arm64-v8a', 'armeabi-v7a', 'x86' // for ndk12b, ndk16b
|
||||
//abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86' // for ndk20 or above
|
||||
}
|
||||
cmake {
|
||||
//arguments '-DANDROID_PLATFORM=android-14','-DANDROID_TOOLCHAIN=clang'
|
||||
targets 'acl_static', 'protocol_static', 'acl_cpp_static', 'fiber_static', 'fiber_cpp_static' // for ndk12b, ndk16b
|
||||
//targets 'acl_static', 'protocol_static', 'acl_cpp_static', 'fiber_static', 'fiber_cpp_static', 'acl', 'protocol', 'acl_cpp', 'fiber', 'fiber_cpp' // for ndk20 or above
|
||||
}
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled true
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
debug {
|
||||
jniDebuggable true
|
||||
debuggable true
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
path '../../CMakeLists.txt'
|
||||
version "3.10.2"
|
||||
}
|
||||
}
|
||||
packagingOptions {
|
||||
exclude 'lib/arm64-v8a/libgnustl_shared.so'
|
||||
exclude 'lib/armeabi-v7a/libgnustl_shared.so'
|
||||
exclude 'lib/armeabi/libgnustl_shared.so'
|
||||
exclude 'lib/x86/libgnustl_shared.so'
|
||||
exclude 'lib/arm64-v8a/libc++_shared.so'
|
||||
exclude 'lib/armeabi-v7a/libc++_shared.so'
|
||||
exclude 'lib/armeabi/libc++_shared.so'
|
||||
exclude 'lib/x86/libc++_shared.so'
|
||||
}
|
||||
productFlavors {
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
//compile fileTree(include: ['*.jar'], dir: 'libs')
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
//androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
|
||||
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
|
||||
exclude group: 'com.android.support', module: 'support-annotations'
|
||||
})
|
||||
//compile 'com.android.support:appcompat-v7:25.3.1'
|
||||
//compile 'com.android.support.constraint:constraint-layout:1.0.2'
|
||||
//testCompile 'junit:junit:4.12'
|
||||
//compile files('libs/junit-4.12.jar')
|
||||
//implementation files('libs/junit-4.12.jar')
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
#Thu Mar 07 11:56:22 CST 2019
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
|
@ -1,160 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn ( ) {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die ( ) {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
esac
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
||||
|
||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
@ -1,90 +0,0 @@
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
@ -1,9 +0,0 @@
|
||||
## This file must *NOT* be checked into Version Control Systems,
|
||||
# as it contains information specific to your local configuration.
|
||||
#
|
||||
# Location of the SDK. This is only used by Gradle.
|
||||
# For customization when using a Version Control System, please read the
|
||||
# header note.
|
||||
#Mon May 20 09:16:13 CST 2019
|
||||
ndk.dir=E:\\tools\\android\\Sdk\\ndk-bundle
|
||||
sdk.dir=E:\\tools\\android\\Sdk
|
@ -1,10 +0,0 @@
|
||||
## This file must *NOT* be checked into Version Control Systems,
|
||||
# as it contains information specific to your local configuration.
|
||||
#
|
||||
# Location of the SDK. This is only used by Gradle.
|
||||
# For customization when using a Version Control System, please read the
|
||||
# header note.
|
||||
#Thu Oct 17 17:02:59 CST 2019
|
||||
#ndk.dir=/Users/shuxinzheng/Library/Android/sdk/ndk-bundle
|
||||
ndk.dir=/Users/shuxinzheng/Library/Android/ndk
|
||||
sdk.dir=/Users/shuxinzheng/Library/Android/sdk
|
@ -1,8 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.acl_dev.acl">
|
||||
|
||||
<application android:allowBackup="true" android:label="@string/app_name"
|
||||
android:supportsRtl="true">
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
@ -1,3 +0,0 @@
|
||||
<resources>
|
||||
<string name="app_name">Acl</string>
|
||||
</resources>
|
@ -1 +0,0 @@
|
||||
/build
|
@ -1,145 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id=":HttpFiber" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="android-gradle" name="Android-Gradle">
|
||||
<configuration>
|
||||
<option name="GRADLE_PROJECT_PATH" value=":HttpFiber" />
|
||||
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.5.0" />
|
||||
<option name="LAST_KNOWN_AGP_VERSION" value="3.5.0" />
|
||||
</configuration>
|
||||
</facet>
|
||||
<facet type="native-android-gradle" name="Native-Android-Gradle">
|
||||
<configuration>
|
||||
<option name="SELECTED_BUILD_VARIANT" value="debug-x86" />
|
||||
</configuration>
|
||||
</facet>
|
||||
<facet type="android" name="Android">
|
||||
<configuration>
|
||||
<option name="SELECTED_BUILD_VARIANT" value="debug" />
|
||||
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
|
||||
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
|
||||
<afterSyncTasks>
|
||||
<task>generateDebugSources</task>
|
||||
</afterSyncTasks>
|
||||
<option name="ALLOW_USER_CONFIGURATION" value="false" />
|
||||
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
|
||||
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
|
||||
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/build/generated/res/resValues/debug" />
|
||||
<option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="" />
|
||||
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
|
||||
<output url="file://$MODULE_DIR$/build/intermediates/javac/debug/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/classes" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/cpp" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugAndroidTest/out" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugUnitTest/out" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.cxx" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.externalNativeBuild" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: net.sf.kxml:kxml2:2.3.0@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.squareup:javawriter:2.1.1@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: androidx.test.espresso:espresso-core:3.2.0@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: androidx.test:runner:1.2.0@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: androidx.test:monitor:1.2.0@aar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: androidx.test.espresso:espresso-idling-resource:3.2.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.collection:collection:1.1.0@jar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-common:2.1.0@jar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.arch.core:core-common:2.1.0@jar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.annotation:annotation:1.1.0@jar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.constraintlayout:constraintlayout-solver:1.1.3@jar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.appcompat:appcompat:1.1.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.fragment:fragment:1.1.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.appcompat:appcompat-resources:1.1.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.drawerlayout:drawerlayout:1.0.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.viewpager:viewpager:1.0.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.loader:loader:1.0.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.activity:activity:1.0.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable-animated:1.1.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable:1.1.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.customview:customview:1.0.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.core:core:1.1.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.cursoradapter:cursoradapter:1.0.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.versionedparcelable:versionedparcelable:1.1.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-viewmodel:2.1.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-runtime:2.1.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.savedstate:savedstate:1.0.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-livedata:2.0.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-livedata-core:2.0.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.interpolator:interpolator:1.0.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.arch.core:core-runtime:2.0.0@aar" level="project" />
|
||||
<orderEntry type="library" name="Gradle: androidx.constraintlayout:constraintlayout:1.1.3@aar" level="project" />
|
||||
</component>
|
||||
</module>
|
@ -1,63 +0,0 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
buildToolsVersion "29.0.2"
|
||||
defaultConfig {
|
||||
applicationId "com.example.HttpFiber"
|
||||
minSdkVersion 15
|
||||
targetSdkVersion 29
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
cppFlags ""
|
||||
arguments "-DANDROID_STL=c++_shared"
|
||||
//arguments "-DANDROID_STL=gnustl_shared"
|
||||
arguments "-DCMAKE_BUILD_TYPE=RELEASE"
|
||||
//arguments "-DCMAKE_BUILD_TYPE=DEBUG"
|
||||
arguments "-DCMAKE_CXX_FLAGS_RELEASE=-O3"
|
||||
arguments "-DCMAKE_VERBOSE_MAKEFILE=ON"
|
||||
//abiFilters 'armeabi', 'arm64-v8a', 'armeabi-v7a', 'x86'//, 'x86_64'
|
||||
abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86' //, 'x86_64'
|
||||
}
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
path "src/main/cpp/CMakeLists.txt"
|
||||
version "3.10.2"
|
||||
}
|
||||
}
|
||||
|
||||
packagingOptions {
|
||||
doNotStrip "*/armeabi/*.so"
|
||||
doNotStrip "*/arm64-v8a/*.so"
|
||||
doNotStrip "*/armeabi-v7a/*.so"
|
||||
doNotStrip "*/x86/*.so"
|
||||
doNotStrip "*/x86_64/*.so"
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
flatDir {
|
||||
dirs 'libs'
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
//implementation(name:'acl-debug', ext:'aar')
|
||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'androidx.test:runner:1.2.0'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
@ -1,27 +0,0 @@
|
||||
package com.example.http;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.test.platform.app.InstrumentationRegistry;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Instrumented test, which will execute on an Android device.
|
||||
*
|
||||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class ExampleInstrumentedTest {
|
||||
@Test
|
||||
public void useAppContext() {
|
||||
// Context of the app under test.
|
||||
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
|
||||
|
||||
assertEquals("com.example.http", appContext.getPackageName());
|
||||
}
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.HttpFiber">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity android:name="com.example.HttpFiber.MainActivity">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
@ -1,133 +0,0 @@
|
||||
# For more information about using CMake with Android Studio, read the
|
||||
# documentation: https://d.android.com/studio/projects/add-native-code.html
|
||||
|
||||
# Sets the minimum version of CMake required to build the native library.
|
||||
|
||||
cmake_minimum_required(VERSION 3.4.1)
|
||||
|
||||
if (${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
message(FATAL_ERROR "Please into another dir to build!")
|
||||
endif()
|
||||
|
||||
add_definitions(
|
||||
"-W"
|
||||
"-Wall"
|
||||
"-Werror"
|
||||
"-Wshadow"
|
||||
"-Wformat"
|
||||
"-Wpointer-arith"
|
||||
"-D_REENTRANT"
|
||||
"-Wno-long-long"
|
||||
"-Wuninitialized"
|
||||
"-D_POSIX_PTHREAD_SEMANTICS"
|
||||
"-fexceptions"
|
||||
"-Wno-unused-parameter"
|
||||
"-fPIC"
|
||||
)
|
||||
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "")
|
||||
set(CMAKE_BUILD_TYPE "DEBUG")
|
||||
endif()
|
||||
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "RELEASE")
|
||||
set(build_rpath "release")
|
||||
add_definitions("-g")
|
||||
add_definitions("-DACL_CPP_LOG_SKIP_FILE")
|
||||
add_definitions("-Os")
|
||||
# add_definitions("-O2")
|
||||
elseif (CMAKE_BUILD_TYPE STREQUAL "DEBUG")
|
||||
set(build_rpath "debug")
|
||||
add_definitions("-g")
|
||||
add_definitions("-Os")
|
||||
else()
|
||||
message(FATAL_ERROR "debug")
|
||||
add_definitions("-g")
|
||||
set(build_rpath "debug")
|
||||
endif()
|
||||
|
||||
#string(TOUPPER ${CMAKE_SYSTEM_NAME} CMAKE_SYSTEM_NAME)
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Android")
|
||||
add_definitions("-DANDROID -Wno-unused-command-line-argument")
|
||||
list(APPEND ANDROID_LINKER_FLAGS -Qunused-arguments)
|
||||
string( APPEND CMAKE_CXX_FLAGS " -Qunused-arguments")
|
||||
|
||||
# xxx: don't set -flto for shared mode in cflags
|
||||
#add_definitions("-flto")
|
||||
|
||||
# xxx: don't set any CMAKE_SHARED_LINKER_FLAGS on NDK with gnustl_shared
|
||||
if (NOT ANDROID_STL MATCHES "gnustl_shared")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "-fvisibility=hidden")
|
||||
endif()
|
||||
add_definitions("-fvisibility=hidden")
|
||||
add_definitions("-fvisibility-inlines-hidden")
|
||||
add_definitions("-fdata-sections -ffunction-sections")
|
||||
elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
||||
add_definitions(
|
||||
"-Wno-invalid-source-encoding"
|
||||
"-Wno-unused-private-field"
|
||||
"-Wno-unused-const-variable"
|
||||
)
|
||||
else()
|
||||
message(FATAL_ERROR "unknown CMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}")
|
||||
endif()
|
||||
|
||||
##############################################################################
|
||||
|
||||
set(acl_home ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../..)
|
||||
set(acl_c_path ${acl_home}/lib_acl)
|
||||
set(acl_c_include ${acl_c_path}/include)
|
||||
set(acl_cpp_path ${acl_home}/lib_acl_cpp)
|
||||
set(acl_cpp_include ${acl_cpp_path}/include)
|
||||
set(fiber_path ${acl_home}/lib_fiber)
|
||||
set(fiber_c_include ${fiber_path}/c/include)
|
||||
set(fiber_cpp_include ${fiber_path}/cpp/include)
|
||||
|
||||
include_directories(
|
||||
"./"
|
||||
${acl_c_include}
|
||||
${acl_cpp_include}
|
||||
${fiber_c_include}
|
||||
${fiber_cpp_include}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
set(src ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
set(sources
|
||||
${src}
|
||||
)
|
||||
|
||||
foreach(iter ${sources})
|
||||
aux_source_directory(${iter} lib_src)
|
||||
endforeach()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Android")
|
||||
if (NOT ANDROID_STL MATCHES "gnustl_shared")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "-shared -O3 -flto")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_library( # Sets the name of the path variable.
|
||||
log-lib
|
||||
|
||||
# Specifies the name of the NDK library that
|
||||
# you want CMake to locate.
|
||||
log)
|
||||
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Android")
|
||||
set(lib_acl_path ${acl_home}/android/lib/${ANDROID_ABI})
|
||||
set(libacl ${lib_acl_path}/libacl.a)
|
||||
set(libacl_cpp ${lib_acl_path}/libacl_cpp.a)
|
||||
set(libprotocol ${lib_acl_path}/libprotocol.a)
|
||||
set(libfiber ${lib_acl_path}/libfiber.a)
|
||||
set(libfiber_cpp ${lib_acl_path}/libfiber_cpp.a)
|
||||
|
||||
set(lib_all ${libfiber_cpp} ${libacl_cpp} ${libprotocol} ${libacl} ${libfiber} -lz)
|
||||
# set(lib_all ${libacl_cpp} ${libprotocol} ${libacl} -lz)
|
||||
endif()
|
||||
|
||||
add_library(native-lib SHARED ${lib_src})
|
||||
target_link_libraries(native-lib ${lib_all} ${log-lib})
|
||||
|
||||
###############################################################################
|
||||
|
@ -1,118 +0,0 @@
|
||||
//
|
||||
// Created by shuxin zheng on 2020/10/4.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "log.h"
|
||||
#include "fiber_waiter.h"
|
||||
#include "jobject_set.h"
|
||||
|
||||
static JavaVM* g_jvm = NULL;
|
||||
|
||||
static JNIEnv* get_env(void) {
|
||||
JNIEnv* env;
|
||||
int status = g_jvm->GetEnv((void**) &env, JNI_VERSION_1_6);
|
||||
if (status == JNI_EDETACHED || env == NULL) {
|
||||
log_info("get_env(%d): status=%d, %d, env=%p",
|
||||
__LINE__, status, JNI_EDETACHED, env);
|
||||
|
||||
log_info("try call AttachCurrentThread to get env, jvm=%p", g_jvm);
|
||||
//status = g_jvm->AttachCurrentThreadAsDaemon(&env, NULL);
|
||||
status = g_jvm->AttachCurrentThread(&env, NULL);
|
||||
if (status != JNI_OK || env == NULL) {
|
||||
log_error("get_env: AttachCurrentThread failed");
|
||||
return NULL;
|
||||
}
|
||||
log_info("get_env(%d): status=%d, env=%p", __LINE__, status, env);
|
||||
}
|
||||
|
||||
if (env->ExceptionOccurred()) {
|
||||
log_error("%d: some exception happened!", __LINE__);
|
||||
env->ExceptionDescribe();
|
||||
env->ExceptionClear();
|
||||
}
|
||||
|
||||
log_info("get_env: get env=%p ok, status=%d", env, status);
|
||||
return env;
|
||||
}
|
||||
|
||||
static void fiber_thread_run(fiber_waiter* waiter) {
|
||||
waiter->start(1024000);
|
||||
JNIEnv* env = get_env();
|
||||
log_info(">>>get env=%p<<<", env);
|
||||
acl::fiber::schedule();
|
||||
}
|
||||
|
||||
extern "C" JNIEXPORT jlong JNICALL
|
||||
Java_com_example_HttpFiber_FiberThread_FiberSchedule(
|
||||
JNIEnv* env,
|
||||
jobject me)
|
||||
{
|
||||
env->GetJavaVM(&g_jvm);
|
||||
fiber_waiter* waiter = new fiber_waiter;
|
||||
std::thread* thread = new std::thread(fiber_thread_run, waiter);
|
||||
thread->detach();
|
||||
return (jlong) waiter;
|
||||
}
|
||||
|
||||
class myfiber : public acl::fiber {
|
||||
public:
|
||||
myfiber(jobject o) : o_(o) {
|
||||
}
|
||||
|
||||
private:
|
||||
~myfiber(void) {
|
||||
JNIEnv* env = get_env();
|
||||
if (env) {
|
||||
env->DeleteGlobalRef(o_);
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
void run(void) {
|
||||
log_info(">>>fiber started<<<");
|
||||
JNIEnv* env = get_env();
|
||||
if (env == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
log_info(">>>run: env=%p, o=%p<<<", env, o_);
|
||||
//jclass clz = env->GetObjectClass(o_);
|
||||
//log_info(">>>o=%p, clz=%p<<", o_, clz);
|
||||
|
||||
jobject fb = env->NewGlobalRef(o_);
|
||||
jobject_set oper(env, fb);
|
||||
oper.call("onRun");
|
||||
//delete this;
|
||||
}
|
||||
|
||||
private:
|
||||
jobject o_;
|
||||
};
|
||||
|
||||
static void thread_call(myfiber* fb) {
|
||||
log_info("-----------begin-----------------");
|
||||
fb->run();
|
||||
log_info("-----------end-------------------");
|
||||
}
|
||||
|
||||
extern "C" JNIEXPORT void JNICALL
|
||||
Java_com_example_HttpFiber_FiberThread_FiberStart(
|
||||
JNIEnv *env,
|
||||
jobject thiz,
|
||||
jlong owaiter,
|
||||
jobject ofiber)
|
||||
{
|
||||
jobject fb = env->NewGlobalRef(ofiber);
|
||||
|
||||
fiber_waiter* waiter = (fiber_waiter*) owaiter;
|
||||
myfiber* fiber = new myfiber(fb);
|
||||
log_info("start one fiber");
|
||||
|
||||
if (0) {
|
||||
std::thread thread(thread_call, fiber);
|
||||
thread.detach();
|
||||
} else {
|
||||
waiter->push(fiber);
|
||||
}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
//
|
||||
// Created by shuxin zheng on 2020/10/4.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "log.h"
|
||||
#include "fiber_waiter.h"
|
||||
|
||||
fiber_waiter::fiber_waiter(void) {
|
||||
box_ = new acl::fiber_tbox<acl::fiber>;
|
||||
}
|
||||
|
||||
fiber_waiter::~fiber_waiter(void) {
|
||||
delete box_;
|
||||
}
|
||||
|
||||
void fiber_waiter::push(acl::fiber* fiber) {
|
||||
box_->push(fiber);
|
||||
}
|
||||
|
||||
void fiber_waiter::run(void) {
|
||||
log_info(">>>waiter fiber started!");
|
||||
|
||||
// can't call any jni function in fiber.
|
||||
// test();
|
||||
|
||||
while (true) {
|
||||
// blocking wait for one task;
|
||||
acl::fiber* fiber = box_->pop();
|
||||
fiber->start(12800000);
|
||||
}
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
//
|
||||
// Created by shuxin zheng on 2020/10/4.
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
class fiber_waiter : public acl::fiber {
|
||||
public:
|
||||
fiber_waiter(void);
|
||||
~fiber_waiter(void);
|
||||
|
||||
// add the fiber queue
|
||||
void push(acl::fiber* fiber);
|
||||
|
||||
protected:
|
||||
// @override
|
||||
void run(void);
|
||||
|
||||
private:
|
||||
acl::fiber_tbox<acl::fiber>* box_;
|
||||
};
|
@ -1,107 +0,0 @@
|
||||
//
|
||||
// Created by shuxin zheng on 2020/10/4.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "log.h"
|
||||
#include "http_get.h"
|
||||
|
||||
http_get::http_get(const char* host, int port, const char* url)
|
||||
: host_(host)
|
||||
, port_(port)
|
||||
, url_(url)
|
||||
{}
|
||||
|
||||
bool http_get::get(const char* addr, const char* host,
|
||||
const char *url, acl::string &out) {
|
||||
acl::http_request request(addr);
|
||||
acl::http_header& header = request.request_header();
|
||||
|
||||
header.set_url(url)
|
||||
.set_host(host)
|
||||
.accept_gzip(true)
|
||||
.set_keep_alive(false);
|
||||
|
||||
log_info("http_get(%d): addr=%s, host=%s, url=%s", __LINE__, addr, host, url);
|
||||
|
||||
if (!request.request(NULL, 0)) {
|
||||
log_error("send http request error=%s", acl::last_serror());
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!request.get_body(out)) {
|
||||
log_error("get body error: %s", acl::last_serror());
|
||||
return false;
|
||||
}
|
||||
|
||||
acl::http_client* conn = request.get_client();
|
||||
acl::string hdr_res;
|
||||
conn->sprint_header(hdr_res, "response header");
|
||||
log_info("%s", hdr_res.c_str());
|
||||
return true;
|
||||
}
|
||||
|
||||
void http_get::run(void) {
|
||||
std::vector<acl::string> ips;
|
||||
|
||||
const char* host = host_.c_str();
|
||||
int err = 0;
|
||||
go_wait_thread[&] {
|
||||
log_info("begin resolve host=%s", host);
|
||||
// resolve domain in a thread to avoid blocking the fiber thread scheule.
|
||||
#if 1
|
||||
struct hostent* ent = gethostbyname(host);
|
||||
if (ent == NULL) {
|
||||
err = h_errno;
|
||||
log_error("can't get addr for host=%s, %s", host, hstrerror(h_errno));
|
||||
return;
|
||||
}
|
||||
char ip[64];
|
||||
for (char** pptr = ent->h_addr_list; *pptr != NULL; pptr++) {
|
||||
if (inet_ntop(ent->h_addrtype, *pptr, ip, sizeof(ip))) {
|
||||
ips.push_back(ip);
|
||||
log_info("http_get::run: one ip: %s", ip);
|
||||
}
|
||||
}
|
||||
#else
|
||||
ACL_DNS_DB* db = acl_gethostbyname(host, &errnum);
|
||||
if (db == NULL) {
|
||||
logger_error("gethostbyname error=%s, domain=%s, herr=%d",
|
||||
acl_netdb_strerror(errnum), host, errnum);
|
||||
return;
|
||||
}
|
||||
ACL_ITER iter;
|
||||
acl_foreach(iter, db) {
|
||||
const ACL_HOSTNAME* hn = (const ACL_HOSTNAME*) iter.data;
|
||||
if (hn->saddr.sa.sa_family == AF_INET) {
|
||||
ips.push_back(hn->ip);
|
||||
} else if (hn->saddr.sa.sa_family == AF_INET6) {
|
||||
ips.push_back(hn->ip);
|
||||
} else {
|
||||
log_info("domain=%s, ipv=%s, type=%d", host, hn->ip,
|
||||
hn->saddr.sa.sa_family);
|
||||
}
|
||||
}
|
||||
acl_netdb_free(db);
|
||||
#endif
|
||||
};
|
||||
|
||||
if (ips.empty()) {
|
||||
log_error("resolve domain(%s) failed", host);
|
||||
acl::string buf;
|
||||
buf.format("can't get addr=%s, error=%s", host, hstrerror(err));
|
||||
return;
|
||||
}
|
||||
|
||||
for (std::vector<acl::string>::const_iterator cit = ips.begin();
|
||||
cit != ips.end(); ++cit) {
|
||||
acl::string addr;
|
||||
addr.format("%s:%d", (*cit).c_str(), port_);
|
||||
acl::string buf;
|
||||
if (get(addr, host, url_.c_str(), buf)) {
|
||||
break;
|
||||
} else {
|
||||
buf.clear();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
//
|
||||
// Created by shuxin zheng on 2020/10/4.
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
class http_get {
|
||||
public:
|
||||
http_get( const char* host, int port, const char* url);
|
||||
~http_get(void) {}
|
||||
|
||||
void run(void);
|
||||
|
||||
private:
|
||||
acl::string host_;
|
||||
int port_;
|
||||
acl::string url_;
|
||||
|
||||
bool get(const char* addr, const char* host,
|
||||
const char* url, acl::string& out);
|
||||
};
|
||||
|
@ -1,205 +0,0 @@
|
||||
#include "stdafx.h"
|
||||
#include "log.h"
|
||||
#include "jobject_set.h"
|
||||
#include "util.h"
|
||||
|
||||
jobject_set::jobject_set(JNIEnv *env, jobject obj)
|
||||
: env_(env)
|
||||
, obj_(obj)
|
||||
{
|
||||
clz_ = env_->GetObjectClass(obj_);
|
||||
if (clz_ == NULL) {
|
||||
log_error("GetObjectClass error");
|
||||
abort();
|
||||
}
|
||||
|
||||
#if 1
|
||||
jmethodID foo = env_->GetMethodID(clz_, "<init>", "()V");
|
||||
jobject o = env_->NewObject(clz_, foo, "()V");
|
||||
log_info(">>>new obj=%p, clz=%p, env=%p<<<", o, clz_, env_);
|
||||
|
||||
if (env_->ExceptionOccurred()) {
|
||||
log_error("%d: some exception happened!", __LINE__);
|
||||
env_->ExceptionDescribe();
|
||||
env_->ExceptionClear();
|
||||
//abort();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool jobject_set::set(const char *name, int in)
|
||||
{
|
||||
jfieldID fID = env_->GetFieldID(clz_, name, "I");
|
||||
if (fID == NULL) {
|
||||
log_error("%s not found", name);
|
||||
return false;
|
||||
}
|
||||
env_->SetIntField(obj_, fID, (jint) in);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool jobject_set::set(const char *name, long long int in)
|
||||
{
|
||||
jfieldID fID = env_->GetFieldID(clz_, name, "I");
|
||||
if (fID == NULL) {
|
||||
log_error("%s not found", name);
|
||||
return false;
|
||||
}
|
||||
env_->SetIntField(obj_, fID, (jlong) in);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool jobject_set::set(const char *name, const std::string &in)
|
||||
{
|
||||
jfieldID fID = env_->GetFieldID(clz_, name, "Ljava/lang/String;");
|
||||
if (fID == NULL) {
|
||||
log_error("%s not found", name);
|
||||
return false;
|
||||
}
|
||||
jstring str = util::String2JString(env_, in.c_str());
|
||||
if (str == NULL) {
|
||||
log_error("GetString error, field=%s", name);
|
||||
return false;
|
||||
}
|
||||
|
||||
env_->SetObjectField(obj_, fID, str);
|
||||
env_->DeleteLocalRef(str);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool jobject_set::set(const char *name, const std::vector<const char*>& in)
|
||||
{
|
||||
jfieldID fID = env_->GetFieldID(clz_, name, "[Ljava/lang/String;");
|
||||
if (fID == NULL) {
|
||||
log_error("%s not found", name);
|
||||
return false;
|
||||
}
|
||||
jclass clazz = env_->FindClass("java/lang/String");
|
||||
if (clazz == NULL) {
|
||||
log_error("not found java/lang/String");
|
||||
return false;
|
||||
}
|
||||
|
||||
jobjectArray array = env_->NewObjectArray(in.size(), clazz, NULL);
|
||||
env_->DeleteLocalRef(clazz);
|
||||
|
||||
int i = 0;
|
||||
for (std::vector<const char*>::const_iterator cit = in.begin();
|
||||
cit != in.end(); ++cit, ++i) {
|
||||
jstring js = util::String2JString(env_, (*cit));
|
||||
env_->SetObjectArrayElement(array, i, js);
|
||||
env_->DeleteLocalRef(js);
|
||||
}
|
||||
env_->SetObjectField(obj_, fID, array);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool jobject_set::set(const char *name, const std::vector<std::string> &in)
|
||||
{
|
||||
jfieldID fID = env_->GetFieldID(clz_, name, "[Ljava/lang/String;");
|
||||
if (fID == NULL) {
|
||||
log_error("%s not found", name);
|
||||
return false;
|
||||
}
|
||||
jclass clazz = env_->FindClass("java/lang/String");
|
||||
if (clazz == NULL) {
|
||||
log_error("not found java/lang/String");
|
||||
return false;
|
||||
}
|
||||
|
||||
jobjectArray array = env_->NewObjectArray(in.size(), clazz, NULL);
|
||||
env_->DeleteLocalRef(clazz);
|
||||
|
||||
int i = 0;
|
||||
for (std::vector<std::string>::const_iterator cit = in.begin();
|
||||
cit != in.end(); ++cit, ++i) {
|
||||
jstring js = util::String2JString(env_, (*cit).c_str());
|
||||
env_->SetObjectArrayElement(array, i, js);
|
||||
env_->DeleteLocalRef(js);
|
||||
}
|
||||
env_->SetObjectField(obj_, fID, array);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool jobject_set::call(const char* method)
|
||||
{
|
||||
jmethodID mID = env_->GetMethodID(clz_, method, "()V");
|
||||
//jmethodID mID = env_->GetStaticMethodID(clz_, method, "()V");
|
||||
if (!mID) {
|
||||
log_error("method %s not found", method);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (env_->ExceptionOccurred()) {
|
||||
log_error("%d: some exception happened!", __LINE__);
|
||||
env_->ExceptionDescribe();
|
||||
env_->ExceptionClear();
|
||||
}
|
||||
|
||||
log_info(">>>call method=%s, env=%p, clz=%p, obj=%p, mid=%p<<<", method, &env_, clz_, obj_, mID);
|
||||
env_->CallVoidMethod(obj_, mID);
|
||||
//env_->CallStaticVoidMethod(clz_, mID);
|
||||
log_info(">>>call finished<<<");
|
||||
|
||||
if (env_->ExceptionOccurred()) {
|
||||
log_error("%d: some exception happened!", __LINE__);
|
||||
env_->ExceptionDescribe();
|
||||
env_->ExceptionClear();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool jobject_set::call(const char *method, const std::vector<const char*>& in)
|
||||
{
|
||||
jmethodID mID = env_->GetMethodID(clz_, method, "([Ljava/lang/String;)V");
|
||||
if (!mID) {
|
||||
log_error("method %s not found", method);
|
||||
return false;
|
||||
}
|
||||
jclass clazz = env_->FindClass("java/lang/String");
|
||||
if (clazz == NULL) {
|
||||
log_error("not found java/lang/String");
|
||||
return false;
|
||||
}
|
||||
|
||||
jobjectArray array = env_->NewObjectArray(in.size(), clazz, NULL);
|
||||
env_->DeleteLocalRef(clazz);
|
||||
|
||||
int i = 0;
|
||||
for (std::vector<const char*>::const_iterator cit = in.begin();
|
||||
cit != in.end(); ++cit, ++i) {
|
||||
jstring js = util::String2JString(env_, (*cit));
|
||||
env_->SetObjectArrayElement(array, i, js);
|
||||
env_->DeleteLocalRef(js);
|
||||
}
|
||||
env_->CallVoidMethod(obj_, mID, array);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool jobject_set::call(const char *method, const std::vector<std::string> &in)
|
||||
{
|
||||
jmethodID mID = env_->GetMethodID(clz_, method, "([Ljava/lang/String;)V");
|
||||
if (!mID) {
|
||||
log_error("method %s not found", method);
|
||||
return false;
|
||||
}
|
||||
jclass clazz = env_->FindClass("java/lang/String");
|
||||
if (clazz == NULL) {
|
||||
log_error("not found java/lang/String");
|
||||
return false;
|
||||
}
|
||||
|
||||
jobjectArray array = env_->NewObjectArray(in.size(), clazz, NULL);
|
||||
env_->DeleteLocalRef(clazz);
|
||||
|
||||
int i = 0;
|
||||
for (std::vector<std::string>::const_iterator cit = in.begin();
|
||||
cit != in.end(); ++cit, ++i) {
|
||||
jstring js = util::String2JString(env_, (*cit).c_str());
|
||||
env_->SetObjectArrayElement(array, i, js);
|
||||
env_->DeleteLocalRef(js);
|
||||
}
|
||||
env_->CallVoidMethod(obj_, mID, array);
|
||||
return true;
|
||||
}
|
||||
|
@ -1,30 +0,0 @@
|
||||
//
|
||||
// Created by zhengshuxin on 2019/9/10.
|
||||
//
|
||||
|
||||
#pragma once
|
||||
#include <jni.h>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class jobject_set {
|
||||
public:
|
||||
jobject_set(JNIEnv* env, jobject obj);
|
||||
~jobject_set() {}
|
||||
|
||||
bool set(const char* name, int in);
|
||||
bool set(const char* name, long long int in);
|
||||
bool set(const char* name, const std::string& in);
|
||||
bool set(const char* name, const std::vector<const char*>& in);
|
||||
bool set(const char* name, const std::vector<std::string>& in);
|
||||
|
||||
bool call(const char* method);
|
||||
bool call(const char* method, const std::vector<const char*>& in);
|
||||
bool call(const char* method, const std::vector<std::string>& in);
|
||||
|
||||
private:
|
||||
JNIEnv* env_;
|
||||
jobject obj_;
|
||||
jclass clz_;
|
||||
};
|
||||
|
@ -1,52 +0,0 @@
|
||||
#include "stdafx.h"
|
||||
#include "log.h"
|
||||
|
||||
void log_info(const char* fmt, ...) {
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
acl::string buf;
|
||||
buf.format("thread-%lu: ", acl::thread::self());
|
||||
buf.vformat_append(fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
__android_log_write(ANDROID_LOG_INFO, "info", buf.c_str());
|
||||
}
|
||||
|
||||
void log_error(const char* fmt, ...) {
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
acl::string buf;
|
||||
buf.format("thread-%lu: ", acl::thread::self());
|
||||
buf.vformat_append(fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
__android_log_write(ANDROID_LOG_ERROR, "error", buf.c_str());
|
||||
}
|
||||
|
||||
typedef void (*write_fn)(void*, const char*, va_list);
|
||||
|
||||
static int open_callback(const char*, void*) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void write_callback(void*, const char* fmt, va_list ap) {
|
||||
char tag[256];
|
||||
snprintf(tag, sizeof(tag), "debug");
|
||||
|
||||
char buf[512];
|
||||
vsnprintf(buf, sizeof(buf), fmt, ap);
|
||||
|
||||
__android_log_print(ANDROID_LOG_INFO, tag, "%s", buf);
|
||||
}
|
||||
|
||||
static void fiber_logger_callback(void *ctx, const char *fmt, va_list ap) {
|
||||
__android_log_vprint(ANDROID_LOG_ERROR, "fiber", fmt, ap);
|
||||
}
|
||||
|
||||
void log_open(void) {
|
||||
acl_msg_register(open_callback, NULL, write_callback, NULL);
|
||||
acl_msg_open("dummy.txt", "dummy");
|
||||
logger("acl lib init ok!");
|
||||
|
||||
acl_fiber_msg_register(fiber_logger_callback, NULL);
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
void log_open(void);
|
||||
void log_info(const char* fmt, ...);
|
||||
void log_error(const char* fmt, ...);
|
@ -1,26 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015-2018 IQIYI
|
||||
* All rights reserved.
|
||||
*
|
||||
* AUTHOR(S)
|
||||
* Zheng Shuxin
|
||||
* E-mail: zhengshuxin@gmail.com
|
||||
*
|
||||
* VERSION
|
||||
* 日 3/29 14:42:56 2020
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <jni.h>
|
||||
#include <android/log.h>
|
||||
#include <string>
|
||||
#include <thread>
|
||||
|
||||
#include "lib_acl.h"
|
||||
#include "acl_cpp/lib_acl.hpp"
|
||||
#include "fiber/libfiber.h"
|
||||
#include "fiber/libfiber.hpp"
|
||||
#include "fiber/go_fiber.hpp"
|
@ -1,21 +0,0 @@
|
||||
//
|
||||
// Created by zhengshuxin on 2019/9/7.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "util.h"
|
||||
|
||||
void util::JString2String(JNIEnv *env, jstring js, std::string &out)
|
||||
{
|
||||
const char *ptr = env->GetStringUTFChars(js, 0);
|
||||
out = ptr;
|
||||
env->ReleaseStringUTFChars(js, ptr);
|
||||
}
|
||||
|
||||
jstring util::String2JString(JNIEnv *env, const char *s)
|
||||
{
|
||||
jstring js = env->NewStringUTF(s);
|
||||
return js;
|
||||
}
|
||||
|
||||
//extern "C" int atexit(void (*)()) { return 0; }
|
@ -1,15 +0,0 @@
|
||||
//
|
||||
// Created by zhengshuxin on 2019/9/7.
|
||||
//
|
||||
|
||||
#pragma once
|
||||
#include <jni.h>
|
||||
|
||||
class util {
|
||||
public:
|
||||
util(void) {}
|
||||
~util(void) {}
|
||||
|
||||
static void JString2String(JNIEnv* env, jstring js, std::string& out);
|
||||
static jstring String2JString(JNIEnv* env, const char* s);
|
||||
};
|
@ -1,21 +0,0 @@
|
||||
package com.example.HttpFiber;
|
||||
|
||||
public abstract class Fiber {
|
||||
private String msg;
|
||||
|
||||
public Fiber() {}
|
||||
|
||||
private void setMsg(String msg) {
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
private void onRun() {
|
||||
System.out.println("Fiber: onRun");
|
||||
this.run();
|
||||
}
|
||||
|
||||
public abstract void run();
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package com.example.HttpFiber;
|
||||
|
||||
public class FiberThread {
|
||||
private long waiter;
|
||||
public FiberThread() {}
|
||||
|
||||
public void start() {
|
||||
waiter = FiberSchedule();
|
||||
}
|
||||
|
||||
public void execute(HttpFiber fiber) {
|
||||
FiberStart(waiter, fiber);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
private native long FiberSchedule();
|
||||
private native void FiberStart(long fiberSchedule, Object o);
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
package com.example.HttpFiber;
|
||||
|
||||
public class HttpFiber {
|
||||
public HttpFiber() {}
|
||||
|
||||
private void onRun() {
|
||||
System.out.println("Fiber: onRun");
|
||||
this.run();
|
||||
}
|
||||
|
||||
public void run() {
|
||||
System.out.println("HttpFiber started!");
|
||||
}
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
package com.example.HttpFiber;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
|
||||
public final class HttpHandler extends Handler {
|
||||
final public static int BODY_OK = 0;
|
||||
final public static int BODY_ERR = 1;
|
||||
private final MainActivity mainActivity;
|
||||
|
||||
public HttpHandler(MainActivity mainActivity) {
|
||||
this.mainActivity = mainActivity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(Message message) {
|
||||
switch (message.what) {
|
||||
case BODY_OK:
|
||||
mainActivity.onBody((String) message.obj);
|
||||
break;
|
||||
case BODY_ERR:
|
||||
mainActivity.onError((String) message.obj);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 成功获得 HTTP 数据体的回调方法
|
||||
* @param body {String} 响应的 HTTP 数据体
|
||||
*/
|
||||
public void onBody(String body) {
|
||||
Message message = new Message();
|
||||
message.what = BODY_OK;
|
||||
message.obj = body;
|
||||
this.sendMessage(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 HTTP 结果失败时的回调方法
|
||||
* @param domain {String} 请求的域名
|
||||
* @param url {String} 请求的 URL
|
||||
*/
|
||||
public void onError(String domain, String url) {
|
||||
String error = "Domain: domain, " + "url: url";
|
||||
Message message = new Message();
|
||||
message.what = BODY_ERR;
|
||||
message.obj = error;
|
||||
this.sendMessage(message);
|
||||
}
|
||||
}
|
@ -1,86 +0,0 @@
|
||||
package com.example.HttpFiber;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.method.ScrollingMovementMethod;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
private EditText domain;
|
||||
private TextView result;
|
||||
private FiberThread fiberThread = new FiberThread();
|
||||
|
||||
// Used to load the 'native-lib' library on application startup.
|
||||
static {
|
||||
System.loadLibrary("native-lib");
|
||||
}
|
||||
|
||||
/**
|
||||
* HTTP 读取失败的回调方法
|
||||
* @param info
|
||||
*/
|
||||
public void onError(String info) {
|
||||
StringBuffer text = new StringBuffer();
|
||||
text.append("httpGet error\r\n");
|
||||
text.append(info + "\r\n");
|
||||
result.setText(text);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得 HTTP 数据体成功的回调方法
|
||||
* @param body
|
||||
*/
|
||||
public void onBody(String body) {
|
||||
result.setText(body);
|
||||
}
|
||||
|
||||
/**
|
||||
* 从 HTTP 服务器获得数据
|
||||
*/
|
||||
private void httpGet() {
|
||||
String host = domain.getText().toString().trim();
|
||||
if (host.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
HttpFiber fiber = new HttpFiber();
|
||||
System.out.println("create one fiber");
|
||||
fiberThread.execute(fiber);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
|
||||
domain = (EditText) findViewById(R.id.domain);
|
||||
result = findViewById(R.id.result);
|
||||
result.setMovementMethod(ScrollingMovementMethod.getInstance());
|
||||
|
||||
// 绑定 HTTP 请求事件
|
||||
Button get = (Button) findViewById(R.id.http_get);
|
||||
get.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
httpGet();
|
||||
}
|
||||
});
|
||||
|
||||
Button clear = (Button) findViewById(R.id.clear_results);
|
||||
clear.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
// 清空结果显示区域
|
||||
result.setText("");
|
||||
}
|
||||
});
|
||||
|
||||
HttpHandler handler = new HttpHandler(this);
|
||||
// 创建协程调度线程
|
||||
fiberThread.start();
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<path
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
|
||||
android:strokeWidth="1"
|
||||
android:strokeColor="#00000000">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="78.5885"
|
||||
android:endY="90.9159"
|
||||
android:startX="48.7653"
|
||||
android:startY="61.0927"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#44000000"
|
||||
android:offset="0.0" />
|
||||
<item
|
||||
android:color="#00000000"
|
||||
android:offset="1.0" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
|
||||
android:strokeWidth="1"
|
||||
android:strokeColor="#00000000" />
|
||||
</vector>
|
@ -1,170 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<path
|
||||
android:fillColor="#008577"
|
||||
android:pathData="M0,0h108v108h-108z" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M9,0L9,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,0L19,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M29,0L29,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M39,0L39,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M49,0L49,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M59,0L59,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M69,0L69,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M79,0L79,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M89,0L89,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M99,0L99,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,9L108,9"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,19L108,19"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,29L108,29"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,39L108,39"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,49L108,49"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,59L108,59"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,69L108,69"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,79L108,79"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,89L108,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,99L108,99"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,29L89,29"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,39L89,39"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,49L89,49"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,59L89,59"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,69L89,69"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,79L89,79"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M29,19L29,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M39,19L39,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M49,19L49,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M59,19L59,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M69,19L69,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M79,19L79,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
</vector>
|
@ -1,86 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/layoutText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<RelativeLayout
|
||||
android:id="@+id/domain_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="5dp">
|
||||
<TextView
|
||||
android:id="@+id/domain_lable"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:text="域名:"
|
||||
android:textSize="20sp" />
|
||||
<EditText
|
||||
android:id="@+id/domain"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:inputType="textPersonName"
|
||||
android:layout_toRightOf="@+id/domain_lable"
|
||||
android:layout_centerVertical="true"
|
||||
android:text="www.baidu.com"
|
||||
android:verticalScrollbarPosition="defaultPosition"
|
||||
tools:layout_editor_absoluteX="88dp"
|
||||
tools:layout_editor_absoluteY="97dp" />
|
||||
</RelativeLayout>
|
||||
<Button
|
||||
android:id="@+id/http_get"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="请求"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:textSize="20sp"
|
||||
android:layout_below="@+id/domain_layout"
|
||||
android:layout_centerVertical="true"
|
||||
android:textStyle="bold" />
|
||||
<Button
|
||||
android:id="@+id/clear_results"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/http_get"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:text="清空"
|
||||
android:textSize="20sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/result"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@+id/http_get"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginTop="55dp"
|
||||
android:fadeScrollbars="true"
|
||||
android:focusable="true"
|
||||
android:focusableInTouchMode="true"
|
||||
android:maxLines="15"
|
||||
android:paddingLeft="40dp"
|
||||
android:paddingTop="40dp"
|
||||
android:paddingRight="40dp"
|
||||
android:paddingBottom="40dp"
|
||||
android:scrollbarStyle="outsideInset"
|
||||
android:scrollbars="vertical"
|
||||
android:scrollHorizontally="true"
|
||||
android:text="TextView"
|
||||
android:visibility="visible"
|
||||
tools:layout_editor_absoluteX="65dp"
|
||||
tools:visibility="visible" />
|
||||
</RelativeLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
</adaptive-icon>
|
@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
</adaptive-icon>
|
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 15 KiB |
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="colorPrimary">#008577</color>
|
||||
<color name="colorPrimaryDark">#00574B</color>
|
||||
<color name="colorAccent">#D81B60</color>
|
||||
</resources>
|