Hybrid ICN (hICN) plugin  v21.06-rc0-4-g18fa668
message.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017-2019 Cisco and/or its affiliates.
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 
21 #ifndef message_h
22 #define message_h
23 
24 #include <hicn/hicn-light/config.h>
25 #include <hicn/core/logger.h>
26 #include <hicn/core/messagePacketType.h>
27 #include <hicn/core/streamBuffer.h>
28 
29 #include <hicn/core/name.h>
30 
31 #include <parc/algol/parc_EventBuffer.h>
32 #include <parc/algol/parc_EventQueue.h>
33 
34 #include <hicn/utils/address.h>
35 
36 #include <hicn/core/ticks.h>
37 
38 struct message;
39 typedef struct message Message;
40 
47 Message *message_CreateFromEventBuffer(PARCEventBuffer *data, size_t dataLength,
48  unsigned ingressConnectionId,
49  Ticks receiveTime, Logger *logger);
50 
56 Message *message_CreateFromByteArray(unsigned connid, uint8_t *pckt,
57  MessagePacketType type, Ticks receiveTime,
58  Logger *logger);
59 
65 Message *message_Acquire(const Message *message);
66 
70 void message_Release(Message **messagePtr);
71 
76 bool message_Write(PARCEventQueue *parcEventQueue, const Message *message);
77 
81 size_t message_Length(const Message *message);
82 
83 bool message_HasWldr(const Message *message);
84 
85 bool message_IsWldrNotification(const Message *message);
86 
87 void message_ResetWldrLabel(Message *message);
88 
89 unsigned message_GetWldrLabel(const Message *message);
90 
91 unsigned message_GetWldrExpectedLabel(const Message *message);
92 
93 unsigned message_GetWldrLastReceived(const Message *message);
94 
95 void message_SetWldrLabel(Message *message, uint16_t label);
96 
97 Message *message_CreateWldrNotification(Message *original, uint16_t expected,
98  uint16_t lastReceived);
102 unsigned message_GetIngressConnectionId(const Message *message);
103 
104 void message_SetIngressConnectionId(Message *message, unsigned conn);
105 
109 Ticks message_GetReceiveTime(const Message *message);
110 
114 MessagePacketType message_GetType(const Message *message);
115 
116 uint32_t message_GetPathLabel(const Message *message);
117 void message_SetPathLabel(Message *message, uint32_t label);
118 void message_UpdatePathLabel(Message *message, uint8_t outFace);
119 void message_ResetPathLabel(Message *message);
120 
121 // ===========================================================
122 // Accessors used to index and compare messages
123 
133 Name *message_GetName(const Message *message);
134 
144 bool message_HasInterestLifetime(const Message *message);
145 
157 uint64_t message_GetInterestLifetimeTicks(const Message *message);
158 
162 bool message_HasContentExpiryTime(const Message *message);
163 
167 uint64_t message_GetContentExpiryTimeTicks(const Message *message);
168 
178 const uint8_t *message_FixedHeader(const Message *message);
179 
180 #endif // message_h
message_GetInterestLifetimeTicks
uint64_t message_GetInterestLifetimeTicks(const Message *message)
logger.h
Logger for the hicn-light forwarder.
message_Write
bool message_Write(PARCEventQueue *parcEventQueue, const Message *message)
message_CreateFromEventBuffer
Message * message_CreateFromEventBuffer(PARCEventBuffer *data, size_t dataLength, unsigned ingressConnectionId, Ticks receiveTime, Logger *logger)
message_FixedHeader
const uint8_t * message_FixedHeader(const Message *message)
message_GetContentExpiryTimeTicks
uint64_t message_GetContentExpiryTimeTicks(const Message *message)
message_Release
void message_Release(Message **messagePtr)
message_GetIngressConnectionId
unsigned message_GetIngressConnectionId(const Message *message)
message_GetReceiveTime
Ticks message_GetReceiveTime(const Message *message)
message_Acquire
Message * message_Acquire(const Message *message)
message_HasContentExpiryTime
bool message_HasContentExpiryTime(const Message *message)
message_GetName
Name * message_GetName(const Message *message)
message_HasInterestLifetime
bool message_HasInterestLifetime(const Message *message)
message_Length
size_t message_Length(const Message *message)
message_CreateFromByteArray
Message * message_CreateFromByteArray(unsigned connid, uint8_t *pckt, MessagePacketType type, Ticks receiveTime, Logger *logger)
message_GetType
MessagePacketType message_GetType(const Message *message)