Reduced minimum password retry level from 6 to 3
[barry/pauldeden.git] / src / r_servicebook.h
blob1761a34e763c5bfcf87a8f328238d2218258ac1b
1 ///
2 /// \file r_servicebook.h
3 /// Blackberry database record parser class for the
4 /// Service Book record.
5 ///
7 /*
8 Copyright (C) 2005-2008, Net Direct Inc. (http://www.netdirect.ca/)
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 2 of the License, or
13 (at your option) any later version.
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19 See the GNU General Public License in the COPYING file at the
20 root directory of this project for more details.
23 #ifndef __BARRY_RECORD_SERVICEBOOK_H__
24 #define __BARRY_RECORD_SERVICEBOOK_H__
26 #include "dll.h"
27 #include "record.h"
28 #include <iosfwd>
29 #include <string>
30 #include <vector>
31 #include <map>
32 #include <stdint.h>
34 namespace Barry {
37 // NOTE: All classes here must be container-safe! Perhaps add sorting
38 // operators in the future.
42 /// \addtogroup RecordParserClasses
43 /// @{
45 // This is a packed field, which is a group of fields packed in
46 // variable length records inside one larger field of a normal record.
47 class BXEXPORT ServiceBookConfig
49 public:
50 typedef std::vector<UnknownField> UnknownsType;
52 uint8_t Format;
54 UnknownsType Unknowns;
56 public:
57 const unsigned char* ParseField(const unsigned char *begin,
58 const unsigned char *end);
60 public:
61 ServiceBookConfig();
62 ~ServiceBookConfig();
64 // Parser / Builder API (see parser.h / builder.h)
65 void ParseHeader(const Data &data, size_t &offset);
66 void ParseFields(const Data &data, size_t &offset);
67 void BuildHeader(Data &data, size_t &offset) const;
68 void BuildFields(Data &data, size_t &offset) const;
70 void Clear();
72 void Dump(std::ostream &os) const;
75 BXEXPORT inline std::ostream& operator<<(std::ostream &os, const ServiceBookConfig &msg) {
76 msg.Dump(os);
77 return os;
81 class BXEXPORT ServiceBook
83 int NameType, DescType, UniqueIdType;
85 public:
86 typedef std::vector<UnknownField> UnknownsType;
88 uint8_t RecType;
89 uint32_t RecordId;
90 std::string Name;
91 std::string HiddenName;
92 std::string Description;
93 std::string DSID;
94 std::string BesDomain;
95 std::string UniqueId;
96 std::string ContentId;
97 ServiceBookConfig Config;
99 UnknownsType Unknowns;
101 public:
102 const unsigned char* ParseField(const unsigned char *begin,
103 const unsigned char *end);
105 public:
106 ServiceBook();
107 ~ServiceBook();
109 // Parser / Builder API (see parser.h / builder.h)
110 uint8_t GetRecType() const { return RecType; }
111 uint32_t GetUniqueId() const { return RecordId; }
112 void SetIds(uint8_t Type, uint32_t Id) { RecType = Type; RecordId = Id; }
113 void ParseHeader(const Data &data, size_t &offset);
114 void ParseFields(const Data &data, size_t &offset);
115 void BuildHeader(Data &data, size_t &offset) const;
116 void BuildFields(Data &data, size_t &offset) const;
118 void Clear();
120 void Dump(std::ostream &os) const;
122 // sorting
123 bool operator<(const ServiceBook &other) const { return RecordId < RecordId; }
125 // database name
126 static const char * GetDBName() { return "Service Book"; }
127 static uint8_t GetDefaultRecType() { return 0; }
130 BXEXPORT inline std::ostream& operator<<(std::ostream &os, const ServiceBook &msg) {
131 msg.Dump(os);
132 return os;
135 /// @}
137 } // namespace Barry
139 #endif