3 /// USB Blackberry bulk protocol API
7 Copyright (C) 2005-2007, Net Direct Inc. (http://www.netdirect.ca/)
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU General Public License in the COPYING file at the
19 root directory of this project for more details.
23 #include "protostructs.h"
31 namespace Barry
{ namespace Protocol
{
33 void CheckSize(const Data
&packet
, size_t requiredsize
)
35 const Packet
*p
= (const Packet
*) packet
.GetData();
37 // when packets are larger than 0xFFFF bytes, packet->size is no
38 // longer reliable, so we go with the Data class size
39 if( (btohs(p
->size
) != packet
.GetSize() && packet
.GetSize() <= 0xFFFF) ||
40 packet
.GetSize() < requiredsize
)
43 std::ostringstream oss
;
44 oss
<< "Bad packet size. Packet: " << btohs(p
->size
)
45 << ". DataSize(): " << packet
.GetSize()
46 << ". Required size: " << requiredsize
;
49 throw Error(oss
.str());
53 unsigned int GetSize(const Data
&packet
)
57 // when packets are larger than 0xFFFF bytes, packet->size is no
58 // longer reliable, so we go with the Data class size
59 if( packet
.GetSize() > 0xFFFF ) {
60 return packet
.GetSize();
63 const Packet
*p
= (const Packet
*) packet
.GetData();
64 return btohs(p
->size
);
68 }} // namespace Barry::Protocol