Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions lib/http/HttpClient_Apple.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,3 @@ namespace MAT_NS_BEGIN {
} MAT_NS_END

#endif // HTTPCLIENT_APPLE_HPP


18 changes: 10 additions & 8 deletions lib/http/HttpClient_Apple.mm
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@
return std::string("RESP-") + std::to_string(seq.fetch_add(1));
}

static dispatch_once_t once;
static NSURLSession* session;

class HttpRequestApple : public SimpleHttpRequest
{
public:
Expand All @@ -37,6 +40,10 @@
m_parent(parent)
{
m_parent->Add(static_cast<IHttpRequest*>(this));
dispatch_once(&once, ^{
NSURLSessionConfiguration* sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
session = [NSURLSession sessionWithConfiguration:sessionConfig];
});
}

~HttpRequestApple() noexcept
Expand All @@ -50,10 +57,7 @@ void SendAsync(IHttpResponseCallback* callback)
{
m_callback = callback;
NSString* url = [[NSString alloc] initWithUTF8String:m_url.c_str()];
NSURLSessionConfiguration* sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
m_urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
m_session = [NSURLSession sessionWithConfiguration:sessionConfig];
m_session.sessionDescription = url;

for(const auto& header : m_headers)
{
Expand All @@ -71,13 +75,13 @@ void SendAsync(IHttpResponseCallback* callback)
if(equalsIgnoreCase(m_method, "get"))
{
[m_urlRequest setHTTPMethod:@"GET"];
m_dataTask = [m_session dataTaskWithRequest:m_urlRequest completionHandler:m_completionMethod];
m_dataTask = [session dataTaskWithRequest:m_urlRequest completionHandler:m_completionMethod];
}
else
{
[m_urlRequest setHTTPMethod:@"POST"];
NSData* postData = [NSData dataWithBytes:m_body.data() length:m_body.size()];
m_dataTask = [m_session uploadTaskWithRequest:m_urlRequest fromData:postData completionHandler:m_completionMethod];
m_dataTask = [session uploadTaskWithRequest:m_urlRequest fromData:postData completionHandler:m_completionMethod];
}

[m_dataTask resume];
Expand Down Expand Up @@ -128,7 +132,7 @@ void HandleResponse(NSData* data, NSURLResponse* response, NSError* error)
void Cancel()
{
[m_dataTask cancel];
[m_session getTasksWithCompletionHandler:^(NSArray* dataTasks, NSArray* uploadTasks, NSArray* downloadTasks)
[session getTasksWithCompletionHandler:^(NSArray* dataTasks, NSArray* uploadTasks, NSArray* downloadTasks)
{
for (NSURLSessionTask* _task in dataTasks)
{
Expand All @@ -150,7 +154,6 @@ void Cancel()
private:
HttpClient_Apple* m_parent = nullptr;
IHttpResponseCallback* m_callback = nullptr;
NSURLSession* m_session = nullptr;
NSURLSessionDataTask* m_dataTask = nullptr;
NSMutableURLRequest* m_urlRequest = nullptr;
void (^m_completionMethod)(NSData* data, NSURLResponse* response, NSError* error);
Expand Down Expand Up @@ -233,4 +236,3 @@ void Cancel()
} MAT_NS_END

#endif