• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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, &param) &&                                                \
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(Uint8, TalkieFreq, talkieFreq)
38 TRANS_ASSIGNER(Uint8, TalkieType, talkieType)
39 TRANS_ASSIGNER(Uint8, TalkieLevel, talkieLevel)
40 TRANS_ASSIGNER(Errcode, Result, result)
41 TRANS_ASSIGNER(Errcode, Errcode, errcode)
42 TRANS_ASSIGNER(AnonymizeString, SocketName, socketName)
43 TRANS_ASSIGNER(Int32, DataType, dataType)
44 TRANS_ASSIGNER(Int32, ChannelType, channelType)
45 TRANS_ASSIGNER(Int32, LaneId, laneId)
46 TRANS_ASSIGNER(Int32, PreferLinkType, preferLinkType)
47 TRANS_ASSIGNER(Int32, LaneTransType, laneTransType)
48 TRANS_ASSIGNER(Int32, ChannelId, channelId)
49 TRANS_ASSIGNER(Int32, RequestId, requestId)
50 TRANS_ASSIGNER(Int32, ConnectionId, connectionId)
51 TRANS_ASSIGNER(Int32, LinkType, linkType)
52 TRANS_ASSIGNER(Int32, AuthId, authId)
53 TRANS_ASSIGNER(Int32, SocketFd, socketFd)
54 TRANS_ASSIGNER(Int32, CostTime, costTime)
55 TRANS_ASSIGNER(Int32, ChannelScore, channelScore)
56 TRANS_ASSIGNER(Int32, PeerChannelId, peerChannelId)
57 TRANS_ASSIGNER(Int32, BtFlow, btFlow)
58 TRANS_ASSIGNER(Int32, PagingId, pagingId)
59 TRANS_ASSIGNER(Int32, CallPid, callPid)
60 TRANS_ASSIGNER(Int32, SaId, saId)
61 TRANS_ASSIGNER(Int32,  BusinessFlag, businessFlag)
62 TRANS_ASSIGNER(String, GroupId, groupId)
63 TRANS_ASSIGNER(String, SubGroupId, subGroupId)
64 TRANS_ASSIGNER(AnonymizeString, PeerNetworkId, peerNetworkId)
65 TRANS_ASSIGNER(AnonymizeString, PeerUdid, peerUdid)
66 TRANS_ASSIGNER(String, PeerDevVer, peerDevVer)
67 TRANS_ASSIGNER(AnonymizeString, LocalUdid, localUdid)
68 TRANS_ASSIGNER(String, CallerPkg, callerPkg)
69 TRANS_ASSIGNER(String, CalleePkg, calleePkg)
70 TRANS_ASSIGNER(String, FirstTokenName, firstTokenName)
71 TRANS_ASSIGNER(AnonymizeString, CallerAccountId, callerAccountId)
72 TRANS_ASSIGNER(AnonymizeString, CalleeAccountId, calleeAccountId)
73 TRANS_ASSIGNER(Uint64, FirstTokenId, firstTokenId)
74 TRANS_ASSIGNER(Int32,  FirstTokenType, firstTokenType)
75 TRANS_ASSIGNER(LongString,  TrafficStats, trafficStats)
76 TRANS_ASSIGNER(Int32,  OsType, osType)
77 TRANS_ASSIGNER(Int32,  DeviceState, deviceState)
78 TRANS_ASSIGNER(Int32,  BusinessId, businessId)
79 TRANS_ASSIGNER(Int32,  BusinessType, businessType)
80 TRANS_ASSIGNER(Int32,  SessionId, sessionId)
81 TRANS_ASSIGNER(Int32,  MinBW, minBW)
82 TRANS_ASSIGNER(Int32,  MaxLatency, maxLatency)
83 TRANS_ASSIGNER(Int32,  MinLatency, minLatency)
84 TRANS_ASSIGNER(Uint8,  LocalStaChload, localStaChload)
85 TRANS_ASSIGNER(Uint8,  RemoteStaChload, remoteStaChload)
86 TRANS_ASSIGNER(Uint8,  LocalHmlChload, localHmlChload)
87 TRANS_ASSIGNER(Uint8,  RemoteHmlChload, remoteHmlChload)
88 TRANS_ASSIGNER(Uint8,  LocalP2pChload, localP2pChload)
89 TRANS_ASSIGNER(Uint8,  RemoteP2pChload, remoteP2pChload)
90 TRANS_ASSIGNER(Uint8,  LocalStaChannel, localStaChannel)
91 TRANS_ASSIGNER(Uint8,  RemoteStaChannel, remoteStaChannel)
92 TRANS_ASSIGNER(Uint8,  HmlChannel, hmlChannel)
93 TRANS_ASSIGNER(Uint8,  LocalP2pChannel, localP2pChannel)
94 TRANS_ASSIGNER(Uint8,  RemoteP2pChannel, remoteP2pChannel)
95 TRANS_ASSIGNER(Int32,  LocalIsDbac, localIsDbac)
96 TRANS_ASSIGNER(Int32,  RemoteIsDbac, remoteIsDbac)
97 TRANS_ASSIGNER(Int32,  LocalIsDbdc, localIsDbdc)
98 TRANS_ASSIGNER(Int32,  RemoteIsDbdc, remoteIsDbdc)
99 TRANS_ASSIGNER(String, ConCurrentId, conCurrentId)
100 
101 #define TRANS_ASSIGNER_SIZE 63 // Size of TRANS_ASSIGNERS
102 static const HiSysEventParamAssigner TRANS_ASSIGNERS[] = {
103     { "TALKIE_FREQ",         HISYSEVENT_UINT8,    TransAssignerTalkieFreq      },
104     { "TALKIE_TYPE",         HISYSEVENT_UINT8,    TransAssignerTalkieType      },
105     { "TALKIE_LEVEL",        HISYSEVENT_UINT8,    TransAssignerTalkieLevel     },
106     { "STAGE_RES",           HISYSEVENT_INT32,    TransAssignerResult          },
107     { "ERROR_CODE",          HISYSEVENT_INT32,    TransAssignerErrcode         },
108     { "SOCKET_NAME",         HISYSEVENT_STRING,   TransAssignerSocketName      },
109     { "DATA_TYPE",           HISYSEVENT_INT32,    TransAssignerDataType        },
110     { "LOGIC_CHAN_TYPE",     HISYSEVENT_INT32,    TransAssignerChannelType     },
111     { "LANE_ID",             HISYSEVENT_INT32,    TransAssignerLaneId          },
112     { "PREFER_LINK_TYPE",    HISYSEVENT_INT32,    TransAssignerPreferLinkType  },
113     { "LANE_TRANS_TYPE",     HISYSEVENT_INT32,    TransAssignerLaneTransType   },
114     { "CHAN_ID",             HISYSEVENT_INT32,    TransAssignerChannelId       },
115     { "REQ_ID",              HISYSEVENT_INT32,    TransAssignerRequestId       },
116     { "CONN_ID",             HISYSEVENT_INT32,    TransAssignerConnectionId    },
117     { "LINK_TYPE",           HISYSEVENT_INT32,    TransAssignerLinkType        },
118     { "AUTH_ID",             HISYSEVENT_INT32,    TransAssignerAuthId          },
119     { "SOCKET_FD",           HISYSEVENT_INT32,    TransAssignerSocketFd        },
120     { "COST_TIME",           HISYSEVENT_INT32,    TransAssignerCostTime        },
121     { "CHAN_SCORE",          HISYSEVENT_INT32,    TransAssignerChannelScore    },
122     { "PEER_CHAN_ID",        HISYSEVENT_INT32,    TransAssignerPeerChannelId   },
123     { "BT_FLOW",             HISYSEVENT_INT32,    TransAssignerBtFlow          },
124     { "PAGING_ID",           HISYSEVENT_INT32,    TransAssignerPagingId        },
125     { "CALLER_PID",          HISYSEVENT_INT32,    TransAssignerCallPid         },
126     { "SA_ID",               HISYSEVENT_INT32,    TransAssignerSaId            },
127     { "BUSINESS_FLAG",       HISYSEVENT_INT32,    TransAssignerBusinessFlag    },
128     { "GROUP_ID",            HISYSEVENT_STRING,   TransAssignerGroupId         },
129     { "SUB_GROUP_ID",        HISYSEVENT_STRING,   TransAssignerSubGroupId      },
130     { "PEER_NET_ID",         HISYSEVENT_STRING,   TransAssignerPeerNetworkId   },
131     { "PEER_UDID",           HISYSEVENT_STRING,   TransAssignerPeerUdid        },
132     { "PEER_DEV_VER",        HISYSEVENT_STRING,   TransAssignerPeerDevVer      },
133     { "LOCAL_UDID",          HISYSEVENT_STRING,   TransAssignerLocalUdid       },
134     { "HOST_PKG",            HISYSEVENT_STRING,   TransAssignerCallerPkg       },
135     { "TO_CALL_PKG",         HISYSEVENT_STRING,   TransAssignerCalleePkg       },
136     { "FIRST_TOKEN_NAME",    HISYSEVENT_STRING,   TransAssignerFirstTokenName  },
137     { "CALLER_ACCOUNT_ID",   HISYSEVENT_STRING,   TransAssignerCallerAccountId },
138     { "CALLEE_ACCOUNT_ID",   HISYSEVENT_STRING,   TransAssignerCalleeAccountId },
139     { "FIRST_TOKEN_ID",      HISYSEVENT_UINT64,   TransAssignerFirstTokenId    },
140     { "FIRST_TOKEN_TYPE",    HISYSEVENT_INT32,    TransAssignerFirstTokenType  },
141     { "TRAFFIC_STATS",       HISYSEVENT_STRING,   TransAssignerTrafficStats    },
142     { "OS_TYPE",             HISYSEVENT_INT32,    TransAssignerOsType          },
143     { "DEVICE_STATE",        HISYSEVENT_INT32,    TransAssignerDeviceState     },
144     { "BUSINESS_ID",         HISYSEVENT_INT32,    TransAssignerBusinessId      },
145     { "BUSINESS_TYPE",       HISYSEVENT_INT32,    TransAssignerBusinessType    },
146     { "SESSION_ID",          HISYSEVENT_INT32,    TransAssignerSessionId       },
147     { "MIN_BW",              HISYSEVENT_INT32,    TransAssignerMinBW           },
148     { "MAX_LATENCY",         HISYSEVENT_INT32,    TransAssignerMaxLatency      },
149     { "MIN_LATENCY",         HISYSEVENT_INT32,    TransAssignerMinLatency      },
150     { "LOCAL_STA_CHLOAD",    HISYSEVENT_UINT8,    TransAssignerLocalStaChload  },
151     { "REMOTE_STA_CHLOAD",   HISYSEVENT_UINT8,    TransAssignerRemoteStaChload },
152     { "LOCAL_HML_CHLOAD",    HISYSEVENT_UINT8,    TransAssignerLocalHmlChload  },
153     { "REMOTE_HML_CHLOAD",   HISYSEVENT_UINT8,    TransAssignerRemoteHmlChload },
154     { "LOCAL_P2P_CHLOAD",    HISYSEVENT_UINT8,    TransAssignerLocalP2pChload  },
155     { "REMOTE_P2P_CHLOAD",   HISYSEVENT_UINT8,    TransAssignerRemoteP2pChload },
156     { "LOCAL_STA_CHANNEL",   HISYSEVENT_UINT8,    TransAssignerLocalStaChannel },
157     { "REMOTE_STA_CHANNEL",  HISYSEVENT_UINT8,    TransAssignerRemoteStaChannel},
158     { "HML_CHANNEL",         HISYSEVENT_UINT8,    TransAssignerHmlChannel      },
159     { "LOCAL_P2P_CHANNEL",   HISYSEVENT_UINT8,    TransAssignerLocalP2pChannel },
160     { "REMOTE_P2P_CHANNEL",  HISYSEVENT_UINT8,    TransAssignerRemoteP2pChannel},
161     { "LOCAL_IS_DBAC",       HISYSEVENT_INT32,    TransAssignerLocalIsDbac     },
162     { "REMOTE_IS_DBAC",      HISYSEVENT_INT32,    TransAssignerRemoteIsDbac    },
163     { "LOCAL_IS_DBDC",       HISYSEVENT_INT32,    TransAssignerLocalIsDbdc     },
164     { "REMOTE_IS_DBDC",      HISYSEVENT_INT32,    TransAssignerRemoteIsDbdc    },
165     { "CONCURRENT_ID",       HISYSEVENT_STRING,   TransAssignerConCurrentId    },
166     // Modification Note: remember updating TRANS_ASSIGNER_SIZE
167 };
168 
169 #define TRANS_ALARM_ASSIGNER(type, fieldName, field)                                                          \
170     static inline bool TransAssigner##fieldName(                                                              \
171         const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
172     {                                                                                                         \
173         if (Assigner##type(form->transAlarmExtra->field, &param) &&                                           \
174             CopyString(param->name, eventName, MAX_LENGTH_OF_PARAM_NAME)) {                                   \
175             param->t = paramType;                                                                             \
176             return true;                                                                                      \
177         }                                                                                                     \
178         return false;                                                                                         \
179     }
180 
181 TRANS_ALARM_ASSIGNER(Errcode, AlarmResult, result)
182 TRANS_ALARM_ASSIGNER(Errcode, AlarmReason, errcode)
183 TRANS_ALARM_ASSIGNER(Int32, CallerPid, callerPid)
184 TRANS_ALARM_ASSIGNER(Int32, AlarmLinkType, linkType)
185 TRANS_ALARM_ASSIGNER(Int32, MinBw, minBw)
186 TRANS_ALARM_ASSIGNER(Int32, MethodId, methodId)
187 TRANS_ALARM_ASSIGNER(Int32, Duration, duration)
188 TRANS_ALARM_ASSIGNER(Int32, CurFlow, curFlow)
189 TRANS_ALARM_ASSIGNER(Int32, LimitFlow, limitFlow)
190 TRANS_ALARM_ASSIGNER(Int32, LimitTime, limitTime)
191 TRANS_ALARM_ASSIGNER(Int32, OccupyRes, occupyRes)
192 TRANS_ALARM_ASSIGNER(Int32, SyncType, syncType)
193 TRANS_ALARM_ASSIGNER(Int32, SyncData, syncData)
194 TRANS_ALARM_ASSIGNER(Int32, RetryCount, retryCount)
195 TRANS_ALARM_ASSIGNER(Int32, RetryReason, retryReason)
196 TRANS_ALARM_ASSIGNER(String, ConflictName, conflictName)
197 TRANS_ALARM_ASSIGNER(String, ConflictedName, conflictedName)
198 TRANS_ALARM_ASSIGNER(String, OccupyedName, occupyedName)
199 TRANS_ALARM_ASSIGNER(String, PermissionName, permissionName)
200 TRANS_ALARM_ASSIGNER(AnonymizeString, AlarmSessionName, sessionName)
201 
202 #define TRANS_ALARM_ASSIGNER_SIZE 20 // Size of g_transAlarmAssigners
203 static const HiSysEventParamAssigner g_transAlarmAssigners[] = {
204     { "STAGE_RES",         HISYSEVENT_INT32,  TransAssignerAlarmResult            },
205     { "ERROR_CODE",        HISYSEVENT_INT32,  TransAssignerAlarmReason            },
206     { "CALLER_PID",        HISYSEVENT_INT32,  TransAssignerCallerPid              },
207     { "LINK_TYPE",         HISYSEVENT_INT32,  TransAssignerAlarmLinkType          },
208     { "MIN_BW",            HISYSEVENT_INT32,  TransAssignerMinBw                  },
209     { "METHOD_ID",         HISYSEVENT_INT32,  TransAssignerMethodId               },
210     { "DURATION",          HISYSEVENT_INT32,  TransAssignerDuration               },
211     { "CUR_FLOW",          HISYSEVENT_INT32,  TransAssignerCurFlow                },
212     { "LIMIT_FLOW",        HISYSEVENT_INT32,  TransAssignerLimitFlow              },
213     { "LIMIT_TIME",        HISYSEVENT_INT32,  TransAssignerLimitTime              },
214     { "OCCUPY_RES",        HISYSEVENT_INT32,  TransAssignerOccupyRes              },
215     { "SYNC_TYPE",         HISYSEVENT_INT32,  TransAssignerSyncType               },
216     { "SYNC_DATA",         HISYSEVENT_INT32,  TransAssignerSyncData               },
217     { "RETRY_COUNT",       HISYSEVENT_INT32,  TransAssignerRetryCount             },
218     { "RETRY_REASON",      HISYSEVENT_INT32,  TransAssignerRetryReason            },
219     { "CONFLICT_NAME",     HISYSEVENT_STRING, TransAssignerConflictName           },
220     { "CONFLECTED_NAME",   HISYSEVENT_STRING, TransAssignerConflictedName         },
221     { "OCCUPYED_NAME",     HISYSEVENT_STRING, TransAssignerOccupyedName           },
222     { "PERMISSION_NAME",   HISYSEVENT_STRING, TransAssignerPermissionName         },
223     { "SESSION_NAME",      HISYSEVENT_STRING,  TransAssignerAlarmSessionName      },
224     // Modification Note: remember updating TRANS_ALARM_ASSIGNER_SIZE
225 };
226 
ConvertTransForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)227 static inline size_t ConvertTransForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
228 {
229     size_t validSize = 0;
230     if (form == NULL || form->transExtra == NULL) {
231         return validSize;
232     }
233     for (size_t i = 0; i < size; ++i) {
234         HiSysEventParamAssigner assigner = TRANS_ASSIGNERS[i];
235         if (assigner.Assign(assigner.name, assigner.type, form, &params[validSize])) {
236             ++validSize;
237         }
238     }
239     return validSize;
240 }
241 
ConvertTransAlarmForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)242 static inline size_t ConvertTransAlarmForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
243 {
244     size_t validSize = 0;
245     if (form == NULL || form->transAlarmExtra == NULL) {
246         return validSize;
247     }
248     for (size_t i = 0; i < size; ++i) {
249         HiSysEventParamAssigner assigner = g_transAlarmAssigners[i];
250         if (assigner.Assign(assigner.name, assigner.type, form, &params[validSize])) {
251             ++validSize;
252         }
253     }
254     return validSize;
255 }
256 
257 #ifdef __cplusplus
258 }
259 #endif /* __cplusplus */
260 #endif // TRANS_EVENT_CONVERTER_H
261