1 /*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #ifndef TRANS_EVENT_CONVERTER_H
17 #define TRANS_EVENT_CONVERTER_H
18
19 #include "softbus_event_converter.h"
20
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24
25 #define TRANS_ASSIGNER(type, fieldName, field) \
26 static inline bool TransAssigner##fieldName( \
27 const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
28 { \
29 if (Assigner##type(form->transExtra->field, ¶m) && \
30 CopyString(param->name, eventName, MAX_LENGTH_OF_PARAM_NAME)) { \
31 param->t = paramType; \
32 return true; \
33 } \
34 return false; \
35 }
36
37 TRANS_ASSIGNER(Errcode, Result, result)
38 TRANS_ASSIGNER(Errcode, Errcode, errcode)
39 TRANS_ASSIGNER(AnonymizeString, SocketName, socketName)
40 TRANS_ASSIGNER(Int32, DataType, dataType)
41 TRANS_ASSIGNER(Int32, ChannelType, channelType)
42 TRANS_ASSIGNER(Int32, LaneId, laneId)
43 TRANS_ASSIGNER(Int32, PreferLinkType, preferLinkType)
44 TRANS_ASSIGNER(Int32, LaneTransType, laneTransType)
45 TRANS_ASSIGNER(Int32, ChannelId, channelId)
46 TRANS_ASSIGNER(Int32, RequestId, requestId)
47 TRANS_ASSIGNER(Int32, ConnectionId, connectionId)
48 TRANS_ASSIGNER(Int32, LinkType, linkType)
49 TRANS_ASSIGNER(Int32, AuthId, authId)
50 TRANS_ASSIGNER(Int32, SocketFd, socketFd)
51 TRANS_ASSIGNER(Int32, CostTime, costTime)
52 TRANS_ASSIGNER(Int32, ChannelScore, channelScore)
53 TRANS_ASSIGNER(Int32, PeerChannelId, peerChannelId)
54 TRANS_ASSIGNER(Int32, BtFlow, btFlow)
55 TRANS_ASSIGNER(AnonymizeString, PeerNetworkId, peerNetworkId)
56 TRANS_ASSIGNER(AnonymizeString, PeerUdid, peerUdid)
57 TRANS_ASSIGNER(String, PeerDevVer, peerDevVer)
58 TRANS_ASSIGNER(AnonymizeString, LocalUdid, localUdid)
59 TRANS_ASSIGNER(String, CallerPkg, callerPkg)
60 TRANS_ASSIGNER(String, CalleePkg, calleePkg)
61 TRANS_ASSIGNER(String, FirstTokenName, firstTokenName)
62 TRANS_ASSIGNER(Uint32, FirstTokenId, firstTokenId)
63 TRANS_ASSIGNER(Int32, FirstTokenType, firstTokenType)
64 TRANS_ASSIGNER(LongString, TrafficStats, trafficStats)
65 TRANS_ASSIGNER(Int32, OsType, osType)
66 TRANS_ASSIGNER(Int32, DeviceState, deviceState)
67 TRANS_ASSIGNER(Int32, BusinessId, businessId)
68 TRANS_ASSIGNER(Int32, BusinessType, businessType)
69
70 #define TRANS_ASSIGNER_SIZE 32 // Size of TRANS_ASSIGNERS
71 static const HiSysEventParamAssigner TRANS_ASSIGNERS[] = {
72 { "STAGE_RES", HISYSEVENT_INT32, TransAssignerResult },
73 { "ERROR_CODE", HISYSEVENT_INT32, TransAssignerErrcode },
74 { "SOCKET_NAME", HISYSEVENT_STRING, TransAssignerSocketName },
75 { "DATA_TYPE", HISYSEVENT_INT32, TransAssignerDataType },
76 { "LOGIC_CHAN_TYPE", HISYSEVENT_INT32, TransAssignerChannelType },
77 { "LANE_ID", HISYSEVENT_INT32, TransAssignerLaneId },
78 { "PREFER_LINK_TYPE", HISYSEVENT_INT32, TransAssignerPreferLinkType},
79 { "LANE_TRANS_TYPE", HISYSEVENT_INT32, TransAssignerLaneTransType },
80 { "CHAN_ID", HISYSEVENT_INT32, TransAssignerChannelId },
81 { "REQ_ID", HISYSEVENT_INT32, TransAssignerRequestId },
82 { "CONN_ID", HISYSEVENT_INT32, TransAssignerConnectionId },
83 { "LINK_TYPE", HISYSEVENT_INT32, TransAssignerLinkType },
84 { "AUTH_ID", HISYSEVENT_INT32, TransAssignerAuthId },
85 { "SOCKET_FD", HISYSEVENT_INT32, TransAssignerSocketFd },
86 { "COST_TIME", HISYSEVENT_INT32, TransAssignerCostTime },
87 { "CHAN_SCORE", HISYSEVENT_INT32, TransAssignerChannelScore },
88 { "PEER_CHAN_ID", HISYSEVENT_INT32, TransAssignerPeerChannelId },
89 { "BT_FLOW", HISYSEVENT_INT32, TransAssignerBtFlow },
90 { "PEER_NET_ID", HISYSEVENT_STRING, TransAssignerPeerNetworkId },
91 { "PEER_UDID", HISYSEVENT_STRING, TransAssignerPeerUdid },
92 { "PEER_DEV_VER", HISYSEVENT_STRING, TransAssignerPeerDevVer },
93 { "LOCAL_UDID", HISYSEVENT_STRING, TransAssignerLocalUdid },
94 { "HOST_PKG", HISYSEVENT_STRING, TransAssignerCallerPkg },
95 { "TO_CALL_PKG", HISYSEVENT_STRING, TransAssignerCalleePkg },
96 { "FIRST_TOKEN_NAME", HISYSEVENT_STRING, TransAssignerFirstTokenName},
97 { "FIRST_TOKEN_ID", HISYSEVENT_UINT32, TransAssignerFirstTokenId },
98 { "FIRST_TOKEN_TYPE", HISYSEVENT_INT32, TransAssignerFirstTokenType},
99 { "TRAFFIC_STATS", HISYSEVENT_STRING, TransAssignerTrafficStats },
100 { "OS_TYPE", HISYSEVENT_INT32, TransAssignerOsType },
101 { "DEVICE_STATE", HISYSEVENT_INT32, TransAssignerDeviceState },
102 { "BUSINESS_ID", HISYSEVENT_INT32, TransAssignerBusinessId },
103 { "BUSINESS_TYPE", HISYSEVENT_INT32, TransAssignerBusinessType },
104 // Modification Note: remember updating TRANS_ASSIGNER_SIZE
105 };
106
107 #define TRANS_ALARM_ASSIGNER(type, fieldName, field) \
108 static inline bool TransAssigner##fieldName( \
109 const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
110 { \
111 if (Assigner##type(form->transAlarmExtra->field, ¶m) && \
112 CopyString(param->name, eventName, MAX_LENGTH_OF_PARAM_NAME)) { \
113 param->t = paramType; \
114 return true; \
115 } \
116 return false; \
117 }
118
119 TRANS_ALARM_ASSIGNER(Errcode, AlarmResult, result)
120 TRANS_ALARM_ASSIGNER(Errcode, AlarmReason, errcode)
121 TRANS_ALARM_ASSIGNER(Int32, CallerPid, callerPid)
122 TRANS_ALARM_ASSIGNER(Int32, AlarmLinkType, linkType)
123 TRANS_ALARM_ASSIGNER(Int32, MinBw, minBw)
124 TRANS_ALARM_ASSIGNER(Int32, MethodId, methodId)
125 TRANS_ALARM_ASSIGNER(Int32, Duration, duration)
126 TRANS_ALARM_ASSIGNER(Int32, CurFlow, curFlow)
127 TRANS_ALARM_ASSIGNER(Int32, LimitFlow, limitFlow)
128 TRANS_ALARM_ASSIGNER(Int32, LimitTime, limitTime)
129 TRANS_ALARM_ASSIGNER(Int32, OccupyRes, occupyRes)
130 TRANS_ALARM_ASSIGNER(Int32, SyncType, syncType)
131 TRANS_ALARM_ASSIGNER(Int32, SyncData, syncData)
132 TRANS_ALARM_ASSIGNER(Int32, RetryCount, retryCount)
133 TRANS_ALARM_ASSIGNER(Int32, RetryReason, retryReason)
134 TRANS_ALARM_ASSIGNER(String, ConflictName, conflictName)
135 TRANS_ALARM_ASSIGNER(String, ConflictedName, conflictedName)
136 TRANS_ALARM_ASSIGNER(String, OccupyedName, occupyedName)
137 TRANS_ALARM_ASSIGNER(String, PermissionName, permissionName)
138 TRANS_ALARM_ASSIGNER(AnonymizeString, AlarmSessionName, sessionName)
139
140 #define TRANS_ALARM_ASSIGNER_SIZE 20 // Size of g_transAlarmAssigners
141 static const HiSysEventParamAssigner g_transAlarmAssigners[] = {
142 { "STAGE_RES", HISYSEVENT_INT32, TransAssignerAlarmResult },
143 { "ERROR_CODE", HISYSEVENT_INT32, TransAssignerAlarmReason },
144 { "CALLER_PID", HISYSEVENT_INT32, TransAssignerCallerPid },
145 { "LINK_TYPE", HISYSEVENT_INT32, TransAssignerAlarmLinkType },
146 { "MIN_BW", HISYSEVENT_INT32, TransAssignerMinBw },
147 { "METHOD_ID", HISYSEVENT_INT32, TransAssignerMethodId },
148 { "DURATION", HISYSEVENT_INT32, TransAssignerDuration },
149 { "CUR_FLOW", HISYSEVENT_INT32, TransAssignerCurFlow },
150 { "LIMIT_FLOW", HISYSEVENT_INT32, TransAssignerLimitFlow },
151 { "LIMIT_TIME", HISYSEVENT_INT32, TransAssignerLimitTime },
152 { "OCCUPY_RES", HISYSEVENT_INT32, TransAssignerOccupyRes },
153 { "SYNC_TYPE", HISYSEVENT_INT32, TransAssignerSyncType },
154 { "SYNC_DATA", HISYSEVENT_INT32, TransAssignerSyncData },
155 { "RETRY_COUNT", HISYSEVENT_INT32, TransAssignerRetryCount },
156 { "RETRY_REASON", HISYSEVENT_INT32, TransAssignerRetryReason },
157 { "CONFLICT_NAME", HISYSEVENT_STRING, TransAssignerConflictName },
158 { "CONFLECTED_NAME", HISYSEVENT_STRING, TransAssignerConflictedName },
159 { "OCCUPYED_NAME", HISYSEVENT_STRING, TransAssignerOccupyedName },
160 { "PERMISSION_NAME", HISYSEVENT_STRING, TransAssignerPermissionName },
161 { "SESSION_NAME", HISYSEVENT_STRING, TransAssignerAlarmSessionName },
162 // Modification Note: remember updating TRANS_ALARM_ASSIGNER_SIZE
163 };
164
ConvertTransForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)165 static inline size_t ConvertTransForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
166 {
167 size_t validSize = 0;
168 if (form == NULL || form->transExtra == NULL) {
169 return validSize;
170 }
171 for (size_t i = 0; i < size; ++i) {
172 HiSysEventParamAssigner assigner = TRANS_ASSIGNERS[i];
173 if (assigner.Assign(assigner.name, assigner.type, form, ¶ms[validSize])) {
174 ++validSize;
175 }
176 }
177 return validSize;
178 }
179
ConvertTransAlarmForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)180 static inline size_t ConvertTransAlarmForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
181 {
182 size_t validSize = 0;
183 if (form == NULL || form->transAlarmExtra == NULL) {
184 return validSize;
185 }
186 for (size_t i = 0; i < size; ++i) {
187 HiSysEventParamAssigner assigner = g_transAlarmAssigners[i];
188 if (assigner.Assign(assigner.name, assigner.type, form, ¶ms[validSize])) {
189 ++validSize;
190 }
191 }
192 return validSize;
193 }
194
195 #ifdef __cplusplus
196 }
197 #endif /* __cplusplus */
198 #endif // TRANS_EVENT_CONVERTER_H
199