bson_ext 1.5.0.rc0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,260 +0,0 @@
1
- /* mongo.h */
2
-
3
- /* Copyright 2009, 2010 10gen Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
-
18
- #ifndef _MONGO_H_
19
- #define _MONGO_H_
20
-
21
- #include "mongo_except.h"
22
- #include "bson.h"
23
-
24
- #ifdef _WIN32
25
- #include <windows.h>
26
- #include <winsock.h>
27
- #define mongo_close_socket(sock) ( closesocket(sock) )
28
- typedef int socklen_t;
29
- #else
30
- #include <arpa/inet.h>
31
- #include <sys/types.h>
32
- #include <sys/socket.h>
33
- #include <netdb.h>
34
- #include <netinet/in.h>
35
- #include <netinet/tcp.h>
36
- #define mongo_close_socket(sock) ( close(sock) )
37
- #endif
38
-
39
- #if defined(_XOPEN_SOURCE) || defined(_POSIX_SOURCE) || _POSIX_C_SOURCE >= 1
40
- #define _MONGO_USE_GETADDRINFO
41
- #endif
42
-
43
- MONGO_EXTERN_C_START
44
-
45
- typedef struct mongo_host_port {
46
- char host[255];
47
- int port;
48
- struct mongo_host_port* next;
49
- } mongo_host_port;
50
-
51
- typedef struct {
52
- mongo_host_port* seeds; /*< The list of seed nodes provided by the user. */
53
- mongo_host_port* hosts; /*< The list of host and ports reported by the replica set */
54
- char* name; /*< The name of the replica set. */
55
- bson_bool_t primary_connected; /*< Whether we've managed to connect to a primary node. */
56
- } mongo_replset;
57
-
58
- typedef struct {
59
- mongo_host_port* primary;
60
- mongo_replset* replset;
61
- int sock;
62
- bson_bool_t connected;
63
- mongo_exception_context exception;
64
- } mongo_connection;
65
-
66
- #pragma pack(1)
67
- typedef struct {
68
- int len;
69
- int id;
70
- int responseTo;
71
- int op;
72
- } mongo_header;
73
-
74
- typedef struct {
75
- mongo_header head;
76
- char data;
77
- } mongo_message;
78
-
79
- typedef struct {
80
- int flag; /* non-zero on failure */
81
- int64_t cursorID;
82
- int start;
83
- int num;
84
- } mongo_reply_fields;
85
-
86
- typedef struct {
87
- mongo_header head;
88
- mongo_reply_fields fields;
89
- char objs;
90
- } mongo_reply;
91
- #pragma pack()
92
-
93
- typedef struct {
94
- mongo_reply * mm; /* message is owned by cursor */
95
- mongo_connection * conn; /* connection is *not* owned by cursor */
96
- const char* ns; /* owned by cursor */
97
- bson current;
98
- } mongo_cursor;
99
-
100
- enum mongo_operations {
101
- mongo_op_msg = 1000, /* generic msg command followed by a string */
102
- mongo_op_update = 2001, /* update object */
103
- mongo_op_insert = 2002,
104
- mongo_op_query = 2004,
105
- mongo_op_get_more = 2005,
106
- mongo_op_delete = 2006,
107
- mongo_op_kill_cursors = 2007
108
- };
109
-
110
-
111
- /*
112
- * CONNECTIONS
113
- */
114
- typedef enum {
115
- mongo_conn_success = 0,
116
- mongo_conn_bad_arg,
117
- mongo_conn_no_socket,
118
- mongo_conn_fail,
119
- mongo_conn_not_master, /* leaves conn connected to slave */
120
- mongo_conn_bad_set_name, /* The provided replica set name doesn't match the existing replica set */
121
- mongo_conn_cannot_find_primary
122
- } mongo_conn_return;
123
-
124
- /*
125
- * Connect to a single MongoDB server.
126
- *
127
- * @param conn a mongo_connection object.
128
- * @param host a numerical network address or a network hostname.
129
- * @param port the port to connect to.
130
- *
131
- * @return mongo_conn_return
132
- */
133
- mongo_conn_return mongo_connect( mongo_connection * conn , const char* host, int port );
134
-
135
- /*
136
- * Initialize a connection object for connecting with a replica set.
137
- *
138
- * @param conn a mongo_connection object.
139
- * @param name the name of the replica set to connect to.
140
- * */
141
- void mongo_replset_init_conn( mongo_connection* conn, const char* name );
142
-
143
- /*
144
- * Add a seed node to the connection object.
145
- *
146
- * You must specify at least one seed node before connecting to a replica set.
147
- *
148
- * @param conn a mongo_connection object.
149
- * @param host a numerical network address or a network hostname.
150
- * @param port the port to connect to.
151
- */
152
- int mongo_replset_add_seed( mongo_connection* conn, const char* host, int port );
153
-
154
- /*
155
- * Connect to a replica set.
156
- *
157
- * Before passing a connection object to this method, you must already have called
158
- * mongo_replset_init_conn and mongo_replset_add_seed.
159
- *
160
- * @param conn a mongo_connection object.
161
- *
162
- * @return mongo_conn_return
163
- */
164
- mongo_conn_return mongo_replset_connect( mongo_connection* conn );
165
-
166
- /*
167
- * Try reconnecting to the server using the existing connection settings.
168
- *
169
- * This method will disconnect the current socket. If you've authentication,
170
- * you'll need to re-authenticate after calling this function.
171
- *
172
- * @param conn
173
- *
174
- * @return mongo_conn_return
175
- */
176
- mongo_conn_return mongo_reconnect( mongo_connection * conn );
177
-
178
- /*
179
- * Close the current connection to the server.
180
- */
181
- bson_bool_t mongo_disconnect( mongo_connection * conn );
182
-
183
- /*
184
- * Close any existing connection to the server and free all allocated
185
- * memory associated with the conn object.
186
- *
187
- * You must always call this method when finished with the connection object.
188
- *
189
- * @param conn
190
- *
191
- * @return bson_bool_t
192
- */
193
- bson_bool_t mongo_destroy( mongo_connection * conn );
194
-
195
- /* ----------------------------
196
- CORE METHODS - insert update remove query getmore
197
- ------------------------------ */
198
-
199
- void mongo_insert( mongo_connection * conn , const char * ns , bson * data );
200
- void mongo_insert_batch( mongo_connection * conn , const char * ns , bson ** data , int num );
201
-
202
- static const int MONGO_UPDATE_UPSERT = 0x1;
203
- static const int MONGO_UPDATE_MULTI = 0x2;
204
- void mongo_update(mongo_connection* conn, const char* ns, const bson* cond, const bson* op, int flags);
205
-
206
- void mongo_remove(mongo_connection* conn, const char* ns, const bson* cond);
207
-
208
- mongo_cursor* mongo_find(mongo_connection* conn, const char* ns, bson* query, bson* fields ,int nToReturn ,int nToSkip, int options);
209
- bson_bool_t mongo_cursor_next(mongo_cursor* cursor);
210
- void mongo_cursor_destroy(mongo_cursor* cursor);
211
-
212
- /* out can be NULL if you don't care about results. useful for commands */
213
- bson_bool_t mongo_find_one(mongo_connection* conn, const char* ns, bson* query, bson* fields, bson* out);
214
-
215
- int64_t mongo_count(mongo_connection* conn, const char* db, const char* coll, bson* query);
216
-
217
- /* ----------------------------
218
- HIGHER LEVEL - indexes - command helpers eval
219
- ------------------------------ */
220
-
221
- /* Returns true on success */
222
- /* WARNING: Unlike other drivers these do not cache results */
223
-
224
- static const int MONGO_INDEX_UNIQUE = 0x1;
225
- static const int MONGO_INDEX_DROP_DUPS = 0x2;
226
- bson_bool_t mongo_create_index(mongo_connection * conn, const char * ns, bson * key, int options, bson * out);
227
- bson_bool_t mongo_create_simple_index(mongo_connection * conn, const char * ns, const char* field, int options, bson * out);
228
-
229
- /* ----------------------------
230
- COMMANDS
231
- ------------------------------ */
232
-
233
- bson_bool_t mongo_run_command(mongo_connection * conn, const char * db, bson * command, bson * out);
234
-
235
- /* for simple commands with a single k-v pair */
236
- bson_bool_t mongo_simple_int_command(mongo_connection * conn, const char * db, const char* cmd, int arg, bson * out);
237
- bson_bool_t mongo_simple_str_command(mongo_connection * conn, const char * db, const char* cmd, const char* arg, bson * out);
238
-
239
- bson_bool_t mongo_cmd_drop_db(mongo_connection * conn, const char * db);
240
- bson_bool_t mongo_cmd_drop_collection(mongo_connection * conn, const char * db, const char * collection, bson * out);
241
-
242
- void mongo_cmd_add_user(mongo_connection* conn, const char* db, const char* user, const char* pass);
243
- bson_bool_t mongo_cmd_authenticate(mongo_connection* conn, const char* db, const char* user, const char* pass);
244
-
245
- /* return value is master status */
246
- bson_bool_t mongo_cmd_ismaster(mongo_connection * conn, bson * out);
247
-
248
- /* true return indicates error */
249
- bson_bool_t mongo_cmd_get_last_error(mongo_connection * conn, const char * db, bson * out);
250
- bson_bool_t mongo_cmd_get_prev_error(mongo_connection * conn, const char * db, bson * out);
251
- void mongo_cmd_reset_error(mongo_connection * conn, const char * db);
252
-
253
- /* ----------------------------
254
- UTILS
255
- ------------------------------ */
256
-
257
- MONGO_EXTERN_C_END
258
-
259
-
260
- #endif
@@ -1,143 +0,0 @@
1
- /* mongo_except.h */
2
-
3
- /* Copyright 2009 10gen Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
-
18
- /* This file is based loosely on cexcept (http://www.nicemice.net/cexcept/). I
19
- * have modified it to work better with mongo's API.
20
- *
21
- * The MONGO_TRY, MONGO_CATCH, and MONGO_TROW macros assume that a pointer to
22
- * the current connection is available as 'conn'. If you would like to use a
23
- * different name, use the _GENERIC version of these macros.
24
- *
25
- * WARNING: do not return or otherwise jump (excluding MONGO_TRHOW()) out of a
26
- * MONGO_TRY block as the nessesary clean-up code will not be called. Jumping
27
- * out of the MONGO_CATCH block is OK.
28
- */
29
-
30
- #ifdef MONGO_CODE_EXAMPLE
31
- mongo_connection conn[1]; /* makes conn a ptr to the connection */
32
-
33
- MONGO_TRY{
34
- mongo_find_one(...);
35
- MONGO_THROW(conn, MONGO_EXCEPT_NETWORK);
36
- }MONGO_CATCH{
37
- switch(conn->exception->type){
38
- case MONGO_EXCEPT_NETWORK:
39
- do_something();
40
- case MONGO_EXCEPT_FIND_ERR:
41
- do_something();
42
- default:
43
- MONGO_RETHROW();
44
- }
45
- }
46
- #endif
47
-
48
- /* ORIGINAL CEXEPT COPYRIGHT:
49
- cexcept: README 2.0.1 (2008-Jul-23-Wed)
50
- http://www.nicemice.net/cexcept/
51
- Adam M. Costello
52
- http://www.nicemice.net/amc/
53
-
54
- The package is both free-as-in-speech and free-as-in-beer:
55
-
56
- Copyright (c) 2000-2008 Adam M. Costello and Cosmin Truta.
57
- This package may be modified only if its author and version
58
- information is updated accurately, and may be redistributed
59
- only if accompanied by this unaltered notice. Subject to those
60
- restrictions, permission is granted to anyone to do anything with
61
- this package. The copyright holders make no guarantees regarding
62
- this package, and are not responsible for any damage resulting from
63
- its use.
64
- */
65
-
66
- #ifndef _MONGO_EXCEPT_H_
67
- #define _MONGO_EXCEPT_H_
68
-
69
- #include <setjmp.h>
70
-
71
- /* always non-zero */
72
- typedef enum{
73
- MONGO_EXCEPT_NETWORK=1,
74
- MONGO_EXCEPT_FIND_ERR
75
- }mongo_exception_type;
76
-
77
-
78
- typedef struct {
79
- jmp_buf base_handler;
80
- jmp_buf *penv;
81
- int caught;
82
- volatile mongo_exception_type type;
83
- }mongo_exception_context;
84
-
85
- #define MONGO_TRY MONGO_TRY_GENERIC(conn)
86
- #define MONGO_CATCH MONGO_CATCH_GENERIC(conn)
87
- #define MONGO_THROW(e) MONGO_THROW_GENERIC(conn, e)
88
- #define MONGO_RETHROW() MONGO_RETHROW_GENERIC(conn)
89
-
90
- /* the rest of this file is implementation details */
91
-
92
- /* this is done in mongo_connect */
93
- #define MONGO_INIT_EXCEPTION(exception_ptr) \
94
- do{ \
95
- mongo_exception_type t; /* exception_ptr won't be available */\
96
- (exception_ptr)->penv = &(exception_ptr)->base_handler; \
97
- if ((t = setjmp((exception_ptr)->base_handler))) { /* yes, '=' is correct */ \
98
- switch(t){ \
99
- case MONGO_EXCEPT_NETWORK: bson_fatal_msg(0, "network error"); \
100
- case MONGO_EXCEPT_FIND_ERR: bson_fatal_msg(0, "error in find"); \
101
- default: bson_fatal_msg(0, "unknown exception"); \
102
- } \
103
- } \
104
- }while(0)
105
-
106
- #define MONGO_TRY_GENERIC(connection) \
107
- { \
108
- jmp_buf *exception__prev, exception__env; \
109
- exception__prev = (connection)->exception.penv; \
110
- (connection)->exception.penv = &exception__env; \
111
- if (setjmp(exception__env) == 0) { \
112
- do
113
-
114
- #define MONGO_CATCH_GENERIC(connection) \
115
- while ((connection)->exception.caught = 0, \
116
- (connection)->exception.caught); \
117
- } \
118
- else { \
119
- (connection)->exception.caught = 1; \
120
- } \
121
- (connection)->exception.penv = exception__prev; \
122
- } \
123
- if (!(connection)->exception.caught ) { } \
124
- else
125
-
126
- /* Try ends with do, and Catch begins with while(0) and ends with */
127
- /* else, to ensure that Try/Catch syntax is similar to if/else */
128
- /* syntax. */
129
- /* */
130
- /* The 0 in while(0) is expressed as x=0,x in order to appease */
131
- /* compilers that warn about constant expressions inside while(). */
132
- /* Most compilers should still recognize that the condition is always */
133
- /* false and avoid generating code for it. */
134
-
135
- #define MONGO_THROW_GENERIC(connection, type_in) \
136
- for (;; longjmp(*(connection)->exception.penv, type_in)) \
137
- (connection)->exception.type = type_in
138
-
139
- #define MONGO_RETHROW_GENERIC(connection) \
140
- MONGO_THROW_GENERIC(connection, (connection)->exception.type)
141
-
142
-
143
- #endif
@@ -1,127 +0,0 @@
1
- /* Copyright 2009 10gen Inc.
2
- *
3
- * Licensed under the Apache License, Version 2.0 (the "License");
4
- * you may not use this file except in compliance with the License.
5
- * You may obtain a copy of the License at
6
- *
7
- * http://www.apache.org/licenses/LICENSE-2.0
8
- *
9
- * Unless required by applicable law or agreed to in writing, software
10
- * distributed under the License is distributed on an "AS IS" BASIS,
11
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- * See the License for the specific language governing permissions and
13
- * limitations under the License.
14
- */
15
-
16
- /* all the numbers that fit in a 4 byte string */
17
- const char bson_numstrs[1000][4] = {
18
- "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
19
- "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
20
- "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",
21
- "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",
22
- "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",
23
- "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",
24
- "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",
25
- "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",
26
- "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",
27
- "90", "91", "92", "93", "94", "95", "96", "97", "98", "99",
28
-
29
- "100", "101", "102", "103", "104", "105", "106", "107", "108", "109",
30
- "110", "111", "112", "113", "114", "115", "116", "117", "118", "119",
31
- "120", "121", "122", "123", "124", "125", "126", "127", "128", "129",
32
- "130", "131", "132", "133", "134", "135", "136", "137", "138", "139",
33
- "140", "141", "142", "143", "144", "145", "146", "147", "148", "149",
34
- "150", "151", "152", "153", "154", "155", "156", "157", "158", "159",
35
- "160", "161", "162", "163", "164", "165", "166", "167", "168", "169",
36
- "170", "171", "172", "173", "174", "175", "176", "177", "178", "179",
37
- "180", "181", "182", "183", "184", "185", "186", "187", "188", "189",
38
- "190", "191", "192", "193", "194", "195", "196", "197", "198", "199",
39
-
40
- "200", "201", "202", "203", "204", "205", "206", "207", "208", "209",
41
- "210", "211", "212", "213", "214", "215", "216", "217", "218", "219",
42
- "220", "221", "222", "223", "224", "225", "226", "227", "228", "229",
43
- "230", "231", "232", "233", "234", "235", "236", "237", "238", "239",
44
- "240", "241", "242", "243", "244", "245", "246", "247", "248", "249",
45
- "250", "251", "252", "253", "254", "255", "256", "257", "258", "259",
46
- "260", "261", "262", "263", "264", "265", "266", "267", "268", "269",
47
- "270", "271", "272", "273", "274", "275", "276", "277", "278", "279",
48
- "280", "281", "282", "283", "284", "285", "286", "287", "288", "289",
49
- "290", "291", "292", "293", "294", "295", "296", "297", "298", "299",
50
-
51
- "300", "301", "302", "303", "304", "305", "306", "307", "308", "309",
52
- "310", "311", "312", "313", "314", "315", "316", "317", "318", "319",
53
- "320", "321", "322", "323", "324", "325", "326", "327", "328", "329",
54
- "330", "331", "332", "333", "334", "335", "336", "337", "338", "339",
55
- "340", "341", "342", "343", "344", "345", "346", "347", "348", "349",
56
- "350", "351", "352", "353", "354", "355", "356", "357", "358", "359",
57
- "360", "361", "362", "363", "364", "365", "366", "367", "368", "369",
58
- "370", "371", "372", "373", "374", "375", "376", "377", "378", "379",
59
- "380", "381", "382", "383", "384", "385", "386", "387", "388", "389",
60
- "390", "391", "392", "393", "394", "395", "396", "397", "398", "399",
61
-
62
- "400", "401", "402", "403", "404", "405", "406", "407", "408", "409",
63
- "410", "411", "412", "413", "414", "415", "416", "417", "418", "419",
64
- "420", "421", "422", "423", "424", "425", "426", "427", "428", "429",
65
- "430", "431", "432", "433", "434", "435", "436", "437", "438", "439",
66
- "440", "441", "442", "443", "444", "445", "446", "447", "448", "449",
67
- "450", "451", "452", "453", "454", "455", "456", "457", "458", "459",
68
- "460", "461", "462", "463", "464", "465", "466", "467", "468", "469",
69
- "470", "471", "472", "473", "474", "475", "476", "477", "478", "479",
70
- "480", "481", "482", "483", "484", "485", "486", "487", "488", "489",
71
- "490", "491", "492", "493", "494", "495", "496", "497", "498", "499",
72
-
73
- "500", "501", "502", "503", "504", "505", "506", "507", "508", "509",
74
- "510", "511", "512", "513", "514", "515", "516", "517", "518", "519",
75
- "520", "521", "522", "523", "524", "525", "526", "527", "528", "529",
76
- "530", "531", "532", "533", "534", "535", "536", "537", "538", "539",
77
- "540", "541", "542", "543", "544", "545", "546", "547", "548", "549",
78
- "550", "551", "552", "553", "554", "555", "556", "557", "558", "559",
79
- "560", "561", "562", "563", "564", "565", "566", "567", "568", "569",
80
- "570", "571", "572", "573", "574", "575", "576", "577", "578", "579",
81
- "580", "581", "582", "583", "584", "585", "586", "587", "588", "589",
82
- "590", "591", "592", "593", "594", "595", "596", "597", "598", "599",
83
-
84
- "600", "601", "602", "603", "604", "605", "606", "607", "608", "609",
85
- "610", "611", "612", "613", "614", "615", "616", "617", "618", "619",
86
- "620", "621", "622", "623", "624", "625", "626", "627", "628", "629",
87
- "630", "631", "632", "633", "634", "635", "636", "637", "638", "639",
88
- "640", "641", "642", "643", "644", "645", "646", "647", "648", "649",
89
- "650", "651", "652", "653", "654", "655", "656", "657", "658", "659",
90
- "660", "661", "662", "663", "664", "665", "666", "667", "668", "669",
91
- "670", "671", "672", "673", "674", "675", "676", "677", "678", "679",
92
- "680", "681", "682", "683", "684", "685", "686", "687", "688", "689",
93
- "690", "691", "692", "693", "694", "695", "696", "697", "698", "699",
94
-
95
- "700", "701", "702", "703", "704", "705", "706", "707", "708", "709",
96
- "710", "711", "712", "713", "714", "715", "716", "717", "718", "719",
97
- "720", "721", "722", "723", "724", "725", "726", "727", "728", "729",
98
- "730", "731", "732", "733", "734", "735", "736", "737", "738", "739",
99
- "740", "741", "742", "743", "744", "745", "746", "747", "748", "749",
100
- "750", "751", "752", "753", "754", "755", "756", "757", "758", "759",
101
- "760", "761", "762", "763", "764", "765", "766", "767", "768", "769",
102
- "770", "771", "772", "773", "774", "775", "776", "777", "778", "779",
103
- "780", "781", "782", "783", "784", "785", "786", "787", "788", "789",
104
- "790", "791", "792", "793", "794", "795", "796", "797", "798", "799",
105
-
106
- "800", "801", "802", "803", "804", "805", "806", "807", "808", "809",
107
- "810", "811", "812", "813", "814", "815", "816", "817", "818", "819",
108
- "820", "821", "822", "823", "824", "825", "826", "827", "828", "829",
109
- "830", "831", "832", "833", "834", "835", "836", "837", "838", "839",
110
- "840", "841", "842", "843", "844", "845", "846", "847", "848", "849",
111
- "850", "851", "852", "853", "854", "855", "856", "857", "858", "859",
112
- "860", "861", "862", "863", "864", "865", "866", "867", "868", "869",
113
- "870", "871", "872", "873", "874", "875", "876", "877", "878", "879",
114
- "880", "881", "882", "883", "884", "885", "886", "887", "888", "889",
115
- "890", "891", "892", "893", "894", "895", "896", "897", "898", "899",
116
-
117
- "900", "901", "902", "903", "904", "905", "906", "907", "908", "909",
118
- "910", "911", "912", "913", "914", "915", "916", "917", "918", "919",
119
- "920", "921", "922", "923", "924", "925", "926", "927", "928", "929",
120
- "930", "931", "932", "933", "934", "935", "936", "937", "938", "939",
121
- "940", "941", "942", "943", "944", "945", "946", "947", "948", "949",
122
- "950", "951", "952", "953", "954", "955", "956", "957", "958", "959",
123
- "960", "961", "962", "963", "964", "965", "966", "967", "968", "969",
124
- "970", "971", "972", "973", "974", "975", "976", "977", "978", "979",
125
- "980", "981", "982", "983", "984", "985", "986", "987", "988", "989",
126
- "990", "991", "992", "993", "994", "995", "996", "997", "998", "999",
127
- };