Skip to content

Commit 57d5691

Browse files
Http Client, added URI class, various memory leak fixes. (aws#15)
Http Bindings, various bug fixes.
1 parent e0de5f7 commit 57d5691

20 files changed

+92087
-46
lines changed

.gitattributes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
tests/resources/* text=auto eol=lf
2+

CMakeLists.txt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ file(GLOB AWS_CRT_MQTT_HEADERS
111111
"include/aws/crt/mqtt/*.h"
112112
)
113113

114+
file(GLOB AWS_CRT_HTTP_HEADERS
115+
"include/aws/crt/http/*.h"
116+
)
117+
114118
file(GLOB AWS_CRT_EXTERNAL_HEADERS
115119
"include/aws/crt/external/*.h"
116120
)
@@ -120,6 +124,8 @@ file(GLOB AWS_CRT_CPP_HEADERS
120124
${AWS_CRT_CRYPTO_HEADERS}
121125
${AWS_CRT_IO_HEADERS}
122126
${AWS_CRT_MQTT_HEADERS}
127+
${AWS_CRT_HTTP_HEADERS}
128+
${AWS_CRT_EXTERNAL_HEADERS}
123129
)
124130

125131
file(GLOB AWS_CRT_SRC
@@ -138,6 +144,10 @@ file (GLOB AWS_CRT_MQTT_SRC
138144
"source/mqtt/*.cpp"
139145
)
140146

147+
file (GLOB AWS_CRT_HTTP_SRC
148+
"source/http/*.cpp"
149+
)
150+
141151
file(GLOB AWS_CRT_EXTERNAL_CRC
142152
"source/external/*.cpp"
143153
)
@@ -147,6 +157,7 @@ file(GLOB AWS_CRT_CPP_SRC
147157
${AWS_CRT_CRYPTO_SRC}
148158
${AWS_CRT_IO_SRC}
149159
${AWS_CRT_MQTT_SRC}
160+
${AWS_CRT_HTTP_SRC}
150161
${AWS_CRT_EXTERNAL_CRC}
151162
)
152163

@@ -156,12 +167,14 @@ if (WIN32)
156167
source_group("Header Files\\aws\\crt\\crypto" FILES ${AWS_CRT_CRYPTO_HEADERS})
157168
source_group("Header Files\\aws\\crt\\io" FILES ${AWS_CRT_IO_HEADERS})
158169
source_group("Header Files\\aws\\crt\\mqtt" FILES ${AWS_CRT_MQTT_HEADERS})
170+
source_group("Header Files\\aws\\crt\\http" FILES ${AWS_CRT_HTTP_HEADERS})
159171
source_group("Header Files\\aws\\crt\\external" FILES ${AWS_CRT_EXTERNAL_HEADERS})
160172

161173
source_group("Source Files" FILES ${AWS_CRT_SRC})
162174
source_group("Source Files\\crypto" FILES ${AWS_CRT_CRYPTO_SRC})
163175
source_group("Source Files\\io" FILES ${AWS_CRT_IO_SRC})
164176
source_group("Source Files\\mqtt" FILES ${AWS_CRT_MQTT_SRC})
177+
source_group("Source Files\\http" FILES ${AWS_CRT_HTTP_SRC})
165178
source_group("Source Files\\external" FILES ${AWS_CRT_EXTERNAL_SRC})
166179
endif ()
167180
endif()
@@ -193,14 +206,16 @@ target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC
193206
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
194207
$<INSTALL_INTERFACE:include>)
195208

209+
find_package(aws-c-http REQUIRED)
196210
find_package(aws-c-mqtt REQUIRED)
197211
find_package(aws-c-cal REQUIRED)
198-
target_link_libraries(${CMAKE_PROJECT_NAME} AWS::aws-c-cal AWS::aws-c-mqtt)
212+
target_link_libraries(${CMAKE_PROJECT_NAME} AWS::aws-c-cal AWS::aws-c-http AWS::aws-c-mqtt)
199213

200214
install(FILES ${AWS_CRT_HEADERS} DESTINATION "include/aws/crt" COMPONENT Development)
201215
install(FILES ${AWS_CRT_CRYPTO_HEADERS} DESTINATION "include/aws/crt/crypto" COMPONENT Development)
202216
install(FILES ${AWS_CRT_IO_HEADERS} DESTINATION "include/aws/crt/io" COMPONENT Development)
203217
install(FILES ${AWS_CRT_MQTT_HEADERS} DESTINATION "include/aws/crt/mqtt" COMPONENT Development)
218+
install(FILES ${AWS_CRT_HTTP_HEADERS} DESTINATION "include/aws/crt/http" COMPONENT Development)
204219
install(FILES ${AWS_CRT_EXTERNAL_HEADERS} DESTINATION "include/aws/crt/external" COMPONENT Development)
205220

206221
install(

aws-common-runtime/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,13 @@ if (UNIX AND NOT APPLE)
2727
endif()
2828

2929
set(AWS_C_IO_URL "https://github.com/awslabs/aws-c-io.git")
30-
set(AWS_C_IO_SHA "v0.2.4")
30+
set(AWS_C_IO_SHA "v0.2.5")
3131
include(BuildAwsCIO)
3232

33+
set(AWS_C_HTTP_URL "https://github.com/awslabs/aws-c-http.git")
34+
set(AWS_C_HTTP_SHA "v0.1.0")
35+
include(BuildAwsCHttp)
36+
3337
set(AWS_C_MQTT_URL "https://github.com/awslabs/aws-c-mqtt.git")
3438
set(AWS_C_MQTT_SHA "v0.3.2")
3539
include(BuildAwsCMqtt)
@@ -39,6 +43,7 @@ set(AWS_C_CAL_SHA "v0.1.4")
3943
include(BuildAwsCCal)
4044

4145
add_dependencies(AwsCMqtt AwsCIO)
46+
add_dependencies(AwsCHttp AwsCIO)
4247
add_dependencies(AwsCCal AwsCCommon)
4348

4449
if (UNIX AND NOT APPLE)
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
if("${TARGET_ARCH}" STREQUAL ANDROID)
2+
ExternalProject_Add(AwsCHttp
3+
PREFIX ${AWS_DEPS_BUILD_DIR}
4+
GIT_REPOSITORY ${AWS_C_HTTP_URL}
5+
GIT_TAG ${AWS_C_HTTP_SHA}
6+
BUILD_IN_SOURCE 0
7+
UPDATE_COMMAND ""
8+
CMAKE_ARGS
9+
-DCMAKE_PREFIX_PATH=${AWS_DEPS_INSTALL_DIR}
10+
-DCMAKE_INSTALL_PREFIX=${AWS_DEPS_INSTALL_DIR}
11+
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
12+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
13+
-DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
14+
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
15+
-DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL}
16+
-DANDROID_ABI=${ANDROID_ABI}
17+
-DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME}
18+
-DANDROID_STANDALONE_TOOLCHAIN=${ANDROID_STANDALONE_TOOLCHAIN}
19+
-DANDROID_STL=${ANDROID_STL}
20+
-DENABLE_HW_OPTIMIZATION=OFF
21+
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
22+
)
23+
elseif(MSVC)
24+
ExternalProject_Add(AwsCHttp
25+
PREFIX ${AWS_DEPS_BUILD_DIR}
26+
GIT_REPOSITORY ${AWS_C_HTTP_URL}
27+
GIT_TAG ${AWS_C_HTTP_SHA}
28+
BUILD_IN_SOURCE 0
29+
UPDATE_COMMAND ""
30+
CMAKE_ARGS
31+
-DCMAKE_PREFIX_PATH=${AWS_DEPS_INSTALL_DIR}
32+
-DCMAKE_INSTALL_PREFIX=${AWS_DEPS_INSTALL_DIR}
33+
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
34+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
35+
-DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
36+
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
37+
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
38+
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
39+
)
40+
else()
41+
ExternalProject_Add(AwsCHttp
42+
PREFIX ${AWS_DEPS_BUILD_DIR}
43+
GIT_REPOSITORY ${AWS_C_HTTP_URL}
44+
GIT_TAG ${AWS_C_HTTP_SHA}
45+
BUILD_IN_SOURCE 0
46+
UPDATE_COMMAND ""
47+
CMAKE_ARGS
48+
-DCMAKE_PREFIX_PATH=${AWS_DEPS_INSTALL_DIR}
49+
-DCMAKE_INSTALL_PREFIX=${AWS_DEPS_INSTALL_DIR}
50+
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
51+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
52+
-DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
53+
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
54+
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
55+
)
56+
endif()

cmake/aws-crt-cpp-config.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
include(CMakeFindDependencyMacro)
22

3+
find_dependency(aws-c-http)
34
find_dependency(aws-c-mqtt)
45
find_dependency(aws-c-cal)
56

codebuild/common-posix.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ cd build
77

88
cmake -DBUILD_DEPS=ON $@ ../
99
make
10-
make test
10+
ctest -V
1111

1212
cd ..

include/aws/crt/Types.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include <sstream>
2626
#include <string>
2727
#include <unordered_map>
28+
#include <utility>
2829
#include <vector>
2930

3031
struct aws_allocator;
@@ -68,8 +69,26 @@ namespace Aws
6869
AWS_CRT_CPP_API ByteBuf ByteBufNewCopy(Allocator *alloc, const uint8_t *array, size_t len);
6970
AWS_CRT_CPP_API void ByteBufDelete(ByteBuf &);
7071

72+
AWS_CRT_CPP_API ByteCursor ByteCursorFromCString(const char *str) noexcept;
73+
AWS_CRT_CPP_API ByteCursor ByteCursorFromByteBuf(const ByteBuf &) noexcept;
74+
AWS_CRT_CPP_API ByteCursor ByteCursorFromArray(const uint8_t *array, size_t len) noexcept;
75+
7176
AWS_CRT_CPP_API Vector<uint8_t> Base64Decode(const String &decode);
7277
AWS_CRT_CPP_API String Base64Encode(const Vector<uint8_t> &encode);
7378

79+
template <typename T> void Delete(T *t, Allocator *allocator)
80+
{
81+
t->~T();
82+
aws_mem_release(allocator, t);
83+
}
84+
85+
template <typename T, typename... Args> T *New(Allocator *allocator, Args &&... args)
86+
{
87+
T *t = reinterpret_cast<T *>(aws_mem_acquire(allocator, sizeof(T)));
88+
if (!t)
89+
return nullptr;
90+
return new (t) T(std::forward<Args>(args)...);
91+
}
92+
7493
} // namespace Crt
7594
} // namespace Aws

0 commit comments

Comments
 (0)