MCPcopy Create free account
hub / github.com/Tencent/Hardcoder / recvEvent

Method recvEvent

libapp2sys/src/main/cpp/client.h:158–263  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

156 int m_runningFlag;
157
158 int recvEvent(Event event, int fd, int pid, uid_t uid, const char *path, uint8_t *recvData, int recvDataLen) {
159
160 if (event == EVENT_ERROR) {
161 perr("LocalsocketClient recvEvent EVENT_ERROR: uid:%d, path:%s, fd:%d. Reconnect now.", uid, path, fd);
162 return 0;
163 }
164
165 if (event == EVENT_DATA) {
166 int recvDataOffset = 0;
167
168 while (recvDataOffset < recvDataLen) {
169 int recvDataLeft = recvDataLen - recvDataOffset;
170
171 if (respHeaderOffset < sizeof(AMCRespHeader)) { // fill header
172 int shouldRead = sizeof(AMCRespHeader) - respHeaderOffset;
173 shouldRead = shouldRead < recvDataLeft ? shouldRead : recvDataLeft;
174
175 memcpy(respHeaderBuf + respHeaderOffset, recvData + recvDataOffset, shouldRead);
176 recvDataOffset += shouldRead;
177 respHeaderOffset += shouldRead;
178 }
179 if (respHeaderOffset == sizeof(AMCRespHeader)) { // fill data
180 AMCRespHeader *pHeader = (AMCRespHeader *)(respHeaderBuf);
181 pdbg("pHead->requestid:%lld, version:%d, recvDataLen:%d", pHeader->requestid, pHeader->version, recvDataLen);
182
183 if (pHeader->begin != HEADER_BEGIN) {
184 perr("Check Header BEGIN failed:0x%x server:0x%x", pHeader->begin, HEADER_BEGIN);
185 if (respPayload) {
186 delete[] respPayload;
187 }
188 respPayload = NULL;
189 respHeaderOffset = 0;
190 return -1;
191 }
192
193 if(pHeader->version >= HEADER_JSON_VERSION){//json, use AMCRespHeaderV2
194 //fill header
195 recvDataLeft = recvDataLen - recvDataOffset;
196 int shouldRead = sizeof(AMCRespHeaderV2) - respHeaderOffset;
197 shouldRead = shouldRead < recvDataLeft ? shouldRead : recvDataLeft;
198 memcpy(respHeaderBuf + respHeaderOffset, recvData + recvDataOffset, shouldRead);
199 recvDataOffset += shouldRead;
200 respHeaderOffset += shouldRead;
201 AMCRespHeaderV2 *pHeaderV2 = (AMCRespHeaderV2 *)(respHeaderBuf);
202
203 if (pHeaderV2->bodylen) {
204 if (respPayload == NULL) {
205 respPayload = new uint8_t[pHeaderV2->bodylen];
206 }
207 pdbg("LocalsocketClient recvEvent EVENT_DATA, pHeaderV2->bodylen:%d, respPayloadOffset:%d", pHeaderV2->bodylen, respPayloadOffset);
208 int shouldRead = pHeaderV2->bodylen - respPayloadOffset;//respPayloadOffset = 0, shouldRead=bodylen
209 shouldRead = shouldRead < recvDataLeft ? shouldRead : recvDataLeft;
210
211 memcpy(respPayload + respPayloadOffset, recvData + recvDataOffset, shouldRead);
212 respPayloadOffset += shouldRead;//=bodylen
213 recvDataOffset += shouldRead;//datalen
214 }
215 if (respPayloadOffset == pHeaderV2->bodylen) {

Callers

nothing calls this directly

Calls 1

onCallbackMethod · 0.45

Tested by

no test coverage detected