1- const dnode = require ( 'dnode' ) ;
21const q = require ( 'q' ) ;
32const net = require ( 'net' ) ;
43const config = require ( './config-manager' ) . config ;
4+ const { RpcClient } = require ( './rpc' ) ;
55
66config . common . dbCollections = [
77 'leaderboard.power' ,
@@ -69,8 +69,7 @@ exports._connect = function storageConnect() {
6969 console . log ( 'Connecting to storage' ) ;
7070
7171 var socket = net . connect ( process . env . STORAGE_PORT , process . env . STORAGE_HOST ) ;
72- var d = dnode ( ) ;
73- socket . pipe ( d ) . pipe ( socket ) ;
72+ var rpcClient = new RpcClient ( socket ) ;
7473
7574 var defer = q . defer ( ) ;
7675 var resetDefer = q . defer ( ) ;
@@ -85,64 +84,64 @@ exports._connect = function storageConnect() {
8584 return fn ;
8685 }
8786
88- d . on ( 'remote' , remote => {
89-
90- function wrapCollection ( collectionName ) {
91- var wrap = { } ;
92- [ 'find' , 'findOne' , 'by' , 'clear' , 'count' , 'ensureIndex' , 'removeWhere' , 'insert' ] . forEach ( method => {
93- wrap [ method ] = function ( ) {
94- return q . ninvoke ( remote , 'dbRequest' , collectionName , method , Array . prototype . slice . call ( arguments ) ) ;
95- }
96- } ) ;
97- wrap . update = resetInterceptor ( function ( query , update , params ) {
98- return q . ninvoke ( remote , 'dbUpdate' , collectionName , query , update , params ) ;
99- } ) ;
100- wrap . bulk = resetInterceptor ( function ( bulk ) {
101- return q . ninvoke ( remote , 'dbBulk' , collectionName , bulk ) ;
102- } ) ;
103- wrap . findEx = resetInterceptor ( function ( query , opts ) {
104- return q . ninvoke ( remote , 'dbFindEx' , collectionName , query , opts ) ;
105- } ) ;
106- return wrap ;
107- }
108-
109- config . common . dbCollections . forEach ( i => exports . db [ i ] = wrapCollection ( i ) ) ;
11087
111- exports . resetAllData = ( ) => q . ninvoke ( remote , 'dbResetAllData' ) ;
112-
113- Object . assign ( exports . queue , {
114- fetch : resetInterceptor ( q . nbind ( remote . queueFetch , remote ) ) ,
115- add : resetInterceptor ( q . nbind ( remote . queueAdd , remote ) ) ,
116- addMulti : resetInterceptor ( q . nbind ( remote . queueAddMulti , remote ) ) ,
117- markDone : resetInterceptor ( q . nbind ( remote . queueMarkDone , remote ) ) ,
118- whenAllDone : resetInterceptor ( q . nbind ( remote . queueWhenAllDone , remote ) ) ,
119- reset : resetInterceptor ( q . nbind ( remote . queueReset , remote ) )
88+ function wrapCollection ( collectionName ) {
89+ var wrap = { } ;
90+ [ 'find' , 'findOne' , 'by' , 'clear' , 'count' , 'ensureIndex' , 'removeWhere' , 'insert' ] . forEach ( method => {
91+ wrap [ method ] = function ( ) {
92+ return rpcClient . request ( 'dbRequest' , collectionName , method , Array . prototype . slice . call ( arguments ) ) ;
93+ }
12094 } ) ;
121-
122- Object . assign ( exports . env , {
123- get : resetInterceptor ( q . nbind ( remote . dbEnvGet , remote ) ) ,
124- mget : resetInterceptor ( q . nbind ( remote . dbEnvMget , remote ) ) ,
125- set : resetInterceptor ( q . nbind ( remote . dbEnvSet , remote ) ) ,
126- setex : resetInterceptor ( q . nbind ( remote . dbEnvSetex , remote ) ) ,
127- expire : resetInterceptor ( q . nbind ( remote . dbEnvExpire , remote ) ) ,
128- ttl : resetInterceptor ( q . nbind ( remote . dbEnvTtl , remote ) ) ,
129- del : resetInterceptor ( q . nbind ( remote . dbEnvDel , remote ) ) ,
130- hmget : resetInterceptor ( q . nbind ( remote . dbEnvHmget , remote ) ) ,
131- hmset : resetInterceptor ( q . nbind ( remote . dbEnvHmset , remote ) ) ,
132- hget : resetInterceptor ( q . nbind ( remote . dbEnvHget , remote ) ) ,
133- hset : resetInterceptor ( q . nbind ( remote . dbEnvHset , remote ) )
95+ wrap . update = resetInterceptor ( function ( query , update , params ) {
96+ return rpcClient . request ( 'dbUpdate' , collectionName , query , update , params ) ;
13497 } ) ;
135-
136- Object . assign ( exports . pubsub , {
137- publish : resetInterceptor ( q . nbind ( remote . publish , remote ) ) ,
138- subscribe : ( channel , cb ) => remote . subscribe ( channel , cb )
98+ wrap . bulk = resetInterceptor ( function ( bulk ) {
99+ return rpcClient . request ( 'dbBulk' , collectionName , bulk ) ;
100+ } ) ;
101+ wrap . findEx = resetInterceptor ( function ( query , opts ) {
102+ return rpcClient . request ( 'dbFindEx' , collectionName , query , opts ) ;
139103 } ) ;
104+ return wrap ;
105+ }
106+
107+ config . common . dbCollections . forEach ( i => exports . db [ i ] = wrapCollection ( i ) ) ;
140108
141- exports . _connected = true ;
109+ exports . resetAllData = ( ) => rpcClient . request ( 'dbResetAllData' ) ;
142110
143- defer . resolve ( ) ;
111+ Object . assign ( exports . queue , {
112+ fetch : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'queueFetch' ) ) ,
113+ add : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'queueAdd' ) ) ,
114+ addMulti : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'queueAddMulti' ) ) ,
115+ markDone : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'queueMarkDone' ) ) ,
116+ whenAllDone : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'queueWhenAllDone' ) ) ,
117+ reset : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'queueReset' ) )
144118 } ) ;
145119
120+ Object . assign ( exports . env , {
121+ get : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'dbEnvGet' ) ) ,
122+ mget : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'dbEnvMget' ) ) ,
123+ set : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'dbEnvSet' ) ) ,
124+ setex : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'dbEnvSetex' ) ) ,
125+ expire : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'dbEnvExpire' ) ) ,
126+ ttl : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'dbEnvTtl' ) ) ,
127+ del : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'dbEnvDel' ) ) ,
128+ hmget : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'dbEnvHmget' ) ) ,
129+ hmset : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'dbEnvHmset' ) ) ,
130+ hget : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'dbEnvHget' ) ) ,
131+ hset : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'dbEnvHset' ) )
132+ } ) ;
133+
134+ Object . assign ( exports . pubsub , {
135+ publish : resetInterceptor ( rpcClient . request . bind ( rpcClient , 'publish' ) ) ,
136+ subscribe ( channel , cb ) {
137+ rpcClient . subscribe ( channel , cb ) ;
138+ }
139+ } ) ;
140+
141+ exports . _connected = true ;
142+
143+ defer . resolve ( ) ;
144+
146145 socket . on ( 'error' , err => {
147146 console . error ( 'Storage connection lost' , err ) ;
148147 resetDefer . resolve ( 'reset' ) ;
0 commit comments