Lines Matching defs:message

27 void *GetAppSpawnMsgInfo(const AppSpawnMsgNode *message, int type)
30 APPSPAWN_CHECK_ONLY_EXPER(message != NULL && message->buffer != NULL, return NULL);
31 APPSPAWN_CHECK_ONLY_EXPER(message->tlvOffset != NULL, return NULL);
32 APPSPAWN_CHECK_ONLY_EXPER(message->tlvOffset[type] != INVALID_OFFSET, return NULL);
33 return (void *)(message->buffer + message->tlvOffset[type] + sizeof(AppSpawnTlv));
36 void *GetAppSpawnMsgExtInfo(const AppSpawnMsgNode *message, const char *name, uint32_t *len)
39 APPSPAWN_CHECK_ONLY_EXPER(message != NULL && message->buffer != NULL, return NULL);
40 APPSPAWN_CHECK_ONLY_EXPER(message->tlvOffset != NULL, return NULL);
42 APPSPAWN_LOGV("GetAppSpawnMsgExtInfo tlvCount %{public}d name %{public}s", message->tlvCount, name);
43 for (uint32_t index = TLV_MAX; index < (TLV_MAX + message->tlvCount); index++) {
44 if (message->tlvOffset[index] == INVALID_OFFSET) {
47 uint8_t *data = message->buffer + message->tlvOffset[index];
63 int CheckAppSpawnMsgFlag(const AppSpawnMsgNode *message, uint32_t type, uint32_t index)
66 AppSpawnMsgFlags *msgFlags = (AppSpawnMsgFlags *)GetAppSpawnMsgInfo(message, type);
85 int SetAppSpawnMsgFlag(const AppSpawnMsgNode *message, uint32_t type, uint32_t index)
89 AppSpawnMsgFlags *msgFlags = (AppSpawnMsgFlags *)GetAppSpawnMsgInfo(message, type);
96 AppSpawnMsgNode *message = (AppSpawnMsgNode *)calloc(1, sizeof(AppSpawnMsgNode));
97 APPSPAWN_CHECK(message != NULL, return NULL, "Failed to create message");
98 message->buffer = NULL;
99 message->tlvOffset = NULL;
100 return message;
131 static int AppSpawnMsgRebuild(AppSpawnMsgNode *message, const AppSpawnMsg *msg)
133 APPSPAWN_CHECK_ONLY_EXPER(CheckRecvMsg(&message->msgHeader) == 0, return APPSPAWN_MSG_INVALID);
134 if (msg->msgLen == sizeof(message->msgHeader)) { // only has msg header
137 if (message->buffer == NULL) {
138 message->buffer = calloc(1, msg->msgLen - sizeof(message->msgHeader));
139 APPSPAWN_CHECK(message->buffer != NULL, return -1, "Failed to alloc memory for recv message");
141 if (message->tlvOffset == NULL) {
143 message->tlvOffset = malloc(totalCount * sizeof(uint32_t));
144 APPSPAWN_CHECK(message->tlvOffset != NULL, return -1, "Failed to alloc memory for recv message");
146 message->tlvOffset[i] = INVALID_OFFSET;
152 AppSpawnMsgNode *RebuildAppSpawnMsgNode(AppSpawnMsgNode *message, AppSpawnedProcess *appInfo)
155 APPSPAWN_CHECK(message != NULL && appInfo != NULL, return NULL, "params is null");
159 int ret = memcpy_s(&node->msgHeader, sizeof(AppSpawnMsg), &message->msgHeader, sizeof(AppSpawnMsg));
161 bufferLen = message->msgHeader.msgLen + appInfo->message->msgHeader.msgLen - sizeof(AppSpawnMsg);
164 node->msgHeader.tlvCount += message->msgHeader.tlvCount;
166 APPSPAWN_CHECK(ret == 0, DeleteAppSpawnMsg(node); return NULL, "Failed to alloc memory for recv message");
167 uint32_t appInfoBufLen = appInfo->message->msgHeader.msgLen - sizeof(AppSpawnMsg);
168 uint32_t msgBufLen = message->msgHeader.msgLen - sizeof(AppSpawnMsg);
169 ret = memcpy_s(node->buffer, bufferLen, appInfo->message->buffer, appInfoBufLen);
171 ret = memcpy_s(node->buffer + appInfoBufLen, bufferLen - appInfoBufLen, message->buffer, msgBufLen);
172 APPSPAWN_CHECK(ret == 0, DeleteAppSpawnMsg(node); return NULL, "Failed to memcpy_s message->buffer");
178 int CheckAppSpawnMsg(const AppSpawnMsgNode *message)
180 APPSPAWN_CHECK_ONLY_EXPER(message != NULL, return APPSPAWN_MSG_INVALID);
181 APPSPAWN_CHECK(strlen(message->msgHeader.processName) > 0,
182 return APPSPAWN_MSG_INVALID, "Invalid property processName %{public}s", message->msgHeader.processName);
183 APPSPAWN_CHECK(message->tlvOffset != NULL,
184 return APPSPAWN_MSG_INVALID, "Invalid property tlv offset for %{public}s", message->msgHeader.processName);
185 APPSPAWN_CHECK(message->buffer != NULL,
186 return APPSPAWN_MSG_INVALID, "Invalid property buffer for %{public}s", message->msgHeader.processName);
188 if (message->tlvOffset[TLV_BUNDLE_INFO] == INVALID_OFFSET ||
189 message->tlvOffset[TLV_MSG_FLAGS] == INVALID_OFFSET ||
190 message->tlvOffset[TLV_ACCESS_TOKEN_INFO] == INVALID_OFFSET ||
191 message->tlvOffset[TLV_DOMAIN_INFO] == INVALID_OFFSET ||
192 message->tlvOffset[TLV_DAC_INFO] == INVALID_OFFSET) {
194 message->tlvOffset[TLV_BUNDLE_INFO], message->tlvOffset[TLV_MSG_FLAGS],
195 message->tlvOffset[TLV_ACCESS_TOKEN_INFO],
196 message->tlvOffset[TLV_DOMAIN_INFO], message->tlvOffset[TLV_DAC_INFO]);
199 AppSpawnMsgBundleInfo *bundleInfo = (AppSpawnMsgBundleInfo *)GetAppSpawnMsgInfo(message, TLV_BUNDLE_INFO);
257 int DecodeAppSpawnMsg(AppSpawnMsgNode *message)
259 APPSPAWN_CHECK_ONLY_EXPER(message != NULL, return APPSPAWN_MSG_INVALID);
262 uint32_t bufferLen = message->msgHeader.msgLen - sizeof(AppSpawnMsg);
265 AppSpawnTlv *tlv = (AppSpawnTlv *)(message->buffer + currLen);
279 message->tlvOffset[tlv->tlvType] = currLen;
282 APPSPAWN_CHECK(tlvCount < message->msgHeader.tlvCount, break,
284 message->tlvOffset[TLV_MAX + tlvCount] = currLen;
291 message->tlvCount = tlvCount;
301 AppSpawnMsgNode *message = *outMsg;
302 if (message == NULL) {
303 message = CreateAppSpawnMsg();
304 APPSPAWN_CHECK(message != NULL, return APPSPAWN_SYSTEM_ERROR, "Failed to create message");
305 *outMsg = message;
310 if (*msgRecvLen < sizeof(AppSpawnMsg)) { // recv partial message
312 int ret = memcpy_s(((uint8_t *)&message->msgHeader) + *msgRecvLen,
313 sizeof(message->msgHeader) - *msgRecvLen,
314 buffer, sizeof(message->msgHeader) - *msgRecvLen);
317 ret = AppSpawnMsgRebuild(message, &message->msgHeader);
319 reminderLen = bufferLen - (sizeof(message->msgHeader) - *msgRecvLen);
320 reminderBuffer = buffer + sizeof(message->msgHeader) - *msgRecvLen;
321 *msgRecvLen = sizeof(message->msgHeader);
323 int ret = memcpy_s(((uint8_t *)&message->msgHeader) + *msgRecvLen,
324 sizeof(message->msgHeader) - *msgRecvLen, buffer, bufferLen);
331 uint32_t realCopy = (reminderLen + *msgRecvLen) > message->msgHeader.msgLen ?
332 message->msgHeader.msgLen - *msgRecvLen : reminderLen;
333 if (message->buffer == NULL) { // only has msg header
338 int ret = memcpy_s(message->buffer + *msgRecvLen - sizeof(message->msgHeader),
339 message->msgHeader.msgLen - *msgRecvLen, reminderBuffer, realCopy);
370 void DumpAppSpawnMsg(const AppSpawnMsgNode *message)
372 APPSPAWN_CHECK_ONLY_EXPER(message != NULL, return);
374 message->msgHeader.msgId, message->msgHeader.msgLen, message->tlvCount, message->msgHeader.processName);
376 AppSpawnMsgFlags *msgFlags = (AppSpawnMsgFlags *)GetAppSpawnMsgInfo(message, TLV_MSG_FLAGS);
378 msgFlags = (AppSpawnMsgFlags *)GetAppSpawnMsgInfo(message, TLV_PERMISSION);
381 AppSpawnMsgDacInfo *dacInfo = (AppSpawnMsgDacInfo *)GetAppSpawnMsgInfo(message, TLV_DAC_INFO);
389 AppSpawnMsgBundleInfo *bundleInfo = (AppSpawnMsgBundleInfo *)GetAppSpawnMsgInfo(message, TLV_BUNDLE_INFO);
394 AppSpawnMsgDomainInfo *domainInfo = (AppSpawnMsgDomainInfo *)GetAppSpawnMsgInfo(message, TLV_DOMAIN_INFO);
403 AppSpawnMsgOwnerId *owner = (AppSpawnMsgOwnerId *)GetAppSpawnMsgInfo(message, TLV_OWNER_INFO);
406 AppSpawnMsgInternetInfo *info = (AppSpawnMsgInternetInfo *)GetAppSpawnMsgInfo(message, TLV_INTERNET_INFO);
411 for (uint32_t i = TLV_MAX; i < TLV_MAX + message->tlvCount; i++) {
412 if (message->tlvOffset[i] == INVALID_OFFSET) {
415 DumpMsgExtInfo((AppSpawnTlv *)(message->buffer + message->tlvOffset[i]));