@@ -16,26 +16,11 @@ namespace gameanalytics
1616 {
1717 size_t writefunc (void *ptr, size_t size, size_t nmemb, ResponseData *s)
1818 {
19- const size_t new_len = s->len + size*nmemb;
19+ const size_t new_len = s->packet .size () + size * nmemb + 1 ;
20+ s->packet .reserve (new_len);
2021
21- if (s->ptr )
22- {
23- std::unique_ptr<char []> buffer = std::make_unique<char []>(new_len);
24-
25- if (!buffer) // maybe just return instead?
26- throw std::runtime_error (" Failed to allocate buffer!" );
27-
28- std::memcpy (buffer.get (), s->ptr .get (), s->len );
29- s->ptr = std::move (buffer);
30- }
31- else
32- {
33- s->ptr = std::make_unique<char []>(new_len);
34- }
35-
36- std::memcpy (s->ptr .get () + s->len , ptr, size * nmemb);
37- s->ptr [new_len] = ' \0 ' ;
38- s->len = new_len;
22+ s->packet .insert (s->packet .end (), reinterpret_cast <char *>(ptr), reinterpret_cast <char *>(ptr) + size * nmemb);
23+ s->packet .push_back (' \0 ' );
3924
4025 return size*nmemb;
4126 }
@@ -83,7 +68,7 @@ namespace gameanalytics
8368 std::string jsonString = initAnnotations.dump ();
8469 if (jsonString.empty ())
8570 {
86- return ; JsonEncodeFailed;
71+ return JsonEncodeFailed;
8772 }
8873
8974 std::vector<uint8_t > payloadData = createPayloadData (jsonString, useGzip);
@@ -121,7 +106,7 @@ namespace gameanalytics
121106
122107 json requestJsonDict = json::parse (s.toString ());
123108
124- EGAHTTPApiResponse requestResponseEnum = processRequestResponse (response_code, s.ptr . get (), " Init" );
109+ EGAHTTPApiResponse requestResponseEnum = processRequestResponse (response_code, s.packet . data (), " Init" );
125110
126111 // if not 200 result
127112 if (requestResponseEnum != Ok && requestResponseEnum != Created && requestResponseEnum != BadRequest)
@@ -224,7 +209,7 @@ namespace gameanalytics
224209
225210 logging::GALogger::d (" body: %s" , s.toString ().c_str ());
226211
227- EGAHTTPApiResponse requestResponseEnum = processRequestResponse (response_code, s.ptr . get (), " Events" );
212+ EGAHTTPApiResponse requestResponseEnum = processRequestResponse (response_code, s.packet . data (), " Events" );
228213
229214 // if not 200 result
230215 if (requestResponseEnum != Ok && requestResponseEnum != Created && requestResponseEnum != BadRequest)
@@ -477,13 +462,7 @@ namespace gameanalytics
477462
478463 std::string ResponseData::toString () const
479464 {
480- std::string str;
481- if (ptr && len)
482- {
483- str = std::string (ptr.get (), len);
484- }
485-
486- return str;
465+ return std::string (packet.begin (), packet.end ());
487466 }
488467}
489468}
0 commit comments