Left: | ||
Right: |
LEFT | RIGHT |
---|---|
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ | 1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
2 /* | 2 /* |
3 * Copyright (c) 2005,2006 INRIA | 3 * Copyright (c) 2005,2006 INRIA |
4 * | 4 * |
5 * This program is free software; you can redistribute it and/or modify | 5 * This program is free software; you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 2 as | 6 * it under the terms of the GNU General Public License version 2 as |
7 * published by the Free Software Foundation; | 7 * published by the Free Software Foundation; |
8 * | 8 * |
9 * This program is distributed in the hope that it will be useful, | 9 * This program is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
131 // rather than calling Create because the copy constructor | 131 // rather than calling Create because the copy constructor |
132 // is private. | 132 // is private. |
133 return Ptr<Packet> (new Packet (*this), false); | 133 return Ptr<Packet> (new Packet (*this), false); |
134 } | 134 } |
135 | 135 |
136 Packet::Packet () | 136 Packet::Packet () |
137 : m_buffer (), | 137 : m_buffer (), |
138 m_byteTagList (), | 138 m_byteTagList (), |
139 m_packetTagList (), | 139 m_packetTagList (), |
140 m_metadata (m_globalUid, 0), | 140 m_metadata (m_globalUid, 0), |
141 m_nixVector (0), | |
141 m_refCount (1) | 142 m_refCount (1) |
142 { | 143 { |
143 m_globalUid++; | 144 m_globalUid++; |
144 } | 145 } |
145 | 146 |
146 Packet::Packet (const Packet &o) | 147 Packet::Packet (const Packet &o) |
147 : m_buffer (o.m_buffer), | 148 : m_buffer (o.m_buffer), |
148 m_byteTagList (o.m_byteTagList), | 149 m_byteTagList (o.m_byteTagList), |
149 m_packetTagList (o.m_packetTagList), | 150 m_packetTagList (o.m_packetTagList), |
150 m_metadata (o.m_metadata), | 151 m_metadata (o.m_metadata), |
151 m_refCount (1) | 152 m_refCount (1) |
152 {} | 153 { |
154 o.m_nixVector ? m_nixVector = o.m_nixVector->Copy ()· | |
155 : m_nixVector = 0; | |
156 } | |
153 | 157 |
154 Packet & | 158 Packet & |
155 Packet::operator = (const Packet &o) | 159 Packet::operator = (const Packet &o) |
156 { | 160 { |
157 if (this == &o) | 161 if (this == &o) |
158 { | 162 { |
159 return *this; | 163 return *this; |
160 } | 164 } |
161 m_buffer = o.m_buffer; | 165 m_buffer = o.m_buffer; |
162 m_byteTagList = o.m_byteTagList; | 166 m_byteTagList = o.m_byteTagList; |
163 m_packetTagList = o.m_packetTagList; | 167 m_packetTagList = o.m_packetTagList; |
164 m_metadata = o.m_metadata; | 168 m_metadata = o.m_metadata; |
169 o.m_nixVector ? m_nixVector = o.m_nixVector->Copy ()· | |
170 : m_nixVector = 0; | |
165 return *this; | 171 return *this; |
166 } | 172 } |
167 | 173 |
168 Packet::Packet (uint32_t size) | 174 Packet::Packet (uint32_t size) |
169 : m_buffer (size), | 175 : m_buffer (size), |
170 m_byteTagList (), | 176 m_byteTagList (), |
171 m_packetTagList (), | 177 m_packetTagList (), |
172 m_metadata (m_globalUid, size), | 178 m_metadata (m_globalUid, size), |
179 m_nixVector (0), | |
173 m_refCount (1) | 180 m_refCount (1) |
174 { | 181 { |
175 m_globalUid++; | 182 m_globalUid++; |
176 } | 183 } |
177 Packet::Packet (uint8_t const*buffer, uint32_t size) | 184 Packet::Packet (uint8_t const*buffer, uint32_t size) |
178 : m_buffer (), | 185 : m_buffer (), |
179 m_byteTagList (), | 186 m_byteTagList (), |
180 m_packetTagList (), | 187 m_packetTagList (), |
181 m_metadata (m_globalUid, size), | 188 m_metadata (m_globalUid, size), |
189 m_nixVector (0), | |
182 m_refCount (1) | 190 m_refCount (1) |
183 { | 191 { |
184 m_globalUid++; | 192 m_globalUid++; |
185 m_buffer.AddAtStart (size); | 193 m_buffer.AddAtStart (size); |
186 Buffer::Iterator i = m_buffer.Begin (); | 194 Buffer::Iterator i = m_buffer.Begin (); |
187 i.Write (buffer, size); | 195 i.Write (buffer, size); |
188 } | 196 } |
189 | 197 |
190 Packet::Packet (const Buffer &buffer, const ByteTagList &byteTagList,· | 198 Packet::Packet (const Buffer &buffer, const ByteTagList &byteTagList,· |
191 const PacketTagList &packetTagList, const PacketMetadata &metada ta) | 199 const PacketTagList &packetTagList, const PacketMetadata &metada ta) |
192 : m_buffer (buffer), | 200 : m_buffer (buffer), |
193 m_byteTagList (byteTagList), | 201 m_byteTagList (byteTagList), |
194 m_packetTagList (packetTagList), | 202 m_packetTagList (packetTagList), |
195 m_metadata (metadata), | 203 m_metadata (metadata), |
204 m_nixVector (0), | |
196 m_refCount (1) | 205 m_refCount (1) |
197 { | 206 {} |
198 } | |
199 | 207 |
200 Ptr<Packet> | 208 Ptr<Packet> |
201 Packet::CreateFragment (uint32_t start, uint32_t length) const | 209 Packet::CreateFragment (uint32_t start, uint32_t length) const |
202 { | 210 { |
203 NS_LOG_FUNCTION (this << start << length); | 211 NS_LOG_FUNCTION (this << start << length); |
204 Buffer buffer = m_buffer.CreateFragment (start, length); | 212 Buffer buffer = m_buffer.CreateFragment (start, length); |
205 NS_ASSERT (m_buffer.GetSize () >= start + length); | 213 NS_ASSERT (m_buffer.GetSize () >= start + length); |
206 uint32_t end = m_buffer.GetSize () - (start + length); | 214 uint32_t end = m_buffer.GetSize () - (start + length); |
207 PacketMetadata metadata = m_metadata.CreateFragment (start, end); | 215 PacketMetadata metadata = m_metadata.CreateFragment (start, end); |
208 // again, call the constructor directly rather than | 216 // again, call the constructor directly rather than |
209 // through Create because it is private. | 217 // through Create because it is private. |
210 return Ptr<Packet> (new Packet (buffer, m_byteTagList, m_packetTagList, metada ta), false); | 218 return Ptr<Packet> (new Packet (buffer, m_byteTagList, m_packetTagList, metada ta), false); |
211 } | 219 } |
212 | 220 |
213 void | 221 void |
214 Packet::SetNixVector (Ptr<NixVector> nixVector) | 222 Packet::SetNixVector (Ptr<NixVector> nixVector) |
craigdo
2009/09/11 22:38:17
Again, I'm concerned about this kind of specific m
Josh Pelkey
2009/09/12 18:34:14
These functions only exist because there wasn't a
| |
215 { | 223 { |
216 m_metadata.SetNixVector (nixVector); | 224 m_nixVector = nixVector; |
217 } | 225 } |
218 | 226 |
219 Ptr<NixVector> | 227 Ptr<NixVector> |
220 Packet::GetNixVector (void) const | 228 Packet::GetNixVector (void) const |
221 { | 229 { |
222 return m_metadata.GetNixVector (); | 230 return m_nixVector; |
223 }· | 231 }· |
224 | 232 |
225 uint32_t· | 233 uint32_t· |
226 Packet::GetSize (void) const | 234 Packet::GetSize (void) const |
227 { | 235 { |
228 return m_buffer.GetSize (); | 236 return m_buffer.GetSize (); |
229 } | 237 } |
230 | 238 |
231 void | 239 void |
232 Packet::AddHeader (const Header &header) | 240 Packet::AddHeader (const Header &header) |
(...skipping 880 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1113 tmp->PeekData (); | 1121 tmp->PeekData (); |
1114 CHECK (tmp, 1, E (20, 1, 1001)); | 1122 CHECK (tmp, 1, E (20, 1, 1001)); |
1115 } | 1123 } |
1116 | 1124 |
1117 return result; | 1125 return result; |
1118 } | 1126 } |
1119 | 1127 |
1120 } // namespace ns3 | 1128 } // namespace ns3 |
1121 | 1129 |
1122 #endif /* RUN_SELF_TESTS */ | 1130 #endif /* RUN_SELF_TESTS */ |
LEFT | RIGHT |