openbase 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. data/History.txt +50 -0
  2. data/License.txt +20 -0
  3. data/Manifest.txt +53 -0
  4. data/README.txt +35 -0
  5. data/Rakefile +126 -0
  6. data/examples/example.rb +37 -0
  7. data/ext/CommAPI.c +643 -0
  8. data/ext/Headers/CommAPI.h +1 -0
  9. data/ext/Headers/NetClient.h +42 -0
  10. data/ext/Headers/NetClientLib.h +41 -0
  11. data/ext/Headers/OB_Memory.h +69 -0
  12. data/ext/Headers/OpenBaseAdmin.h +227 -0
  13. data/ext/Headers/OpenBaseConnection.h +337 -0
  14. data/ext/Headers/OpenBaseEncoding.h +302 -0
  15. data/ext/Headers/OpenBasePrepare.h +1 -0
  16. data/ext/Headers/OpenBaseSupport.h +1 -0
  17. data/ext/Headers/Platform_Carbon_Header.h +5 -0
  18. data/ext/Headers/Platform_Classic_Header.h +6 -0
  19. data/ext/Headers/Platform_Linux.h +4 -0
  20. data/ext/Headers/Platform_Mach_Header.h +4 -0
  21. data/ext/Headers/Platform_Windows.h +3 -0
  22. data/ext/Headers/conversion.h +1 -0
  23. data/ext/Headers/datetime.h +26 -0
  24. data/ext/Headers/longlong.h +46 -0
  25. data/ext/Headers/platform.h +67 -0
  26. data/ext/Headers/stringConversion.h +15 -0
  27. data/ext/NetClient.c +888 -0
  28. data/ext/OpenBaseAdmin.c +1884 -0
  29. data/ext/OpenBaseConnection.c +1841 -0
  30. data/ext/OpenBaseEncoding.c +993 -0
  31. data/ext/OpenBaseEncoding_DOS.c +1 -0
  32. data/ext/OpenBaseEncoding_ISO8859.c +1 -0
  33. data/ext/OpenBaseEncoding_MacOS.c +1 -0
  34. data/ext/OpenBaseEncoding_Windows.c +1150 -0
  35. data/ext/OpenBasePrepare.c +1 -0
  36. data/ext/OpenBaseSupport.c +1 -0
  37. data/ext/conversion.c +1 -0
  38. data/ext/datetime.c +816 -0
  39. data/ext/depend +1 -0
  40. data/ext/extconf.rb +10 -0
  41. data/ext/longlong.c +1 -0
  42. data/ext/openbase.c +980 -0
  43. data/ext/stringConversion.c +169 -0
  44. data/lib/ruby-openbase/version.rb +9 -0
  45. data/scripts/txt2html +67 -0
  46. data/setup.rb +1585 -0
  47. data/test/test_helper.rb +2 -0
  48. data/test/test_openbase.rb +241 -0
  49. data/website/index.html +114 -0
  50. data/website/index.txt +59 -0
  51. data/website/javascripts/rounded_corners_lite.inc.js +285 -0
  52. data/website/stylesheets/screen.css +133 -0
  53. data/website/template.rhtml +47 -0
  54. metadata +105 -0
@@ -0,0 +1,1884 @@
1
+ #include "platform.h"
2
+
3
+ /*
4
+ OpenBaseAdmin.c
5
+ OpenBase Unified Client
6
+ �1996-2002 OpenBase International, Ltd.
7
+ All rights reserved
8
+
9
+ Derived from CommAPI.c in old client.
10
+
11
+ Disclaimer:
12
+ -----------
13
+ THIS SOFTWARE IS FURNISHED ON AN "AS-IS" BASIS. OPENBASE MAKES NO WARRANTIES OF
14
+ ANY KIND, EITHER EXPRESS OR IMPLIED, AS TO ANY MATTER WHATSOEVER, INCLUDING WITHOUT
15
+ LIMITATION THE CONDITION, MERCHANTABILITY, OR FITNESS FOR ANY PARTICULAR PURPOSE OF
16
+ THIS SOFTWARE. OPENBASE DOES NOT ASSUME ANY LIABILITY REGARDING USE OF, OR ANY
17
+ DEFECT IN, THIS SOFTWARE. IN NO EVENT SHALL OPENBASE BE LIABLE FOR ANY INDIRECT,
18
+ SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, EVEN IF IT HAS BEEN ADVISED OF THE
19
+ POSSIBILITY OF SUCH DAMAGE.
20
+
21
+ WARNING: MODIFY THIS SOURCE CODE AT YOUR OWN RISK. IF YOU DON'T NEED TO MODIFY THE
22
+ OPENBASE API SOURCE, WE RECOMMEND THAT YOU USE THE COMPILED LIBRARIES.
23
+ */
24
+
25
+ #ifdef __cplusplus
26
+ extern "C" {
27
+ #endif
28
+
29
+ //================================================================================
30
+ // Includes
31
+ //================================================================================
32
+
33
+ #include "OpenBaseConnection.h"
34
+ #include "CommAPI.h"
35
+ #include "OpenBaseAdmin.h"
36
+
37
+ //#ifndef _OB_COMMUNICATIONS_H
38
+ //#include "OB_Communications.h"
39
+ //#endif
40
+
41
+ #include <stdio.h>
42
+ #include <stdlib.h>
43
+ #include <string.h>
44
+
45
+ //================================================================================
46
+ // Implementations
47
+ //================================================================================
48
+ #define YIELD_THREAD /*YieldToAnyThread()*/
49
+ #define OB_DEALLOC(ptr) if (ptr) { free(ptr); ptr = NULL; }
50
+
51
+
52
+ //--------------------------------------------------------------------------------
53
+ // oba_newAdminConnection
54
+ //--------------------------------------------------------------------------------
55
+
56
+ OpenBaseAdminConnection* oba_newAdminConnection(const char *hostName)
57
+ {
58
+ OpenBaseAdminConnection* result = NULL;
59
+
60
+ result = (OpenBaseAdminConnection *) malloc(sizeof(OpenBaseAdminConnection));
61
+ if (result != NULL)
62
+ {
63
+ result->info_connection = NULL;
64
+ result->connection = ob_newNetConn();
65
+ if (!connectToPort(result->connection, 20221, hostName))
66
+ {
67
+ oba_deallocAdminConnection(result);
68
+ result = NULL;
69
+ return NULL;
70
+ }
71
+
72
+ result->info_connection = ob_newNetConn();
73
+ if (!connectToPort(result->info_connection, 20222, hostName))
74
+ {
75
+ oba_deallocAdminConnection(result);
76
+ result = NULL;
77
+ return NULL;
78
+ }
79
+
80
+ strcpy(result->hostAddress,hostName);
81
+ }
82
+
83
+ return result;
84
+ }
85
+
86
+ //--------------------------------------------------------------------------------
87
+ // oba_deallocAdminConnection
88
+ //--------------------------------------------------------------------------------
89
+
90
+ void oba_deallocAdminConnection(OpenBaseAdminConnection* admin_conn)
91
+ {
92
+ if (admin_conn != NULL)
93
+ {
94
+ if (admin_conn->connection) {
95
+ sendExitSignal(admin_conn->connection);
96
+ ob_deallocNetConn(admin_conn->connection);
97
+ admin_conn->connection = NULL;
98
+ }
99
+ if (admin_conn->info_connection) {
100
+ sendExitSignal(admin_conn->info_connection);
101
+ ob_deallocNetConn(admin_conn->info_connection);
102
+ admin_conn->info_connection = NULL;
103
+ }
104
+
105
+ free(admin_conn);
106
+ }
107
+ }
108
+
109
+
110
+ //--------------------------------------------------------------------------------
111
+ // oba_databaseHostInfo
112
+ //--------------------------------------------------------------------------------
113
+
114
+ // returns "hostname|ethernetaddress|ipaddress|OpenBaseVersion|Platform"
115
+
116
+ const char *oba_databaseHostInfoString(OpenBaseAdminConnection* admin_conn)
117
+ {
118
+ // int stateChangedFlag = 0;
119
+ // double newTimestampValue = 0.0;
120
+ const char* value = NULL;
121
+ int len = 0;
122
+
123
+ prepareDictionary(admin_conn->info_connection);
124
+ addDictionaryPair(admin_conn->info_connection, "action", "hostInfo");
125
+ addDictionaryPair(admin_conn->info_connection, "hostAddress", admin_conn->hostAddress);
126
+
127
+ if (sendBuffer(admin_conn->info_connection))
128
+ {
129
+ YIELD_THREAD;
130
+ if (readResult(admin_conn->info_connection))
131
+ {
132
+ value = resultValueForKey(admin_conn->info_connection, "result", &len);
133
+ }
134
+ }
135
+
136
+ return value;
137
+ }
138
+
139
+
140
+ //--------------------------------------------------------------------------------
141
+ // oba_checkStatesChanged
142
+ //--------------------------------------------------------------------------------
143
+
144
+ int oba_checkStatesChanged(OpenBaseAdminConnection* admin_conn)
145
+ {
146
+ int stateChangedFlag = 0;
147
+ double newTimestampValue = 0.0;
148
+ const char* value = NULL;
149
+ int len = 0;
150
+
151
+ prepareDictionary(admin_conn->info_connection);
152
+ addDictionaryPair(admin_conn->info_connection, "action", "changeTimestamp");
153
+
154
+ if (sendBuffer(admin_conn->info_connection))
155
+ {
156
+ YIELD_THREAD;
157
+ if (readResult(admin_conn->info_connection))
158
+ {
159
+ value = resultValueForKey(admin_conn->info_connection, "result", &len);
160
+ if (value) {
161
+ newTimestampValue = atof(value);
162
+ if (newTimestampValue != admin_conn->lastchanged) {
163
+ stateChangedFlag = 1;
164
+ admin_conn->lastchanged = newTimestampValue;
165
+ }
166
+ }
167
+ }
168
+ }
169
+
170
+ return stateChangedFlag;
171
+ }
172
+
173
+ //--------------------------------------------------------------------------------
174
+ // oba_databaseStateList
175
+ //--------------------------------------------------------------------------------
176
+
177
+ // The state string gives a list of databases that have state information and their corresponding state.
178
+ // Databases that are not running will not be listed.
179
+ //
180
+ // states = "databaseName:stateString|databaseName:stateString|databaseName:stateString"
181
+ // -- stateString can contain % done using the format: stateString = "cleanup%49"
182
+ // -- other stateStrings include: running, starting, stopping
183
+ //
184
+ // Alerts are used for alerting the user of an error condition in the log. Alerts are
185
+ // conveyed in the following format:
186
+ //
187
+ // alerts = "databaseName:alert%updateNumber|databaseName:alert%updateNumber|databaseName:alert%updateNumber"
188
+ // -- alert can be any of: none, warning, error, severe
189
+ // -- updateNumber is a timestamp which changes only when there is a new error in the log since the last time we checked.
190
+ //
191
+
192
+ int oba_databaseStateList(OpenBaseAdminConnection* admin_conn, const char **states, const char **alerts)
193
+ {
194
+ // int stateChangedFlag = 0;
195
+ // double newTimestampValue = 0.0;
196
+ // const char* value = NULL;
197
+ int len = 0;
198
+
199
+ prepareDictionary(admin_conn->info_connection);
200
+ addDictionaryPair(admin_conn->info_connection, "action", "databaseStates");
201
+
202
+ if (sendBuffer(admin_conn->info_connection))
203
+ {
204
+ YIELD_THREAD;
205
+ if (readResult(admin_conn->info_connection))
206
+ {
207
+ *states = resultValueForKey(admin_conn->info_connection, "result", &len);
208
+ *alerts = resultValueForKey(admin_conn->info_connection, "alerts", &len);
209
+ } else {
210
+ *states = NULL;
211
+ *alerts = NULL;
212
+ }
213
+ }
214
+
215
+ return (*states != NULL);
216
+ }
217
+
218
+
219
+ //--------------------------------------------------------------------------------
220
+ // oba_getDatabaseList
221
+ //--------------------------------------------------------------------------------
222
+
223
+ OpenBaseDatabaseList* oba_getDatabaseList(OpenBaseAdminConnection* admin_conn, const char* read_password)
224
+ {
225
+ OpenBaseDatabaseList* result = NULL;
226
+ int i;
227
+ const char* database_list = NULL;
228
+ int len;
229
+
230
+ if (admin_conn != NULL)
231
+ {
232
+ result = (OpenBaseDatabaseList*) malloc(sizeof(OpenBaseDatabaseList));
233
+ if (result != NULL)
234
+ {
235
+ for (i = 0; i < OB_MAX_DATABASES; i++)
236
+ {
237
+ result->databases[i] = NULL;
238
+ result->hosts[i] = NULL;
239
+ result->keys[i] = NULL;
240
+ }
241
+ result->databaseCount = 0;
242
+
243
+ // now send the request and process it.
244
+ prepareDictionary(admin_conn->connection);
245
+ addDictionaryPair(admin_conn->connection, "action", "databaseListForHost7");
246
+
247
+ // does it need an ip address?? ouch!
248
+ // addDictionaryPair(admin_conn->connection, "ipaddress", "");
249
+
250
+ if ((read_password != NULL) && (strcmp(read_password, "") != 0))
251
+ {
252
+ addDictionaryPair(admin_conn->connection, "groupcode", read_password);
253
+ }
254
+
255
+ if (sendBuffer(admin_conn->connection))
256
+ {
257
+ YIELD_THREAD;
258
+ if (readResult(admin_conn->connection))
259
+ {
260
+ database_list = resultValueForKey(admin_conn->connection, "data", &len);
261
+ }
262
+ }
263
+
264
+ if (database_list != NULL)
265
+ {
266
+ const char* delimiters = " \t\r\n(){};,=";
267
+ int index = 0;
268
+
269
+ // format should be an array of dictionaries
270
+ const char* key = strtok((char*) database_list, delimiters);
271
+ while (key != NULL)
272
+ {
273
+ const char* value = strtok(NULL, delimiters);
274
+ if (value != NULL)
275
+ {
276
+ if (strcmp(key, "databaseName") == 0)
277
+ {
278
+ if (result->databases[index] != NULL)
279
+ {
280
+ index++;
281
+ }
282
+ if (index < OB_MAX_DATABASES)
283
+ {
284
+ result->databases[index] = (char *)malloc(strlen(value) + 1);
285
+ if (result->databases[index] != NULL)
286
+ {
287
+ strcpy(result->databases[index], value);
288
+ }
289
+ }
290
+ }
291
+ else if (strcmp(key, "hostName") == 0)
292
+ {
293
+ if (result->hosts[index] != NULL)
294
+ {
295
+ index++;
296
+ }
297
+ if (index < OB_MAX_DATABASES)
298
+ {
299
+ result->hosts[index] = (char *)malloc(strlen(value) + 1);
300
+ if (result->hosts[index] != NULL)
301
+ {
302
+ strcpy(result->hosts[index], value);
303
+ }
304
+ }
305
+ }
306
+ else if (strcmp(key, "key") == 0)
307
+ {
308
+ if (result->keys[index] != NULL)
309
+ {
310
+ index++;
311
+ }
312
+ if (index < OB_MAX_DATABASES)
313
+ {
314
+ result->keys[index] = (char *)malloc(strlen(value) + 1);
315
+ if (result->keys[index] != NULL)
316
+ {
317
+ strcpy(result->keys[index], value);
318
+ }
319
+ }
320
+ }
321
+ }
322
+ key = strtok(NULL, delimiters);
323
+ }
324
+
325
+ result->databaseCount = index + 1;
326
+
327
+ /*
328
+ // This just gets the raw data
329
+
330
+ result->databases[0] = malloc(strlen(database_list) + 1);
331
+ if (result->databases[0] != NULL)
332
+ {
333
+ strcpy(result->databases[0], database_list);
334
+ result->databaseCount = 1;
335
+ }
336
+ */
337
+ }
338
+ }
339
+ }
340
+
341
+ return result;
342
+ }
343
+
344
+ //--------------------------------------------------------------------------------
345
+ // oba_deallocDatabaseList
346
+ //--------------------------------------------------------------------------------
347
+
348
+ void oba_deallocDatabaseList(OpenBaseDatabaseList* database_list)
349
+ {
350
+ int i;
351
+
352
+ if (database_list != NULL)
353
+ {
354
+ for (i = 0; i < database_list->databaseCount; i++)
355
+ {
356
+ OB_DEALLOC(database_list->databases[i]);
357
+ OB_DEALLOC(database_list->hosts[i]);
358
+ OB_DEALLOC(database_list->keys[i]);
359
+ }
360
+ free(database_list);
361
+ }
362
+ }
363
+
364
+ //--------------------------------------------------------------------------------
365
+ // oba_startDatabase
366
+ //--------------------------------------------------------------------------------
367
+
368
+ int oba_startDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password)
369
+ {
370
+ const char *returnValue = NULL;
371
+ int len = 0;
372
+
373
+ prepareDictionary(adminConnection->connection);
374
+ addDictionaryPair(adminConnection->connection, "action", "startDatabase");
375
+ addDictionaryPair(adminConnection->connection, "databaseName", databaseName);
376
+ addDictionaryPair(adminConnection->connection, "password", password);
377
+ addDictionaryPair(adminConnection->connection, "callBack", "");
378
+ addDictionaryPair(adminConnection->connection, "callbackHost", "");
379
+ if (!sendBuffer(adminConnection->connection)){
380
+ return 0;
381
+ }
382
+
383
+ YIELD_THREAD;
384
+
385
+ if (!readResult(adminConnection->connection)) {
386
+ return 0;
387
+ }
388
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
389
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
390
+ return 1;
391
+ }
392
+ return 0;
393
+ }
394
+
395
+ //--------------------------------------------------------------------------------
396
+ // oba_stopDatabase
397
+ //--------------------------------------------------------------------------------
398
+
399
+ int oba_stopDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password)
400
+ {
401
+ // const char *returnValue = NULL;
402
+ int len = 0;
403
+ NetConn *stop_connection = NULL;
404
+ int connectionPort;
405
+
406
+ if (!oba_checkHostPassword(adminConnection, password)) {
407
+ printf("host password check failed when stopping database\n");
408
+ return 0;
409
+ }
410
+
411
+ prepareDictionary(adminConnection->info_connection);
412
+ addDictionaryPair(adminConnection->info_connection, "findPort", databaseName);
413
+ addDictionaryPair(adminConnection->info_connection, "portHost", adminConnection->hostAddress);
414
+
415
+ sendBuffer(adminConnection->info_connection);
416
+ YIELD_THREAD;
417
+ if (!readResult(adminConnection->info_connection)) {
418
+ return 0;
419
+ }
420
+ if (!resultValueForKey(adminConnection->info_connection, "portNumber", &len)) {
421
+ return 0;
422
+ }
423
+
424
+ connectionPort = atoi(resultValueForKey(adminConnection->info_connection, "portNumber", &len));
425
+
426
+ stop_connection = ob_newNetConn();
427
+ if (!connectToPort( stop_connection, connectionPort, adminConnection->hostAddress)) {
428
+ //printf("could not find database\n"); ��dmr
429
+ return 0;
430
+ }
431
+
432
+ // stop the database
433
+ prepareDictionary(stop_connection);
434
+ addDictionaryPair(stop_connection, "action", "call_terminate");
435
+ if (!sendBuffer(stop_connection)){
436
+ return 0;
437
+ }
438
+
439
+ YIELD_THREAD;
440
+
441
+ //if (!readResult(stop_connection)) {
442
+ // return 0;
443
+ //}
444
+
445
+ sendExitSignal(stop_connection);
446
+ ob_deallocNetConn(stop_connection);
447
+
448
+ return 1;
449
+ }
450
+
451
+
452
+
453
+ //--------------------------------------------------------------------------------
454
+ // oba_newDatabase
455
+ //--------------------------------------------------------------------------------
456
+
457
+ int oba_newDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password)
458
+ {
459
+ const char *returnValue = NULL;
460
+ int len = 0;
461
+
462
+ prepareDictionary(adminConnection->connection);
463
+ addDictionaryPair(adminConnection->connection, "action", "newDatabase");
464
+ addDictionaryPair(adminConnection->connection, "databaseName", databaseName);
465
+ addDictionaryPair(adminConnection->connection, "password", password);
466
+ if (!sendBuffer(adminConnection->connection)){
467
+ return 0;
468
+ }
469
+
470
+ YIELD_THREAD;
471
+
472
+ if (!readResult(adminConnection->connection)) {
473
+ return 0;
474
+ }
475
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
476
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
477
+ return 1;
478
+ }
479
+ return 0;
480
+ }
481
+
482
+ //--------------------------------------------------------------------------------
483
+ // oba_duplicateDatabase
484
+ //--------------------------------------------------------------------------------
485
+
486
+ int oba_duplicateDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *duplicatedName, const char *password)
487
+ {
488
+ const char *returnValue = NULL;
489
+ int len = 0;
490
+
491
+ prepareDictionary(adminConnection->connection);
492
+ addDictionaryPair(adminConnection->connection, "action", "duplicateDatabase");
493
+ addDictionaryPair(adminConnection->connection, "databaseName", databaseName);
494
+ addDictionaryPair(adminConnection->connection, "duplicatedName", duplicatedName);
495
+ addDictionaryPair(adminConnection->connection, "password", password);
496
+ if (!sendBuffer(adminConnection->connection)){
497
+ return 0;
498
+ }
499
+
500
+ YIELD_THREAD;
501
+
502
+ if (!readResult(adminConnection->connection)) {
503
+ return 0;
504
+ }
505
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
506
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
507
+ return 1;
508
+ }
509
+ return 0;
510
+ }
511
+
512
+ //--------------------------------------------------------------------------------
513
+ // oba_renameDatabase
514
+ //--------------------------------------------------------------------------------
515
+
516
+ int oba_renameDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *newDatabaseName, const char *password)
517
+ {
518
+ const char *returnValue = NULL;
519
+ int len = 0;
520
+
521
+ prepareDictionary(adminConnection->connection);
522
+ addDictionaryPair(adminConnection->connection, "action", "renameDatabase");
523
+ addDictionaryPair(adminConnection->connection, "databaseName", databaseName);
524
+ addDictionaryPair(adminConnection->connection, "newName", newDatabaseName);
525
+ addDictionaryPair(adminConnection->connection, "password", password);
526
+ if (!sendBuffer(adminConnection->connection)){
527
+ return 0;
528
+ }
529
+
530
+ YIELD_THREAD;
531
+
532
+ if (!readResult(adminConnection->connection)) {
533
+ return 0;
534
+ }
535
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
536
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
537
+ return 1;
538
+ }
539
+ return 0;
540
+ }
541
+
542
+ //--------------------------------------------------------------------------------
543
+ // oba_moveDatabase
544
+ //--------------------------------------------------------------------------------
545
+
546
+ int oba_moveDatabase(OpenBaseAdminConnection *adminConnection, const char *sourceDatabaseName, const char *sourcePassword, const char *targetHost, const char *targetHostPassword)
547
+ {
548
+ const char *returnValue = NULL;
549
+ int len = 0;
550
+
551
+ prepareDictionary(adminConnection->connection);
552
+ addDictionaryPair(adminConnection->connection, "action", "moveDatabase");
553
+ addDictionaryPair(adminConnection->connection, "databaseName", sourceDatabaseName);
554
+ addDictionaryPair(adminConnection->connection, "sourcePassword", sourcePassword);
555
+ addDictionaryPair(adminConnection->connection, "hostName", targetHost);
556
+ addDictionaryPair(adminConnection->connection, "destPassword", targetHostPassword);
557
+ if (!sendBuffer(adminConnection->connection)){
558
+ return 0;
559
+ }
560
+
561
+ YIELD_THREAD;
562
+
563
+ if (!readResult(adminConnection->connection)) {
564
+ return 0;
565
+ }
566
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
567
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
568
+ return 1;
569
+ }
570
+ return 0;
571
+ }
572
+
573
+ //--------------------------------------------------------------------------------
574
+ // oba_deleteDatabase
575
+ //--------------------------------------------------------------------------------
576
+
577
+ int oba_deleteDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password)
578
+ {
579
+ const char *returnValue = NULL;
580
+ int len = 0;
581
+
582
+ prepareDictionary(adminConnection->connection);
583
+ addDictionaryPair(adminConnection->connection, "action", "deleteDatabase");
584
+ addDictionaryPair(adminConnection->connection, "databaseName", databaseName);
585
+ addDictionaryPair(adminConnection->connection, "password", password);
586
+ if (!sendBuffer(adminConnection->connection)){
587
+ return 0;
588
+ }
589
+
590
+ YIELD_THREAD;
591
+
592
+ if (!readResult(adminConnection->connection)) {
593
+ return 0;
594
+ }
595
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
596
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
597
+ return 1;
598
+ }
599
+ return 0;
600
+ }
601
+
602
+ //--------------------------------------------------------------------------------
603
+ // oba_checkHostPassword
604
+ //--------------------------------------------------------------------------------
605
+
606
+ int oba_checkHostPassword(OpenBaseAdminConnection *adminConnection, const char *password)
607
+ {
608
+ const char *returnValue = NULL;
609
+ int len = 0;
610
+
611
+ prepareDictionary(adminConnection->connection);
612
+ addDictionaryPair(adminConnection->connection, "action", "checkPassword");
613
+ addDictionaryPair(adminConnection->connection, "password", password);
614
+ if (!sendBuffer(adminConnection->connection)){
615
+ return 0;
616
+ }
617
+
618
+ YIELD_THREAD;
619
+
620
+ if (!readResult(adminConnection->connection)) {
621
+ return 0;
622
+ }
623
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
624
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
625
+ return 1;
626
+ }
627
+ return 0;
628
+ }
629
+
630
+ //--------------------------------------------------------------------------------
631
+ // oba_setHostPassword
632
+ //--------------------------------------------------------------------------------
633
+
634
+ // extern void out ( const char*, const char* );
635
+
636
+ int oba_setHostPassword(OpenBaseAdminConnection *adminConnection, const char *oldpassword, const char *newpassword)
637
+ {
638
+ const char *returnValue = NULL;
639
+ int len = 0;
640
+
641
+ prepareDictionary(adminConnection->connection);
642
+ addDictionaryPair(adminConnection->connection, "action", "setPasswordTo");
643
+ addDictionaryPair(adminConnection->connection, "oldPassword", oldpassword);
644
+ addDictionaryPair(adminConnection->connection, "newPassword", newpassword);
645
+ if (!sendBuffer(adminConnection->connection)){
646
+ // out ( "oba_setHostPassword", "sendBuffer() failed" );
647
+ return 0;
648
+ }
649
+
650
+ YIELD_THREAD;
651
+
652
+ if (!readResult(adminConnection->connection)) {
653
+ // out ( "oba_setHostPassword", "readResult() failed" );
654
+ return 0;
655
+ }
656
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
657
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
658
+ return 1;
659
+ }
660
+
661
+ // out ( "oba_setHostPassword returnValue", returnValue );
662
+ return 0;
663
+ }
664
+
665
+
666
+ //--------------------------------------------------------------------------------
667
+ // oba_checkReadPassword
668
+ //--------------------------------------------------------------------------------
669
+
670
+ int oba_checkReadPassword(OpenBaseAdminConnection *adminConnection, const char *password)
671
+ {
672
+ const char *returnValue = NULL;
673
+ int len = 0;
674
+
675
+ prepareDictionary(adminConnection->connection);
676
+ addDictionaryPair(adminConnection->connection, "action", "checkReadPassword");
677
+ addDictionaryPair(adminConnection->connection, "groupCode", password);
678
+ if (!sendBuffer(adminConnection->connection)){
679
+ return 0;
680
+ }
681
+
682
+ YIELD_THREAD;
683
+
684
+ if (!readResult(adminConnection->connection)) {
685
+ return 0;
686
+ }
687
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
688
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
689
+ return 1;
690
+ }
691
+ return 0;
692
+ }
693
+
694
+ //--------------------------------------------------------------------------------
695
+ // oba_setReadPassword
696
+ //--------------------------------------------------------------------------------
697
+
698
+ int oba_setReadPassword(OpenBaseAdminConnection *adminConnection, const char *hostpassword, const char *new_read_password)
699
+ {
700
+ const char *returnValue = NULL;
701
+ int len = 0;
702
+
703
+ prepareDictionary(adminConnection->connection);
704
+ addDictionaryPair(adminConnection->connection, "action", "setReadPasswordTo");
705
+ addDictionaryPair(adminConnection->connection, "hostCode", new_read_password);
706
+ addDictionaryPair(adminConnection->connection, "password", hostpassword);
707
+ if (!sendBuffer(adminConnection->connection)){
708
+ return 0;
709
+ }
710
+
711
+ YIELD_THREAD;
712
+
713
+ if (!readResult(adminConnection->connection)) {
714
+ return 0;
715
+ }
716
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
717
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
718
+ return 1;
719
+ }
720
+ return 0;
721
+ }
722
+
723
+ //--------------------------------------------------------------------------------
724
+ // oba_setEncodingForDatabase
725
+ //--------------------------------------------------------------------------------
726
+
727
+ int oba_setEncodingForDatabase(OpenBaseAdminConnection *adminConnection, const char *database, const char *encoding, const char *password)
728
+ {
729
+ const char *returnValue = NULL;
730
+ int len = 0;
731
+
732
+ prepareDictionary(adminConnection->connection);
733
+ addDictionaryPair(adminConnection->connection, "action", "setEncoding");
734
+ addDictionaryPair(adminConnection->connection, "database", database);
735
+ addDictionaryPair(adminConnection->connection, "password", password);
736
+ addDictionaryPair(adminConnection->connection, "encoding", encoding);
737
+ if (!sendBuffer(adminConnection->connection)){
738
+ return 0;
739
+ }
740
+
741
+ YIELD_THREAD;
742
+
743
+ if (!readResult(adminConnection->connection)) {
744
+ return 0;
745
+ }
746
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
747
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
748
+ return 1;
749
+ }
750
+ return 0;
751
+ }
752
+
753
+
754
+ //--------------------------------------------------------------------------------
755
+ // oba_encodingForDatabase
756
+ //--------------------------------------------------------------------------------
757
+
758
+ int oba_encodingForDatabase(OpenBaseAdminConnection *adminConnection, const char *database, char **encoding, const char *password)
759
+ {
760
+ const char *returnValue = NULL;
761
+ int len = 0;
762
+
763
+ prepareDictionary(adminConnection->connection);
764
+ addDictionaryPair(adminConnection->connection, "action", "getEncoding");
765
+ addDictionaryPair(adminConnection->connection, "password", password);
766
+ addDictionaryPair(adminConnection->connection, "database", database);
767
+ if (!sendBuffer(adminConnection->connection)){
768
+ return 0;
769
+ }
770
+
771
+ YIELD_THREAD;
772
+
773
+ if (!readResult(adminConnection->connection)) {
774
+ return 0;
775
+ }
776
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
777
+ if (returnValue) {
778
+ strcpy(*encoding, returnValue);
779
+ return 1;
780
+ }
781
+ return 0;
782
+ }
783
+
784
+
785
+ //--------------------------------------------------------------------------------
786
+ // oba_databaseDescription
787
+ //--------------------------------------------------------------------------------
788
+
789
+ int oba_databaseDescription(OpenBaseAdminConnection *adminConnection, const char *databaseName, char **databaseDescription, char **bubbleColor, char **size)
790
+ {
791
+ // const char *returnValue = NULL;
792
+ int len = 0;
793
+
794
+ prepareDictionary(adminConnection->connection);
795
+ addDictionaryPair(adminConnection->connection, "action", "getDescriptionForDatabase");
796
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
797
+ if (!sendBuffer(adminConnection->connection)){
798
+ return 0;
799
+ }
800
+
801
+ YIELD_THREAD;
802
+
803
+ if (!readResult(adminConnection->connection)) {
804
+ return 0;
805
+ }
806
+ *databaseDescription = resultValueForKey(adminConnection->connection, "databaseDescription", &len);
807
+ *bubbleColor = resultValueForKey(adminConnection->connection, "bubbleColor", &len);
808
+ *size = resultValueForKey(adminConnection->connection, "databaseSize", &len);
809
+
810
+ return 1;
811
+ }
812
+
813
+ //--------------------------------------------------------------------------------
814
+ // oba_setDatabaseDescription
815
+ //--------------------------------------------------------------------------------
816
+
817
+ int oba_setDatabaseDescription(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password, const char *description, const char *bubbleColor)
818
+ {
819
+ const char *returnValue = NULL;
820
+ int len = 0;
821
+
822
+ prepareDictionary(adminConnection->connection);
823
+ addDictionaryPair(adminConnection->connection, "action", "setDescriptionForDatabase");
824
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
825
+ addDictionaryPair(adminConnection->connection, "password", password);
826
+ addDictionaryPair(adminConnection->connection, "textColor", "black");
827
+ addDictionaryPair(adminConnection->connection, "bubbleColor", bubbleColor);
828
+ addDictionaryPair(adminConnection->connection, "databaseDescription", description);
829
+ if (!sendBuffer(adminConnection->connection)){
830
+ return 0;
831
+ }
832
+
833
+ YIELD_THREAD;
834
+
835
+ if (!readResult(adminConnection->connection)) {
836
+ return 0;
837
+ }
838
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
839
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
840
+ return 1;
841
+ }
842
+ return 0;
843
+ }
844
+
845
+
846
+ //--------------------------------------------------------------------------------
847
+ // oba_autoStartDatabaseList
848
+ //--------------------------------------------------------------------------------
849
+
850
+ // BTW, the password is the host password
851
+ // The purpose of this routine is to return the list of databases that start up at boot time.
852
+ // result = "databaseName|databaseName|databaseName"
853
+
854
+ const char *oba_autoStartDatabaseList(OpenBaseAdminConnection *adminConnection, const char *password)
855
+ {
856
+ const char *returnValue = NULL;
857
+ int len = 0;
858
+
859
+ prepareDictionary(adminConnection->connection);
860
+ addDictionaryPair(adminConnection->connection, "action", "autostartArray");
861
+ addDictionaryPair(adminConnection->connection, "password", password);
862
+ if (!sendBuffer(adminConnection->connection)){
863
+ return 0;
864
+ }
865
+
866
+ YIELD_THREAD;
867
+
868
+ if (!readResult(adminConnection->connection)) {
869
+ return NULL;
870
+ }
871
+ returnValue = resultValueForKey(adminConnection->connection, "autostartArray", &len);
872
+
873
+ return returnValue;
874
+ }
875
+
876
+
877
+ //--------------------------------------------------------------------------------
878
+ // oba_setAutoStartDatabase
879
+ //--------------------------------------------------------------------------------
880
+
881
+ int oba_setAutoStartDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password, const char *yn)
882
+ {
883
+ const char *returnValue = NULL;
884
+ int len = 0;
885
+
886
+ prepareDictionary(adminConnection->connection);
887
+ addDictionaryPair(adminConnection->connection, "action", "setAutoStart");
888
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
889
+ addDictionaryPair(adminConnection->connection, "password", password);
890
+ addDictionaryPair(adminConnection->connection, "yn", yn?"1":"0");
891
+ if (!sendBuffer(adminConnection->connection)){
892
+ return 0;
893
+ }
894
+
895
+ YIELD_THREAD;
896
+
897
+ if (!readResult(adminConnection->connection)) {
898
+ return 0;
899
+ }
900
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
901
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
902
+ return 1;
903
+ }
904
+ return 0;
905
+ }
906
+
907
+ //--------------------------------------------------------------------------------
908
+ // oba_getLogFile
909
+ //--------------------------------------------------------------------------------
910
+
911
+ const char *oba_getLogFile(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password)
912
+ {
913
+ const char *returnValue = NULL;
914
+ int len = 0;
915
+
916
+ prepareDictionary(adminConnection->connection);
917
+ addDictionaryPair(adminConnection->connection, "action", "getLogfile");
918
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
919
+ addDictionaryPair(adminConnection->connection, "password", password);
920
+ if (!sendBuffer(adminConnection->connection)){
921
+ return NULL;
922
+ }
923
+
924
+ YIELD_THREAD;
925
+
926
+ if (!readResult(adminConnection->connection)) {
927
+ return NULL;
928
+ }
929
+ returnValue = resultValueForKey(adminConnection->connection, "data", &len);
930
+
931
+ return returnValue;
932
+ }
933
+
934
+ //--------------------------------------------------------------------------------
935
+ // oba_getServerMacAddress
936
+ //--------------------------------------------------------------------------------
937
+
938
+ const char *oba_getServerMacAddress(OpenBaseAdminConnection *adminConnection)
939
+ {
940
+ const char *returnValue = NULL;
941
+ int len = 0;
942
+
943
+ prepareDictionary(adminConnection->connection);
944
+ addDictionaryPair(adminConnection->connection, "action", "getMacAddress");
945
+ if (!sendBuffer(adminConnection->connection)){
946
+ return NULL;
947
+ }
948
+
949
+ YIELD_THREAD;
950
+
951
+ if (!readResult(adminConnection->connection)) {
952
+ return NULL;
953
+ }
954
+ returnValue = resultValueForKey(adminConnection->connection, "data", &len);
955
+
956
+ return returnValue;
957
+ }
958
+
959
+ //--------------------------------------------------------------------------------
960
+ // oba_getDatabasePreferences
961
+ //--------------------------------------------------------------------------------
962
+
963
+ int oba_getDatabasePreferences(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password,
964
+ const char **sortChars,
965
+ const char **sortCharsCaps,
966
+ const char **moneyPostfix,
967
+ const char **moneyPrefix,
968
+ const char **date,
969
+ const char **time,
970
+ const char **logSQL,
971
+ const char **logSQLFile,
972
+ const char **compressedBackup,
973
+ const char **compressedBackupTime,
974
+ const char **compressedBackupDay,
975
+ const char **compressedBackupDirectory,
976
+ const char **asciiBackup,
977
+ const char **asciiBackupTime,
978
+ const char **asciiBackupDay,
979
+ const char **asciiBackupDirectory,
980
+ const char **createClientMirror,
981
+ const char **createMasterMirror,
982
+ const char **clientClusterName,
983
+ const char **masterClusterName)
984
+ {
985
+ // const char *returnValue = NULL;
986
+ int len = 0;
987
+
988
+ prepareDictionary(adminConnection->connection);
989
+ addDictionaryPair(adminConnection->connection, "action", "preferencesForDatabase");
990
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
991
+ addDictionaryPair(adminConnection->connection, "password", password);
992
+
993
+ if (!sendBuffer(adminConnection->connection)){
994
+ return 0;
995
+ }
996
+
997
+ YIELD_THREAD;
998
+
999
+ if (!readResult(adminConnection->connection)) {
1000
+ return 0;
1001
+ }
1002
+
1003
+ *sortChars = resultValueForKey(adminConnection->connection, "SortChars", &len);
1004
+ *sortCharsCaps = resultValueForKey(adminConnection->connection, "SortCharsCaps", &len);
1005
+ *moneyPostfix = resultValueForKey(adminConnection->connection, "MoneyPostfix", &len);
1006
+ *moneyPrefix = resultValueForKey(adminConnection->connection, "MoneyPrefix", &len);
1007
+ *date = resultValueForKey(adminConnection->connection, "Date", &len);
1008
+ *time = resultValueForKey(adminConnection->connection, "Time", &len);
1009
+ *logSQL = resultValueForKey(adminConnection->connection, "LogSQL", &len);
1010
+ *logSQLFile = resultValueForKey(adminConnection->connection, "LogSQLFile", &len);
1011
+ *compressedBackup = resultValueForKey(adminConnection->connection, "compressedBackup", &len);
1012
+ *compressedBackupTime = resultValueForKey(adminConnection->connection, "compressedBackupTime", &len);
1013
+ *compressedBackupDay = resultValueForKey(adminConnection->connection, "compressedBackupDay", &len);
1014
+ *compressedBackupDirectory = resultValueForKey(adminConnection->connection, "compressedBackupDirectory", &len);
1015
+ *asciiBackup = resultValueForKey(adminConnection->connection, "asciiBackup", &len);
1016
+ *asciiBackupTime = resultValueForKey(adminConnection->connection, "asciiBackupTime", &len);
1017
+ *asciiBackupDay = resultValueForKey(adminConnection->connection, "asciiBackupDay", &len);
1018
+ *asciiBackupDirectory = resultValueForKey(adminConnection->connection, "asciiBackupDirectory", &len);
1019
+ *createClientMirror = resultValueForKey(adminConnection->connection, "createClientMirror", &len);
1020
+ *createMasterMirror = resultValueForKey(adminConnection->connection, "createMasterMirror", &len);
1021
+ *clientClusterName = resultValueForKey(adminConnection->connection, "clientClusterName", &len);
1022
+ *masterClusterName = resultValueForKey(adminConnection->connection, "masterClusterName", &len);
1023
+
1024
+ return 1;
1025
+ }
1026
+
1027
+
1028
+ //--------------------------------------------------------------------------------
1029
+ // oba_setDatabasePreferences
1030
+ //--------------------------------------------------------------------------------
1031
+
1032
+ int oba_setDatabasePreferences(OpenBaseAdminConnection *adminConnection, const char *databaseName,
1033
+ const char *password,
1034
+ const char *sortChars,
1035
+ const char *sortCharsCaps,
1036
+ const char *moneyPostfix,
1037
+ const char *moneyPrefix,
1038
+ const char *date,
1039
+ const char *time,
1040
+ const char *logSQL,
1041
+ const char *logSQLFile,
1042
+ const char *compressedBackup,
1043
+ const char *compressedBackupTime,
1044
+ const char *compressedBackupDay,
1045
+ const char *compressedBackupDirectory,
1046
+ const char *asciiBackup,
1047
+ const char *asciiBackupTime,
1048
+ const char *asciiBackupDay,
1049
+ const char *asciiBackupDirectory,
1050
+
1051
+ const char *createClientMirror,
1052
+ const char *createMasterMirror,
1053
+ const char *clientClusterName,
1054
+ const char *masterClusterName,
1055
+
1056
+ const char *dbSerialNumber,
1057
+ const char *dbAuthorization)
1058
+ {
1059
+ const char *returnValue = NULL;
1060
+ int len = 0;
1061
+
1062
+ prepareDictionary(adminConnection->connection);
1063
+ addDictionaryPair(adminConnection->connection, "action", "setPreferencesForDatabase");
1064
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1065
+ addDictionaryPair(adminConnection->connection, "password", password);
1066
+ if (sortChars) addDictionaryPair(adminConnection->connection, "SortChars", sortChars);
1067
+ if (sortCharsCaps) addDictionaryPair(adminConnection->connection, "SortCharsCaps", sortCharsCaps);
1068
+ if (moneyPostfix) addDictionaryPair(adminConnection->connection, "MoneyPostfix", moneyPostfix);
1069
+ if (moneyPrefix) addDictionaryPair(adminConnection->connection, "MoneyPrefix", moneyPrefix);
1070
+ if (date) addDictionaryPair(adminConnection->connection, "Date", date);
1071
+ if (time) addDictionaryPair(adminConnection->connection, "Time", time);
1072
+ if (logSQL) addDictionaryPair(adminConnection->connection, "LogSQL", logSQL);
1073
+ if (logSQLFile) addDictionaryPair(adminConnection->connection, "LogSQLFile", logSQLFile);
1074
+ if (compressedBackup) addDictionaryPair(adminConnection->connection, "compressedBackup", compressedBackup);
1075
+ if (compressedBackupTime) addDictionaryPair(adminConnection->connection, "compressedBackupTime", compressedBackupTime);
1076
+ if (compressedBackupDay) addDictionaryPair(adminConnection->connection, "compressedBackupDay", compressedBackupDay);
1077
+ if (compressedBackupDirectory) addDictionaryPair(adminConnection->connection, "compressedBackupDirectory", compressedBackupDirectory);
1078
+
1079
+ if (asciiBackup) addDictionaryPair(adminConnection->connection, "asciiBackup", asciiBackup);
1080
+ if (asciiBackupTime) addDictionaryPair(adminConnection->connection, "asciiBackupTime", asciiBackupTime);
1081
+ if (asciiBackupDay) addDictionaryPair(adminConnection->connection, "asciiBackupDay", asciiBackupDay);
1082
+ if (asciiBackupDirectory) addDictionaryPair(adminConnection->connection, "asciiBackupDirectory", asciiBackupDirectory);
1083
+
1084
+ if (createClientMirror) addDictionaryPair(adminConnection->connection, "createClientMirror", createClientMirror);
1085
+ if (createMasterMirror) addDictionaryPair(adminConnection->connection, "createMasterMirror", createMasterMirror);
1086
+ if (clientClusterName) addDictionaryPair(adminConnection->connection, "clientClusterName", clientClusterName);
1087
+ if (masterClusterName) addDictionaryPair(adminConnection->connection, "masterClusterName", masterClusterName);
1088
+
1089
+ if (dbSerialNumber) addDictionaryPair(adminConnection->connection, "RegSerialNumber", dbSerialNumber);
1090
+ if (dbAuthorization) addDictionaryPair(adminConnection->connection, "RegAuthorization", dbAuthorization);
1091
+
1092
+ if (!sendBuffer(adminConnection->connection)){
1093
+ return 0;
1094
+ }
1095
+
1096
+ YIELD_THREAD;
1097
+
1098
+ if (!readResult(adminConnection->connection)) {
1099
+ return 0;
1100
+ }
1101
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1102
+
1103
+ return returnValue && (strcmp(returnValue,"succeed") == 0);
1104
+ }
1105
+
1106
+
1107
+
1108
+ //--------------------------------------------------------------------------------
1109
+ // oba_getInitializationForCluster
1110
+ //--------------------------------------------------------------------------------
1111
+
1112
+ int oba_getInitializationForCluster(OpenBaseAdminConnection *adminConnection,
1113
+ const char *databaseName, const char *clusterName,
1114
+ char **targetDatabase, char **targetHost,
1115
+ char **targetUser, char **targetPassword,
1116
+ int *frequency, const char *password)
1117
+ {
1118
+ const char *returnValue = NULL;
1119
+ int len = 0;
1120
+
1121
+ prepareDictionary(adminConnection->connection);
1122
+ addDictionaryPair(adminConnection->connection, "action", "getInitializationForCluster");
1123
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1124
+ addDictionaryPair(adminConnection->connection, "password", password);
1125
+ addDictionaryPair(adminConnection->connection, "cluster", clusterName);
1126
+ if (!sendBuffer(adminConnection->connection)){
1127
+ return 0;
1128
+ }
1129
+
1130
+ YIELD_THREAD;
1131
+
1132
+ if (!readResult(adminConnection->connection)) {
1133
+ return 0;
1134
+ }
1135
+ *targetDatabase = resultValueForKey(adminConnection->connection, "targetDatabase", &len);
1136
+ if (!*targetDatabase) {
1137
+ return 0;
1138
+ }
1139
+ *targetHost = resultValueForKey(adminConnection->connection, "targetHost", &len);
1140
+ *targetUser = resultValueForKey(adminConnection->connection, "targetUser", &len);
1141
+ *targetPassword = resultValueForKey(adminConnection->connection, "targetPassword", &len);
1142
+ returnValue = resultValueForKey(adminConnection->connection, "frequency", &len);
1143
+ if (*returnValue) {
1144
+ *frequency = atoi(returnValue);
1145
+ }
1146
+
1147
+ return 1;
1148
+ }
1149
+
1150
+ //--------------------------------------------------------------------------------
1151
+ // oba_setInitializationForCluster
1152
+ //--------------------------------------------------------------------------------
1153
+
1154
+ int oba_setInitializationForCluster(OpenBaseAdminConnection *adminConnection,
1155
+ const char *databaseName, const char *clusterName,
1156
+ const char *targetDatabase, const char *targetHost,
1157
+ const char *targetUser, const char *targetPassword,
1158
+ int frequency, const char *password)
1159
+ {
1160
+ const char *returnValue = NULL;
1161
+ int len = 0;
1162
+
1163
+ prepareDictionary(adminConnection->connection);
1164
+ addDictionaryPair(adminConnection->connection, "action", "setInitializationForCluster");
1165
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1166
+ addDictionaryPair(adminConnection->connection, "targetDatabase", targetDatabase);
1167
+ addDictionaryPair(adminConnection->connection, "targetHost", targetHost);
1168
+ addDictionaryPair(adminConnection->connection, "targetUser", targetUser);
1169
+ addDictionaryPair(adminConnection->connection, "targetPassword", targetPassword);
1170
+ {
1171
+ char buffer[256];
1172
+ sprintf(buffer, "%d",frequency);
1173
+ addDictionaryPair(adminConnection->connection, "frequency", buffer);
1174
+ }
1175
+
1176
+ addDictionaryPair(adminConnection->connection, "cluster", clusterName);
1177
+ addDictionaryPair(adminConnection->connection, "password", password);
1178
+
1179
+ if (!sendBuffer(adminConnection->connection)){
1180
+ return 0;
1181
+ }
1182
+
1183
+ YIELD_THREAD;
1184
+
1185
+ if (!readResult(adminConnection->connection)) {
1186
+ return 0;
1187
+ }
1188
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1189
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
1190
+ return 1;
1191
+ }
1192
+ return 0;
1193
+ }
1194
+
1195
+
1196
+ //--------------------------------------------------------------------------------
1197
+ // oba_createClusterFile
1198
+ //--------------------------------------------------------------------------------
1199
+
1200
+ int oba_createClusterFile(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *clusterName, const char *password)
1201
+ {
1202
+ const char *returnValue = NULL;
1203
+ int len = 0;
1204
+
1205
+ prepareDictionary(adminConnection->connection);
1206
+ addDictionaryPair(adminConnection->connection, "action", "createClusterFile");
1207
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1208
+ addDictionaryPair(adminConnection->connection, "password", password);
1209
+ addDictionaryPair(adminConnection->connection, "cluster", clusterName);
1210
+ if (!sendBuffer(adminConnection->connection)){
1211
+ return 0;
1212
+ }
1213
+
1214
+ YIELD_THREAD;
1215
+
1216
+ if (!readResult(adminConnection->connection)) {
1217
+ return 0;
1218
+ }
1219
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1220
+
1221
+ return returnValue && (strcmp(returnValue,"succeed") == 0);
1222
+ }
1223
+
1224
+ //--------------------------------------------------------------------------------
1225
+ // oba_removeCluster
1226
+ //--------------------------------------------------------------------------------
1227
+
1228
+ int oba_removeCluster(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *clusterName, const char *password)
1229
+ {
1230
+ const char *returnValue = NULL;
1231
+ int len = 0;
1232
+
1233
+ prepareDictionary(adminConnection->connection);
1234
+ addDictionaryPair(adminConnection->connection, "action", "removeCluster");
1235
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1236
+ addDictionaryPair(adminConnection->connection, "password", password);
1237
+ addDictionaryPair(adminConnection->connection, "cluster", clusterName);
1238
+ if (!sendBuffer(adminConnection->connection)){
1239
+ return 0;
1240
+ }
1241
+
1242
+ YIELD_THREAD;
1243
+
1244
+ if (!readResult(adminConnection->connection)) {
1245
+ return 0;
1246
+ }
1247
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1248
+
1249
+ return returnValue && (strcmp(returnValue,"succeed") == 0);
1250
+ }
1251
+
1252
+ //--------------------------------------------------------------------------------
1253
+ // oba_clearCluster
1254
+ //--------------------------------------------------------------------------------
1255
+
1256
+ int oba_clearCluster(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *clusterName, const char *password)
1257
+ {
1258
+ if (!oba_removeCluster(adminConnection, databaseName, clusterName, password) ) {
1259
+ return 0;
1260
+ }
1261
+ if (!oba_createClusterFile(adminConnection, databaseName, clusterName, password) ) {
1262
+ return 0;
1263
+ }
1264
+
1265
+ return 1;
1266
+ }
1267
+
1268
+
1269
+
1270
+
1271
+ //--------------------------------------------------------------------------------
1272
+ // oba_encryptionForDatabase
1273
+ //--------------------------------------------------------------------------------
1274
+
1275
+ int oba_encryptionForDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password)
1276
+ {
1277
+ const char *returnValue = NULL;
1278
+ int len = 0;
1279
+
1280
+ prepareDictionary(adminConnection->connection);
1281
+ addDictionaryPair(adminConnection->connection, "action", "getEncryption");
1282
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1283
+ addDictionaryPair(adminConnection->connection, "password", password);
1284
+ if (!sendBuffer(adminConnection->connection)){
1285
+ return 0;
1286
+ }
1287
+
1288
+ YIELD_THREAD;
1289
+
1290
+ if (!readResult(adminConnection->connection)) {
1291
+ return 0;
1292
+ }
1293
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1294
+
1295
+ return returnValue && (strcmp(returnValue,"YES") == 0);
1296
+ }
1297
+
1298
+ //--------------------------------------------------------------------------------
1299
+ // oba_setEncryptionForDatabase
1300
+ //--------------------------------------------------------------------------------
1301
+
1302
+ int oba_setEncryptionForDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password, int yn)
1303
+ {
1304
+ const char *returnValue = NULL;
1305
+ int len = 0;
1306
+
1307
+ prepareDictionary(adminConnection->connection);
1308
+ addDictionaryPair(adminConnection->connection, "action", "setEncryption");
1309
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1310
+ addDictionaryPair(adminConnection->connection, "password", password);
1311
+ if (yn) {
1312
+ addDictionaryPair(adminConnection->connection, "encryption", "YES");
1313
+ } else {
1314
+ addDictionaryPair(adminConnection->connection, "encryption", "NO");
1315
+ }
1316
+ if (!sendBuffer(adminConnection->connection)){
1317
+ return 0;
1318
+ }
1319
+
1320
+ YIELD_THREAD;
1321
+
1322
+ if (!readResult(adminConnection->connection)) {
1323
+ return 0;
1324
+ }
1325
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1326
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
1327
+ return 1;
1328
+ }
1329
+ return 0;
1330
+ }
1331
+
1332
+ //--------------------------------------------------------------------------------
1333
+ // oba_portNumberForDatabase
1334
+ //--------------------------------------------------------------------------------
1335
+
1336
+ int oba_portNumberForDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password)
1337
+ {
1338
+ const char *returnValue = NULL;
1339
+ int len = 0;
1340
+
1341
+ prepareDictionary(adminConnection->connection);
1342
+ addDictionaryPair(adminConnection->connection, "action", "getPortNumber");
1343
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1344
+ addDictionaryPair(adminConnection->connection, "password", password);
1345
+ if (!sendBuffer(adminConnection->connection)){
1346
+ return 0;
1347
+ }
1348
+
1349
+ YIELD_THREAD;
1350
+
1351
+ if (!readResult(adminConnection->connection)) {
1352
+ return 0;
1353
+ }
1354
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1355
+
1356
+ return atoi(returnValue);
1357
+ }
1358
+
1359
+ //--------------------------------------------------------------------------------
1360
+ // oba_setPortNumberForDatabase
1361
+ //--------------------------------------------------------------------------------
1362
+
1363
+ int oba_setPortNumberForDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password, int port)
1364
+ {
1365
+ const char *returnValue = NULL;
1366
+ int len = 0;
1367
+ char theBuffer[256];
1368
+
1369
+ sprintf(theBuffer, "%d", port);
1370
+
1371
+ prepareDictionary(adminConnection->connection);
1372
+ addDictionaryPair(adminConnection->connection, "action", "setPortNumber");
1373
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1374
+ addDictionaryPair(adminConnection->connection, "password", password);
1375
+ addDictionaryPair(adminConnection->connection, "portNumber", theBuffer);
1376
+
1377
+ if (!sendBuffer(adminConnection->connection)){
1378
+ return 0;
1379
+ }
1380
+
1381
+ YIELD_THREAD;
1382
+
1383
+ if (!readResult(adminConnection->connection)) {
1384
+ return 0;
1385
+ }
1386
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1387
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
1388
+ return 1;
1389
+ }
1390
+ return 0;
1391
+ }
1392
+
1393
+ //--------------------------------------------------------------------------------
1394
+ // oba_notificationForDatabase
1395
+ //--------------------------------------------------------------------------------
1396
+
1397
+ int oba_notificationForDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password)
1398
+ {
1399
+ const char *returnValue = NULL;
1400
+ int len = 0;
1401
+
1402
+ prepareDictionary(adminConnection->connection);
1403
+ addDictionaryPair(adminConnection->connection, "action", "getNotification");
1404
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1405
+ addDictionaryPair(adminConnection->connection, "password", password);
1406
+ if (!sendBuffer(adminConnection->connection)){
1407
+ return 0;
1408
+ }
1409
+
1410
+ YIELD_THREAD;
1411
+
1412
+ if (!readResult(adminConnection->connection)) {
1413
+ return 0;
1414
+ }
1415
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1416
+
1417
+ return atoi(returnValue);
1418
+ }
1419
+
1420
+ //--------------------------------------------------------------------------------
1421
+ // oba_setNotificationForDatabase
1422
+ //--------------------------------------------------------------------------------
1423
+
1424
+ int oba_setNotificationForDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password, int notify)
1425
+ {
1426
+ const char *returnValue = NULL;
1427
+ int len = 0;
1428
+ char theBuffer[256];
1429
+
1430
+ sprintf(theBuffer, "%d", notify);
1431
+
1432
+ prepareDictionary(adminConnection->connection);
1433
+ addDictionaryPair(adminConnection->connection, "action", "setNotification");
1434
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1435
+ addDictionaryPair(adminConnection->connection, "password", password);
1436
+ addDictionaryPair(adminConnection->connection, "notify", theBuffer);
1437
+
1438
+ if (!sendBuffer(adminConnection->connection)){
1439
+ return 0;
1440
+ }
1441
+
1442
+ YIELD_THREAD;
1443
+
1444
+ if (!readResult(adminConnection->connection)) {
1445
+ return 0;
1446
+ }
1447
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1448
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
1449
+ return 1;
1450
+ }
1451
+ return 0;
1452
+ }
1453
+
1454
+ //--------------------------------------------------------------------------------
1455
+ // oba_distributedKeyForDatabase
1456
+ //--------------------------------------------------------------------------------
1457
+
1458
+ int oba_distributedKeyForDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password, int *databaseKey, int *multiplier)
1459
+ {
1460
+ const char *returnValue = NULL;
1461
+ int len = 0;
1462
+
1463
+ prepareDictionary(adminConnection->connection);
1464
+ addDictionaryPair(adminConnection->connection, "action", "getDistributedKey");
1465
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1466
+ addDictionaryPair(adminConnection->connection, "password", password);
1467
+ if (!sendBuffer(adminConnection->connection)){
1468
+ return 0;
1469
+ }
1470
+
1471
+ YIELD_THREAD;
1472
+
1473
+ if (!readResult(adminConnection->connection)) {
1474
+ return 0;
1475
+ }
1476
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1477
+ *databaseKey = atoi(returnValue);
1478
+
1479
+ returnValue = resultValueForKey(adminConnection->connection, "multiplier", &len);
1480
+ *multiplier = atoi(returnValue);
1481
+
1482
+ return atoi(returnValue);
1483
+ }
1484
+
1485
+ //--------------------------------------------------------------------------------
1486
+ // oba_setDistributedKeyForDatabase
1487
+ //--------------------------------------------------------------------------------
1488
+
1489
+ int oba_setDistributedKeyForDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password, int databaseKey, int multiplier)
1490
+ {
1491
+ const char *returnValue = NULL;
1492
+ int len = 0;
1493
+ char theBuffer[256];
1494
+
1495
+
1496
+ prepareDictionary(adminConnection->connection);
1497
+ addDictionaryPair(adminConnection->connection, "action", "setDistributedKey");
1498
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1499
+ addDictionaryPair(adminConnection->connection, "password", password);
1500
+ sprintf(theBuffer, "%d", databaseKey);
1501
+ addDictionaryPair(adminConnection->connection, "hostkey", theBuffer);
1502
+ sprintf(theBuffer, "%d", multiplier);
1503
+ addDictionaryPair(adminConnection->connection, "multiplier", theBuffer);
1504
+
1505
+ if (!sendBuffer(adminConnection->connection)){
1506
+ return 0;
1507
+ }
1508
+
1509
+ YIELD_THREAD;
1510
+
1511
+ if (!readResult(adminConnection->connection)) {
1512
+ return 0;
1513
+ }
1514
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1515
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
1516
+ return 1;
1517
+ }
1518
+ return 0;
1519
+ }
1520
+
1521
+
1522
+ //--------------------------------------------------------------------------------
1523
+ // oba_transactionTimeouts
1524
+ //--------------------------------------------------------------------------------
1525
+
1526
+ int oba_transactionTimeout(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password, int *trans_timeout, int *connect_timeout)
1527
+ {
1528
+ const char *returnValue = NULL;
1529
+ int len = 0;
1530
+
1531
+ prepareDictionary(adminConnection->connection);
1532
+ addDictionaryPair(adminConnection->connection, "action", "getTransactionTimeout");
1533
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1534
+ addDictionaryPair(adminConnection->connection, "password", password);
1535
+ if (!sendBuffer(adminConnection->connection)){
1536
+ return 0;
1537
+ }
1538
+
1539
+ YIELD_THREAD;
1540
+
1541
+ if (!readResult(adminConnection->connection)) {
1542
+ return 0;
1543
+ }
1544
+ returnValue = resultValueForKey(adminConnection->connection, "transTimeout", &len);
1545
+ *trans_timeout = atoi(returnValue);
1546
+
1547
+ returnValue = resultValueForKey(adminConnection->connection, "connTimeout", &len);
1548
+ *connect_timeout = atoi(returnValue);
1549
+
1550
+ return atoi(returnValue);
1551
+ }
1552
+
1553
+ //--------------------------------------------------------------------------------
1554
+ // oba_setTransactionTimeout
1555
+ //--------------------------------------------------------------------------------
1556
+
1557
+ int oba_setTransactionTimeout(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password, int trans_timeout, int connect_timeout)
1558
+ {
1559
+ const char *returnValue = NULL;
1560
+ int len = 0;
1561
+ char theBuffer[256];
1562
+
1563
+
1564
+ prepareDictionary(adminConnection->connection);
1565
+ addDictionaryPair(adminConnection->connection, "action", "setTransactionTimeout");
1566
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1567
+ addDictionaryPair(adminConnection->connection, "password", password);
1568
+ sprintf(theBuffer, "%d", trans_timeout);
1569
+ addDictionaryPair(adminConnection->connection, "transTimeout", theBuffer);
1570
+ sprintf(theBuffer, "%d", connect_timeout);
1571
+ addDictionaryPair(adminConnection->connection, "connTimeout", theBuffer);
1572
+
1573
+ if (!sendBuffer(adminConnection->connection)){
1574
+ return 0;
1575
+ }
1576
+
1577
+ YIELD_THREAD;
1578
+
1579
+ if (!readResult(adminConnection->connection)) {
1580
+ return 0;
1581
+ }
1582
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1583
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
1584
+ return 1;
1585
+ }
1586
+ return 0;
1587
+ }
1588
+
1589
+ //--------------------------------------------------------------------------------
1590
+ // oba_isSimulationModeOnForDatabase
1591
+ //--------------------------------------------------------------------------------
1592
+
1593
+ int oba_isSimulationModeOnForDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password)
1594
+ {
1595
+ const char *returnValue = NULL;
1596
+ int len = 0;
1597
+
1598
+ prepareDictionary(adminConnection->connection);
1599
+ addDictionaryPair(adminConnection->connection, "action", "isSimulationModeOnForDatabase");
1600
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1601
+ addDictionaryPair(adminConnection->connection, "password", password);
1602
+ if (!sendBuffer(adminConnection->connection)){
1603
+ return 0;
1604
+ }
1605
+
1606
+ YIELD_THREAD;
1607
+
1608
+ if (!readResult(adminConnection->connection)) {
1609
+ return 0;
1610
+ }
1611
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1612
+
1613
+ return returnValue && (strcmp(returnValue,"yes") == 0);
1614
+ }
1615
+
1616
+ //--------------------------------------------------------------------------------
1617
+ // setSimulationMode
1618
+ //--------------------------------------------------------------------------------
1619
+
1620
+ int oba_setSimulationMode(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password, int yn)
1621
+ {
1622
+ const char *returnValue = NULL;
1623
+ int len = 0;
1624
+
1625
+
1626
+ prepareDictionary(adminConnection->connection);
1627
+ addDictionaryPair(adminConnection->connection, "action", "setSimulationMode");
1628
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1629
+ addDictionaryPair(adminConnection->connection, "password", password);
1630
+ if (yn) {
1631
+ addDictionaryPair(adminConnection->connection, "yn", "1");
1632
+ } else {
1633
+ addDictionaryPair(adminConnection->connection, "yn", "0");
1634
+ }
1635
+
1636
+ if (!sendBuffer(adminConnection->connection)){
1637
+ return 0;
1638
+ }
1639
+
1640
+ YIELD_THREAD;
1641
+
1642
+ if (!readResult(adminConnection->connection)) {
1643
+ return 0;
1644
+ }
1645
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1646
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
1647
+ return 1;
1648
+ }
1649
+ return 0;
1650
+ }
1651
+
1652
+ //--------------------------------------------------------------------------------
1653
+ // oba_isNoDeleteModeOnForDatabase
1654
+ //--------------------------------------------------------------------------------
1655
+
1656
+ int oba_isNoDeleteModeOnForDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password)
1657
+ {
1658
+ const char *returnValue = NULL;
1659
+ int len = 0;
1660
+
1661
+ prepareDictionary(adminConnection->connection);
1662
+ addDictionaryPair(adminConnection->connection, "action", "isNoDeleteModeOnForDatabase");
1663
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1664
+ addDictionaryPair(adminConnection->connection, "password", password);
1665
+ if (!sendBuffer(adminConnection->connection)){
1666
+ return 0;
1667
+ }
1668
+
1669
+ YIELD_THREAD;
1670
+
1671
+ if (!readResult(adminConnection->connection)) {
1672
+ return 0;
1673
+ }
1674
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1675
+
1676
+ return returnValue && (strcmp(returnValue,"yes") == 0);
1677
+ }
1678
+
1679
+ //--------------------------------------------------------------------------------
1680
+ // ob_setNoDeleteMode
1681
+ //--------------------------------------------------------------------------------
1682
+
1683
+ int oba_setNoDeleteMode(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password, int yn)
1684
+ {
1685
+ const char *returnValue = NULL;
1686
+ int len = 0;
1687
+
1688
+
1689
+ prepareDictionary(adminConnection->connection);
1690
+ addDictionaryPair(adminConnection->connection, "action", "setNoDeleteMode");
1691
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1692
+ addDictionaryPair(adminConnection->connection, "password", password);
1693
+ if (yn) {
1694
+ addDictionaryPair(adminConnection->connection, "yn", "1");
1695
+ } else {
1696
+ addDictionaryPair(adminConnection->connection, "yn", "0");
1697
+ }
1698
+
1699
+ if (!sendBuffer(adminConnection->connection)){
1700
+ return 0;
1701
+ }
1702
+
1703
+ YIELD_THREAD;
1704
+
1705
+ if (!readResult(adminConnection->connection)) {
1706
+ return 0;
1707
+ }
1708
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1709
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
1710
+ return 1;
1711
+ }
1712
+ return 0;
1713
+ }
1714
+
1715
+
1716
+ //--------------------------------------------------------------------------------
1717
+ // oba_isSafeSQLModeForDatabase
1718
+ //--------------------------------------------------------------------------------
1719
+
1720
+ int oba_isSafeSQLModeForDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password)
1721
+ {
1722
+ const char *returnValue = NULL;
1723
+ int len = 0;
1724
+
1725
+ prepareDictionary(adminConnection->connection);
1726
+ addDictionaryPair(adminConnection->connection, "action", "isSafeSQLModeForDatabase");
1727
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1728
+ addDictionaryPair(adminConnection->connection, "password", password);
1729
+ if (!sendBuffer(adminConnection->connection)){
1730
+ return 0;
1731
+ }
1732
+
1733
+ YIELD_THREAD;
1734
+
1735
+ if (!readResult(adminConnection->connection)) {
1736
+ return 0;
1737
+ }
1738
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1739
+
1740
+ return returnValue && (strcmp(returnValue,"yes") == 0);
1741
+ }
1742
+
1743
+ //--------------------------------------------------------------------------------
1744
+ // oba_setSafeSQLMode
1745
+ //--------------------------------------------------------------------------------
1746
+
1747
+ int oba_setSafeSQLMode(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password, int yn)
1748
+ {
1749
+ const char *returnValue = NULL;
1750
+ int len = 0;
1751
+
1752
+
1753
+ prepareDictionary(adminConnection->connection);
1754
+ addDictionaryPair(adminConnection->connection, "action", "setSafeSQLMode");
1755
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1756
+ addDictionaryPair(adminConnection->connection, "password", password);
1757
+ if (yn) {
1758
+ addDictionaryPair(adminConnection->connection, "yn", "1");
1759
+ } else {
1760
+ addDictionaryPair(adminConnection->connection, "yn", "0");
1761
+ }
1762
+
1763
+ if (!sendBuffer(adminConnection->connection)){
1764
+ return 0;
1765
+ }
1766
+
1767
+ YIELD_THREAD;
1768
+
1769
+ if (!readResult(adminConnection->connection)) {
1770
+ return 0;
1771
+ }
1772
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1773
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
1774
+ return 1;
1775
+ }
1776
+ return 0;
1777
+ }
1778
+
1779
+ //--------------------------------------------------------------------------------
1780
+ // oba_automaticTriggerFileForDatabase
1781
+ //--------------------------------------------------------------------------------
1782
+
1783
+ const char *oba_automaticTriggerFileForDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password)
1784
+ {
1785
+ const char *returnValue = NULL;
1786
+ int len = 0;
1787
+
1788
+ prepareDictionary(adminConnection->connection);
1789
+ addDictionaryPair(adminConnection->connection, "action", "automaticFile");
1790
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1791
+ addDictionaryPair(adminConnection->connection, "password", password);
1792
+ if (!sendBuffer(adminConnection->connection)){
1793
+ return 0;
1794
+ }
1795
+
1796
+ YIELD_THREAD;
1797
+
1798
+ if (!readResult(adminConnection->connection)) {
1799
+ return 0;
1800
+ }
1801
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1802
+
1803
+ return returnValue;
1804
+ }
1805
+
1806
+ //--------------------------------------------------------------------------------
1807
+ // oba_setAutomaticTriggerFileForDatabase
1808
+ //--------------------------------------------------------------------------------
1809
+
1810
+ int oba_setAutomaticTriggerFileForDatabase(OpenBaseAdminConnection *adminConnection, const char *databaseName, const char *password, const char *filecontent)
1811
+ {
1812
+ const char *returnValue = NULL;
1813
+ int len = 0;
1814
+
1815
+
1816
+ prepareDictionary(adminConnection->connection);
1817
+ addDictionaryPair(adminConnection->connection, "action", "setAutomaticFile");
1818
+ addDictionaryPair(adminConnection->connection, "database", databaseName);
1819
+ addDictionaryPair(adminConnection->connection, "password", password);
1820
+ addDictionaryPair(adminConnection->connection, "automatic", filecontent);
1821
+
1822
+ if (!sendBuffer(adminConnection->connection)){
1823
+ return 0;
1824
+ }
1825
+
1826
+ YIELD_THREAD;
1827
+
1828
+ if (!readResult(adminConnection->connection)) {
1829
+ return 0;
1830
+ }
1831
+ returnValue = resultValueForKey(adminConnection->connection, "result", &len);
1832
+ if (returnValue && (strcmp(returnValue,"succeed") == 0)) {
1833
+ return 1;
1834
+ }
1835
+ return 0;
1836
+ }
1837
+
1838
+
1839
+
1840
+
1841
+ //--------------------------------------------------------------------------------
1842
+ // oba_restartProcesses
1843
+ //--------------------------------------------------------------------------------
1844
+
1845
+ int oba_restartProcesses(OpenBaseAdminConnection *adminConnection, const char *password)
1846
+ {
1847
+ // const char *returnValue = NULL;
1848
+ // int len = 0;
1849
+
1850
+
1851
+ prepareDictionary(adminConnection->connection);
1852
+ addDictionaryPair(adminConnection->connection, "action", "restart");
1853
+ addDictionaryPair(adminConnection->connection, "password", password);
1854
+
1855
+ if (!sendBuffer(adminConnection->connection)){
1856
+ return 0;
1857
+ }
1858
+
1859
+ YIELD_THREAD;
1860
+
1861
+ if (!readResult(adminConnection->connection)) {
1862
+ return 1;
1863
+ }
1864
+ return 1;
1865
+ }
1866
+
1867
+
1868
+
1869
+
1870
+ #ifdef __cplusplus
1871
+ }
1872
+ #endif
1873
+
1874
+
1875
+
1876
+
1877
+
1878
+
1879
+
1880
+
1881
+
1882
+
1883
+
1884
+