MCPcopy Create free account
hub / github.com/9miao/CrossApp / networkThread

Function networkThread

CrossApp/support/network/HttpClient.cpp:51–184  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

49
50
51static void* networkThread(void *data)
52{
53 CAHttpClient* httpClient = (CAHttpClient*)data;
54
55 CAHttpRequest *request = NULL;
56
57 while (true)
58 {
59 if (httpClient->need_quit)
60 {
61 break;
62 }
63
64 request = NULL;
65
66 pthread_mutex_lock(&httpClient->s_requestQueueMutex);
67 if (!httpClient->s_requestQueue.empty())
68 {
69 request = httpClient->s_requestQueue.front();
70 httpClient->s_requestQueue.popFront();
71 }
72 pthread_mutex_unlock(&httpClient->s_requestQueueMutex);
73
74 if (NULL == request)
75 {
76 pthread_cond_wait(&httpClient->s_SleepCondition, &httpClient->s_SleepMutex);
77#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32
78 Sleep(100);
79#else
80 usleep(100000);
81#endif
82 continue;
83 }
84
85
86 CAHttpResponse *response = new CAHttpResponse(request);
87
88
89 int32_t responseCode = -1;
90 int retValue = 0;
91
92 switch (request->getRequestType())
93 {
94 case CAHttpRequest::kHttpGet: // HTTP GET
95 retValue = processGetTask(request,
96 writeData,
97 response->getResponseData(),
98 &responseCode,
99 writeHeaderData,
100 response->getResponseHeader());
101 break;
102
103 case CAHttpRequest::kHttpPost: // HTTP POST
104 retValue = processPostTask(request,
105 writeData,
106 response->getResponseData(),
107 &responseCode,
108 writeHeaderData,

Callers

nothing calls this directly

Calls 14

pthread_mutex_lockFunction · 0.85
pthread_mutex_unlockFunction · 0.85
processGetTaskFunction · 0.85
processPostTaskFunction · 0.85
processPutTaskFunction · 0.85
processDeleteTaskFunction · 0.85
processPostFileTaskFunction · 0.85
pthread_mutex_destroyFunction · 0.85
resumeTargetMethod · 0.80
emptyMethod · 0.45
popFrontMethod · 0.45
releaseMethod · 0.45

Tested by

no test coverage detected