Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

sync works

  • Loading branch information...
commit 8a561695ce895873226488426b26c02686c1620b 1 parent 903196c
Atsushi Takayama authored
8 .gitignore
... ... @@ -1,10 +1,2 @@
1   -casket.tcb
2   -casket.tcf
3   -casket.tch
4   -casket.tct
5   -test/casket.tcb
6   -test/casket.tcf
7   -test/casket.tch
8   -test/casket.tct
9 1 build/*
10 2 .lock-wscript
98 src/tokyocabinet.cc
@@ -9,7 +9,6 @@
9 9 #include <stdbool.h>
10 10 #include <stdint.h>
11 11 #include <assert.h>
12   -#include <iostream>
13 12
14 13 #define THROW_BAD_ARGS \
15 14 ThrowException(Exception::TypeError(String::New("Bad arguments")))
@@ -262,7 +261,7 @@ class TCWrap : public ObjectWrap {
262 261 virtual uint64_t Fsiz () { assert(false); }
263 262 virtual uint64_t Size () { assert(false); } // for ADB
264 263 virtual bool Setindex (const char* name, int type) { assert(false); } // for TDB
265   - virtual TCLIST * Misc (char *name, TCLIST *targs) { assert(false); } // for ADB
  264 + virtual TCLIST * Misc (const char *name, TCLIST *targs) { assert(false); } // for ADB
266 265 // for BDB Cursor
267 266 virtual bool First () { assert(false); } // for CUR
268 267 virtual bool Last () { assert(false); } // for CUR
@@ -285,7 +284,7 @@ class TCWrap : public ObjectWrap {
285 284
286 285 /* This is defined only because AsyncData(Handle<Value>) constructor
287 286 * gives compile error without this, but in fact AsyncData does not
288   - * use it. See OpenAsyncData or GetData, for example. */
  287 + * use it. */
289 288 ArgsData () {
290 289 assert(false);
291 290 }
@@ -493,7 +492,8 @@ class TCWrap : public ObjectWrap {
493 492 int vsiz;
494 493
495 494 public:
496   - PutData (const Arguments& args) : vbuf(args[1]), KeyData(args) {
  495 + PutData (const Arguments& args)
  496 + : vbuf(args[1]), KeyData(args), ArgsData(args) {
497 497 vsiz = vbuf.length();
498 498 }
499 499
@@ -511,7 +511,7 @@ class TCWrap : public ObjectWrap {
511 511
512 512 class PutkeepData : public PutData {
513 513 public:
514   - PutkeepData (const Arguments& args) : PutData(args) {}
  514 + PutkeepData (const Arguments& args) : PutData(args), ArgsData(args) {}
515 515
516 516 bool
517 517 run () {
@@ -527,7 +527,7 @@ class TCWrap : public ObjectWrap {
527 527
528 528 class PutcatData : public PutData {
529 529 public:
530   - PutcatData (const Arguments& args) : PutData(args) {}
  530 + PutcatData (const Arguments& args) : PutData(args), ArgsData(args) {}
531 531
532 532 bool
533 533 run () {
@@ -543,7 +543,7 @@ class TCWrap : public ObjectWrap {
543 543
544 544 class PutasyncData : public PutData {
545 545 public:
546   - PutasyncData (const Arguments& args) : PutData(args) {}
  546 + PutasyncData (const Arguments& args) : PutData(args), ArgsData(args) {}
547 547
548 548 bool
549 549 run () {
@@ -559,7 +559,7 @@ class TCWrap : public ObjectWrap {
559 559
560 560 class PutdupData : public PutData {
561 561 public:
562   - PutdupData (const Arguments& args) : PutData(args) {}
  562 + PutdupData (const Arguments& args) : PutData(args), ArgsData(args) {}
563 563
564 564 bool
565 565 run () {
@@ -578,7 +578,7 @@ class TCWrap : public ObjectWrap {
578 578 TCLIST *list;
579 579
580 580 public:
581   - PutlistData (const Arguments& args) : KeyData(args) {
  581 + PutlistData (const Arguments& args) : KeyData(args), ArgsData(args) {
582 582 HandleScope scope;
583 583 list = arytotclist(Handle<Array>::Cast(ARG0));
584 584 }
@@ -618,7 +618,7 @@ class TCWrap : public ObjectWrap {
618 618
619 619 class OutData : public KeyData {
620 620 public:
621   - OutData (const Arguments& args) : KeyData(args) {}
  621 + OutData (const Arguments& args) : KeyData(args), ArgsData(args) {}
622 622
623 623 bool
624 624 run () {
@@ -634,7 +634,7 @@ class TCWrap : public ObjectWrap {
634 634
635 635 class OutlistData : public KeyData {
636 636 public:
637   - OutlistData (const Arguments& args) : KeyData(args) {}
  637 + OutlistData (const Arguments& args) : KeyData(args), ArgsData(args) {}
638 638
639 639 bool
640 640 run () {
@@ -670,7 +670,7 @@ class TCWrap : public ObjectWrap {
670 670 TCLIST *list;
671 671
672 672 public:
673   - GetlistData (const Arguments& args) : KeyData(args) {}
  673 + GetlistData (const Arguments& args) : KeyData(args), ArgsData(args) {}
674 674
675 675 ~GetlistData () {
676 676 tclistdel(list);
@@ -700,7 +700,7 @@ class TCWrap : public ObjectWrap {
700 700 int max;
701 701
702 702 public:
703   - FwmkeysData (const Arguments& args) : GetlistData(args) {
  703 + FwmkeysData (const Arguments& args) : GetlistData(args), ArgsData(args) {
704 704 max = args[1]->Int32Value();
705 705 }
706 706
@@ -727,7 +727,7 @@ class TCWrap : public ObjectWrap {
727 727 int vnum;
728 728
729 729 public:
730   - VnumData (const Arguments& args) : KeyData(args) {}
  730 + VnumData (const Arguments& args) : KeyData(args), ArgsData(args) {}
731 731
732 732 bool
733 733 run () {
@@ -753,7 +753,7 @@ class TCWrap : public ObjectWrap {
753 753 int vsiz;
754 754
755 755 public:
756   - VsizData (const Arguments& args) : KeyData(args) {}
  756 + VsizData (const Arguments& args) : KeyData(args), ArgsData(args) {}
757 757
758 758 bool
759 759 run () {
@@ -779,7 +779,7 @@ class TCWrap : public ObjectWrap {
779 779 int num;
780 780
781 781 public:
782   - AddintData (const Arguments& args) : KeyData(args) {
  782 + AddintData (const Arguments& args) : KeyData(args), ArgsData(args) {
783 783 num = args[1]->Int32Value();
784 784 }
785 785
@@ -824,7 +824,7 @@ class TCWrap : public ObjectWrap {
824 824
825 825 class IternextData : public ValueData {
826 826 public:
827   - IternextData (const Arguments& args) {}
  827 + IternextData (const Arguments& args) : ArgsData(args){}
828 828
829 829 bool run () {
830 830 vbuf = tcw->Iternext(&vsiz);
@@ -843,7 +843,7 @@ class TCWrap : public ObjectWrap {
843 843 double num;
844 844
845 845 public:
846   - AdddoubleData (const Arguments& args) : KeyData(args) {
  846 + AdddoubleData (const Arguments& args) : KeyData(args), ArgsData(args) {
847 847 num = args[1]->NumberValue();
848 848 }
849 849
@@ -903,7 +903,7 @@ class TCWrap : public ObjectWrap {
903 903
904 904 class CopyData : public FilenameData {
905 905 public:
906   - CopyData (const Arguments& args) : FilenameData(args) {}
  906 + CopyData (const Arguments& args) : FilenameData(args), ArgsData(args) {}
907 907
908 908 bool
909 909 run () {
@@ -1005,7 +1005,7 @@ class TCWrap : public ObjectWrap {
1005 1005 }
1006 1006 };
1007 1007
1008   - class FsizData : public ArgsData {
  1008 + class FsizData : public virtual ArgsData {
1009 1009 protected:
1010 1010 uint64_t fsiz;
1011 1011
@@ -1223,7 +1223,7 @@ class HDB : public TCWrap {
1223 1223 int omode;
1224 1224
1225 1225 public:
1226   - OpenData (const Arguments& args) : FilenameData(args) {
  1226 + OpenData (const Arguments& args) : FilenameData(args), ArgsData(args) {
1227 1227 omode = NOU(ARG1) ? HDBOREADER : ARG1->Int32Value();
1228 1228 }
1229 1229
@@ -1353,7 +1353,7 @@ class HDB : public TCWrap {
1353 1353
1354 1354 class OptimizeData : public TuneData {
1355 1355 public:
1356   - OptimizeData (const Arguments& args) : TuneData(args) {}
  1356 + OptimizeData (const Arguments& args) : TuneData(args), ArgsData(args) {}
1357 1357
1358 1358 bool run () {
1359 1359 return tcw->Optimize(bnum, apow, fpow, opts);
@@ -1365,7 +1365,7 @@ class HDB : public TCWrap {
1365 1365 class OptimizeAsyncData : public OptimizeData, public AsyncData {
1366 1366 public:
1367 1367 OptimizeAsyncData (const Arguments& args)
1368   - : OptimizeData(args), AsyncData(ARG4) {}
  1368 + : OptimizeData(args), AsyncData(ARG4), ArgsData(args) {}
1369 1369 };
1370 1370
1371 1371 DEFINE_ASYNC(Optimize)
@@ -1636,7 +1636,7 @@ class BDB : public TCWrap {
1636 1636 int omode;
1637 1637
1638 1638 public:
1639   - OpenData (const Arguments& args) : FilenameData(args) {
  1639 + OpenData (const Arguments& args) : FilenameData(args), ArgsData(args) {
1640 1640 omode = NOU(ARG1) ? BDBOREADER : ARG1->Int32Value();
1641 1641 }
1642 1642
@@ -1841,7 +1841,7 @@ class BDB : public TCWrap {
1841 1841
1842 1842 class OptimizeData : public TuneData {
1843 1843 public:
1844   - OptimizeData (const Arguments& args) : TuneData(args) {}
  1844 + OptimizeData (const Arguments& args) : TuneData(args), ArgsData(args) {}
1845 1845
1846 1846 bool run () {
1847 1847 return tcw->Optimize(lmemb, nmemb, bnum, apow, fpow, opts);
@@ -1853,7 +1853,7 @@ class BDB : public TCWrap {
1853 1853 class OptimizeAsyncData : public OptimizeData, public AsyncData {
1854 1854 public:
1855 1855 OptimizeAsyncData (const Arguments& args)
1856   - : OptimizeData(args), AsyncData(ARG6) {}
  1856 + : OptimizeData(args), AsyncData(ARG6), ArgsData(args) {}
1857 1857 };
1858 1858
1859 1859 DEFINE_ASYNC(Optimize)
@@ -1994,7 +1994,7 @@ class CUR : TCWrap {
1994 1994
1995 1995 class FirstData : public virtual ArgsData {
1996 1996 public:
1997   - FirstData(const Arguments& args) : ArgsData() {}
  1997 + FirstData(const Arguments& args) : ArgsData(args) {}
1998 1998
1999 1999 bool run () {
2000 2000 return tcw->First();
@@ -2040,7 +2040,7 @@ class CUR : TCWrap {
2040 2040
2041 2041 class JumpData : public KeyData {
2042 2042 public:
2043   - JumpData(const Arguments& args) : KeyData(args) {}
  2043 + JumpData(const Arguments& args) : KeyData(args), ArgsData(args) {}
2044 2044
2045 2045 bool run () {
2046 2046 return tcw->Jump(*kbuf, ksiz);
@@ -2112,7 +2112,7 @@ class CUR : TCWrap {
2112 2112 int cpmode;
2113 2113
2114 2114 public:
2115   - PutData(const Arguments& args) : KeyData(args) {
  2115 + PutData(const Arguments& args) : KeyData(args), ArgsData(args) {
2116 2116 cpmode = NOU(args[1]) ?
2117 2117 BDBCPCURRENT : args[1]->Int32Value();
2118 2118 }
@@ -2165,7 +2165,7 @@ class CUR : TCWrap {
2165 2165
2166 2166 class KeyData : public ValueData {
2167 2167 public:
2168   - KeyData(const Arguments& args) {}
  2168 + KeyData(const Arguments& args) : ArgsData(args) {}
2169 2169
2170 2170 bool run () {
2171 2171 vbuf = tcw->Key(&vsiz);
@@ -2189,7 +2189,7 @@ class CUR : TCWrap {
2189 2189
2190 2190 class ValData : public ValueData {
2191 2191 public:
2192   - ValData(const Arguments& args) {}
  2192 + ValData(const Arguments& args) : ArgsData(args) {}
2193 2193
2194 2194 bool run () {
2195 2195 vbuf = tcw->Val(&vsiz);
@@ -2349,7 +2349,7 @@ class FDB : public TCWrap {
2349 2349 int omode;
2350 2350
2351 2351 public:
2352   - OpenData (const Arguments& args) : FilenameData(args) {
  2352 + OpenData (const Arguments& args) : FilenameData(args), ArgsData(args) {
2353 2353 omode = NOU(ARG1) ? FDBOREADER : ARG1->Int32Value();
2354 2354 }
2355 2355
@@ -2455,7 +2455,7 @@ class FDB : public TCWrap {
2455 2455 return NOU(ARG1) || ARG1->IsNumber();
2456 2456 }
2457 2457
2458   - RangeData (const Arguments& args) : GetlistData(args) {
  2458 + RangeData (const Arguments& args) : GetlistData(args), ArgsData(args) {
2459 2459 max = NOU(ARG1) ? -1 : ARG1->Int32Value();
2460 2460 }
2461 2461
@@ -2502,7 +2502,7 @@ class FDB : public TCWrap {
2502 2502
2503 2503 class OptimizeData : public TuneData {
2504 2504 public:
2505   - OptimizeData (const Arguments& args) : TuneData(args) {}
  2505 + OptimizeData (const Arguments& args) : TuneData(args), ArgsData(args) {}
2506 2506
2507 2507 bool run () {
2508 2508 return tcw->Optimize(width, limsiz);
@@ -2514,7 +2514,7 @@ class FDB : public TCWrap {
2514 2514 class OptimizeAsyncData : public OptimizeData, public AsyncData {
2515 2515 public:
2516 2516 OptimizeAsyncData (const Arguments& args)
2517   - : OptimizeData(args), AsyncData(ARG2) {}
  2517 + : OptimizeData(args), AsyncData(ARG2), ArgsData(args) {}
2518 2518 };
2519 2519
2520 2520 DEFINE_ASYNC(Optimize)
@@ -2783,7 +2783,7 @@ class TDB : public TCWrap {
2783 2783 int omode;
2784 2784
2785 2785 public:
2786   - OpenData (const Arguments& args) : FilenameData(args) {
  2786 + OpenData (const Arguments& args) : FilenameData(args), ArgsData(args) {
2787 2787 omode = NOU(ARG1) ? TDBOREADER : ARG1->Int32Value();
2788 2788 }
2789 2789
@@ -2825,7 +2825,7 @@ class TDB : public TCWrap {
2825 2825 TCMAP *map;
2826 2826
2827 2827 public:
2828   - PutData (const Arguments& args) : KeyData(args) {
  2828 + PutData (const Arguments& args) : KeyData(args), ArgsData(args) {
2829 2829 map = objtotcmap(Local<Object>::Cast(args[1]));
2830 2830 }
2831 2831
@@ -2858,7 +2858,7 @@ class TDB : public TCWrap {
2858 2858
2859 2859 class PutkeepData : public PutData {
2860 2860 public:
2861   - PutkeepData (const Arguments& args) : PutData(args) {}
  2861 + PutkeepData (const Arguments& args) : PutData(args), ArgsData(args) {}
2862 2862
2863 2863 bool run () {
2864 2864 return tcw->Putkeep(*kbuf, ksiz, map);
@@ -2881,7 +2881,7 @@ class TDB : public TCWrap {
2881 2881
2882 2882 class PutcatData : public PutData {
2883 2883 public:
2884   - PutcatData (const Arguments& args) : PutData(args) {}
  2884 + PutcatData (const Arguments& args) : PutData(args), ArgsData(args) {}
2885 2885
2886 2886 bool run () {
2887 2887 return tcw->Putcat(*kbuf, ksiz, map);
@@ -2914,7 +2914,7 @@ class TDB : public TCWrap {
2914 2914 TCMAP *map;
2915 2915
2916 2916 public:
2917   - GetData (const Arguments& args) : KeyData(args) {}
  2917 + GetData (const Arguments& args) : KeyData(args), ArgsData(args) {}
2918 2918
2919 2919 ~GetData () {
2920 2920 tcmapdel(map);
@@ -3456,7 +3456,7 @@ class ADB : TCWrap {
3456 3456
3457 3457 class OpenData : public FilenameData {
3458 3458 public:
3459   - OpenData (const Arguments& args) : FilenameData(args) {}
  3459 + OpenData (const Arguments& args) : FilenameData(args), ArgsData(args) {}
3460 3460
3461 3461 bool run () {
3462 3462 return tcw->Open(*path);
@@ -3590,7 +3590,7 @@ class ADB : TCWrap {
3590 3590 class OptimizeAsyncData : public OptimizeData, public AsyncData {
3591 3591 public:
3592 3592 OptimizeAsyncData (const Arguments& args) :
3593   - OptimizeData(args), AsyncData(args[1]) {}
  3593 + OptimizeData(args), AsyncData(args[1]), ArgsData(args) {}
3594 3594 };
3595 3595
3596 3596 DEFINE_SYNC(Optimize)
@@ -3621,15 +3621,15 @@ class ADB : TCWrap {
3621 3621 return tcadbtrancommit(adb);
3622 3622 }
3623 3623
3624   - DEFINE_SYNC(Trancommit);
3625   - DEFINE_ASYNC(Trancommit);
  3624 + DEFINE_SYNC(Trancommit)
  3625 + DEFINE_ASYNC(Trancommit)
3626 3626
3627 3627 bool Tranabort () {
3628 3628 return tcadbtranabort(adb);
3629 3629 }
3630 3630
3631   - DEFINE_SYNC(Tranabort);
3632   - DEFINE_ASYNC(Tranabort);
  3631 + DEFINE_SYNC(Tranabort)
  3632 + DEFINE_ASYNC(Tranabort)
3633 3633
3634 3634 const char * Path () {
3635 3635 return tcadbpath(adb);
@@ -3649,7 +3649,7 @@ class ADB : TCWrap {
3649 3649
3650 3650 class SizeData : public FsizData {
3651 3651 public:
3652   - SizeData (const Arguments& args) : FsizData(args) {}
  3652 + SizeData (const Arguments& args) : FsizData(args), ArgsData(args) {}
3653 3653
3654 3654 bool run () {
3655 3655 fsiz = tcw->Size();
@@ -3677,7 +3677,7 @@ class ADB : TCWrap {
3677 3677
3678 3678 ~MiscData () {
3679 3679 tclistdel(targs);
3680   - tclistdel(ret);
  3680 + if (ret != NULL) tclistdel(ret);
3681 3681 }
3682 3682
3683 3683 static bool checkArgs (const Arguments& args) {
@@ -3699,7 +3699,7 @@ class ADB : TCWrap {
3699 3699 class MiscAsyncData : public MiscData, public AsyncData {
3700 3700 public:
3701 3701 MiscAsyncData (const Arguments& args) :
3702   - AsyncData(args[2]), MiscData(args) {}
  3702 + AsyncData(args[2]), MiscData(args), ArgsData(args) {}
3703 3703 };
3704 3704
3705 3705 DEFINE_SYNC2(Misc)
92 test/bench.js
... ... @@ -0,0 +1,92 @@
  1 +// Hash db bench
  2 +
  3 +var sys = require('sys');
  4 +var TC = require('../build/default/tokyocabinet');
  5 +var fs = require('fs');
  6 +
  7 +sys.puts("Tokyo Cabinet version " + TC.VERSION);
  8 +
  9 +/*
  10 +var samples = [];
  11 +var next_sample = function () {
  12 + var next = samples.shift();
  13 + if (next) next();
  14 +}
  15 +setTimeout(next_sample, 10);
  16 +
  17 +var put_count = 100000;
  18 +
  19 +var syncdb;
  20 +var asyncdb;
  21 +*/
  22 +
  23 +//samples.push(function() {
  24 + syncdb = new TC.HDB;
  25 + if (!syncdb.open('casket.tch', TC.HDB.OWRITER | TC.HDB.OCREAT)) {
  26 + sys.error(syncdb.errmsg());
  27 + }
  28 + syncdb.put('a','b');
  29 + /*
  30 + var t = Date.now();
  31 + for (var i = 0; i < put_count; i++) {
  32 + syncdb.put('key' + i, '0123456789');
  33 + }
  34 + sys.puts(Date.now() - t);
  35 + */
  36 +//});
  37 +
  38 +/*
  39 +samples.push(function() {
  40 + sys.puts("== Sample: HDB ==");
  41 + var HDB = TC.HDB;
  42 +
  43 + var hdb = new HDB;
  44 + // this line is necessary for an async operation
  45 + if (!hdb.setmutex()) throw hdb.errmsg();
  46 +
  47 + hdb.openAsync('casket.tch', HDB.OWRITER | HDB.OCREAT, function(e) {
  48 + if (e) sys.error(hdb.errmsg(e));
  49 +
  50 + var n = 3;
  51 + [["foo", "hop"], ["bar", "step"], ["baz", "jump"]].forEach(function(kv) {
  52 + hdb.putAsync(kv[0], kv[1], function(e) {
  53 + if (e) sys.error(hdb.errmsg(e));
  54 +
  55 + if (--n === 0) {
  56 + hdb.getAsync("foo", function(e, value) {
  57 + if (e) sys.error(hdb.errmsg(e));
  58 + sys.puts(value);
  59 +
  60 + hdb.iterinitAsync(function(e) {
  61 + if (e) sys.error(hdb.errmsg(e));
  62 +
  63 + hdb.iternextAsync(function func(e ,key) { // recursive asynchronous function
  64 + if (e !== HDB.ENOREC) { // if next key exsists
  65 + if (e) sys.error(hdb.errmsg(e));
  66 +
  67 + hdb.getAsync(key, function(e, value) {
  68 + if (e) sys.error(hdb.errmsg(e));
  69 + sys.puts(key + ':' + value);
  70 + hdb.iternextAsync(func);
  71 + });
  72 +
  73 + } else { // if next key does not exist
  74 +
  75 + hdb.closeAsync(function(e) {
  76 + if (e) sys.error(hdb.errmsg(e));
  77 + fs.unlink('casket.tch');
  78 +
  79 + next_sample();
  80 + });
  81 +
  82 + }
  83 + });
  84 + });
  85 + });
  86 + }
  87 + });
  88 + });
  89 + });
  90 +
  91 +});
  92 +*/
1  test/sample.js
@@ -196,7 +196,6 @@ sys.puts("Tokyo Cabinet version " + TC.VERSION);
196 196 if (!adb.open('casket.tcb')) {
197 197 sys.error("open error");
198 198 }
199   - sys.puts(adb.misc("ecode"))
200 199
201 200 if (!adb.put("foo", "hop") ||
202 201 !adb.put("bar", "step") ||

0 comments on commit 8a56169

Please sign in to comment.
Something went wrong with that request. Please try again.