1 /*
2 * Copyright (c) 2021 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 #include "header_converter.h"
17 #include "endian_convert.h"
18 #include "communicator_type_define.h"
19
20 namespace DistributedDB {
ConvertHostToNet(const CommPhyHeader & headerOriginal,CommPhyHeader & headerConverted)21 void HeaderConverter::ConvertHostToNet(const CommPhyHeader &headerOriginal, CommPhyHeader &headerConverted)
22 {
23 headerConverted.magic = HostToNet(headerOriginal.magic);
24 headerConverted.version = HostToNet(headerOriginal.version);
25 headerConverted.packetLen = HostToNet(headerOriginal.packetLen);
26 headerConverted.checkSum = HostToNet(headerOriginal.checkSum);
27 headerConverted.sourceId = HostToNet(headerOriginal.sourceId);
28 headerConverted.frameId = HostToNet(headerOriginal.frameId);
29 headerConverted.packetType = HostToNet(headerOriginal.packetType);
30 headerConverted.paddingLen = HostToNet(headerOriginal.paddingLen);
31 headerConverted.dbIntVer = HostToNet(headerOriginal.dbIntVer);
32 }
33
ConvertHostToNet(const CommPhyOptHeader & headerOriginal,CommPhyOptHeader & headerConverted)34 void HeaderConverter::ConvertHostToNet(const CommPhyOptHeader &headerOriginal, CommPhyOptHeader &headerConverted)
35 {
36 headerConverted.frameLen = HostToNet(headerOriginal.frameLen);
37 headerConverted.fragCount = HostToNet(headerOriginal.fragCount);
38 headerConverted.fragNo = HostToNet(headerOriginal.fragNo);
39 }
40
ConvertHostToNet(const CommDivergeHeader & headerOriginal,CommDivergeHeader & headerConverted)41 void HeaderConverter::ConvertHostToNet(const CommDivergeHeader &headerOriginal, CommDivergeHeader &headerConverted)
42 {
43 ConvertNetToHost(headerOriginal, headerConverted);
44 }
45
ConvertHostToNet(const MessageHeader & headerOriginal,MessageHeader & headerConverted)46 void HeaderConverter::ConvertHostToNet(const MessageHeader &headerOriginal, MessageHeader &headerConverted)
47 {
48 ConvertNetToHost(headerOriginal, headerConverted);
49 }
50
ConvertNetToHost(const CommPhyHeader & headerOriginal,CommPhyHeader & headerConverted)51 void HeaderConverter::ConvertNetToHost(const CommPhyHeader &headerOriginal, CommPhyHeader &headerConverted)
52 {
53 ConvertHostToNet(headerOriginal, headerConverted);
54 }
55
ConvertNetToHost(const CommPhyOptHeader & headerOriginal,CommPhyOptHeader & headerConverted)56 void HeaderConverter::ConvertNetToHost(const CommPhyOptHeader &headerOriginal, CommPhyOptHeader &headerConverted)
57 {
58 ConvertHostToNet(headerOriginal, headerConverted);
59 }
60
ConvertNetToHost(const CommDivergeHeader & headerOriginal,CommDivergeHeader & headerConverted)61 void HeaderConverter::ConvertNetToHost(const CommDivergeHeader &headerOriginal, CommDivergeHeader &headerConverted)
62 {
63 headerConverted.version = NetToHost(headerOriginal.version);
64 headerConverted.reserved = NetToHost(headerOriginal.reserved);
65 headerConverted.payLoadLen = NetToHost(headerOriginal.payLoadLen);
66 // commLabel now is array of uint8_t, so no need to do endian convert, but we need to copy it here
67 for (unsigned int i = 0; i < COMM_LABEL_LENGTH; i++) {
68 headerConverted.commLabel[i] = headerOriginal.commLabel[i];
69 }
70 }
71
ConvertNetToHost(const MessageHeader & headerOriginal,MessageHeader & headerConverted)72 void HeaderConverter::ConvertNetToHost(const MessageHeader &headerOriginal, MessageHeader &headerConverted)
73 {
74 headerConverted.version = NetToHost(headerOriginal.version);
75 headerConverted.messageType = NetToHost(headerOriginal.messageType);
76 headerConverted.messageId = NetToHost(headerOriginal.messageId);
77 headerConverted.sessionId = NetToHost(headerOriginal.sessionId);
78 headerConverted.sequenceId = NetToHost(headerOriginal.sequenceId);
79 headerConverted.errorNo = NetToHost(headerOriginal.errorNo);
80 headerConverted.dataLen = NetToHost(headerOriginal.dataLen);
81 }
82 } // namespace DistributedDB