1#include "data_confirm.hpp"
2#include "data_request.hpp"
9DataConfirm& operator ^=(DataConfirm& lhs, DataConfirm::ResultCode rhs)
11 if (rhs != DataConfirm::ResultCode::Accepted) {
12 lhs.result_code = rhs;
17DataConfirm::ResultCode validate_data_request(
const DataRequest& req,
const MIB& mib)
19 DataConfirm::ResultCode result = DataConfirm::ResultCode::Rejected_Unspecified;
22 if (req.maximum_lifetime > mib.itsGnMaxPacketLifetime) {
23 result = DataConfirm::ResultCode::Rejected_Max_Lifetime;
24 }
else if (req.repetition && req.repetition->interval < mib.itsGnMinPacketRepetitionInterval) {
25 result = DataConfirm::ResultCode::Rejected_Min_Repetition_Interval;
27 result = DataConfirm::ResultCode::Accepted;
33DataConfirm::ResultCode validate_data_request(
const DataRequestWithArea& req,
const MIB& mib)
35 if (area_size(req.destination) > mib.itsGnMaxGeoAreaSize) {
36 return DataConfirm::ResultCode::Rejected_Max_Geo_Area_Size;
38 return validate_data_request(
static_cast<const DataRequest&
>(req), mib);
42DataConfirm::ResultCode validate_payload(
const std::unique_ptr<DownPacket>& payload,
const MIB& mib)
44 DataConfirm::ResultCode result = DataConfirm::ResultCode::Rejected_Unspecified;
48 }
else if (payload->size() > mib.itsGnMaxSduSize) {
49 result = DataConfirm::ResultCode::Rejected_Max_SDU_Size;
51 result = DataConfirm::ResultCode::Accepted;