Download this file

SDU.cc    96 lines (80 with data), 2.1 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//
/**
* @file SDU.cc
* @author Marcel Marek (imarek@fit.vutbr.cz)
* @date Apr 29, 2014
* @brief
* @detail
*/
#include <SDU.h>
//SDU::SDU()
//{
// this->offset = this->size = 0;
//
//}
unsigned int SDU::getSize() const
{
return size_var;
}
unsigned int SDU::getRestSize()const
{
return size_var - offset_var;
}
void SDU::setSize(unsigned int size)
{
if(userData !=NULL){
unsigned char *tmp = new unsigned char[size];
memcpy(tmp,userData, (this->size_var < size) ? this->size_var : size);
this->size_var = size;
free(userData);
userData = tmp;
}else{
this->size_var = size;
userData = new unsigned char[size];
}
}
unsigned char* SDU::getUserData() const
{
return &userData[offset_var];
}
const unsigned char* SDU::getUserData(unsigned int size)
{
offset_var += size;
return &userData[offset_var - size];
}
void SDU::setUserData(unsigned char* userData, unsigned int size)
{
if(this->userData != NULL){
free(this->userData);
this->offset_var = 0;
}
this->size_var = size;
this->userData = new unsigned char[size];
memcpy(this->userData, userData, size);
// this->userData = userData;
}
bool SDU::addUserData(CDAPMessage* msg){
// if(msg->getSize() > MAXSDUSIZE){
// return false;
// }
//TODO A1 check current SDU size
this->mUserData_var.push_back(msg);
return true;
}
SDU::~SDU()
{
// TODO Auto-generated destructor stub
}