@@ -88,7 +88,8 @@ let Rosnodejs = {
8888 return Promise . resolve ( this . getNodeHandle ( ) ) ;
8989 }
9090 // else
91- throw new Error ( 'Unable to initialize node [' + nodeName + '] - node [' + rosNode . getNodeName ( ) + '] already exists' ) ;
91+ throw new Error ( 'Unable to initialize node [' + nodeName + '] - node ['
92+ + rosNode . getNodeName ( ) + '] already exists' ) ;
9293 }
9394
9495 // FIXME: validate nodeName -- MUST START WITH '/'
@@ -119,15 +120,26 @@ let Rosnodejs = {
119120 // resolve when connection to master is established
120121 let checkMasterTimeout = 0 ;
121122 rosNode = new RosNode ( nodeName , rosMasterUri ) ;
123+
122124 return new Promise ( ( resolve , reject ) => {
123- _checkMasterHelper ( resolve , 0 ) ;
125+ this . use ( options . messages , options . services ) . then ( ( ) => {
126+ _checkMasterHelper ( resolve , 0 ) ;
127+ } ) ;
124128 } )
125129 . catch ( ( err ) => {
126130 log . error ( 'Error: ' + err ) ;
127131 } ) ;
128132 } ,
129133
130134 require ( msgPackage ) {
135+ // check our registry of on-demand generate message definition
136+ var fromRegistry = messages . getPackageFromRegistry ( msgPackage ) ;
137+ if ( fromRegistry ) {
138+ return fromRegistry ;
139+ }
140+
141+ // if we can't find it in registry, check for gennodejs
142+ // pre-compiled versions
131143 let pack = msgUtils . getPackage ( msgPackage ) ;
132144 if ( ! pack ) {
133145 msgUtils . loadMessagePackage ( msgPackage ) ;
@@ -139,60 +151,54 @@ let Rosnodejs = {
139151
140152 /** create message classes and services classes for all the given
141153 * types before calling callback */
142- use ( messages , services , callback ) {
154+ use ( messages , services ) {
143155 const self = this ;
144- this . _useMessages ( messages , function ( ) {
145- self . _useServices ( services , callback ) ;
156+ return new Promise ( ( resolve , reject ) => {
157+ self . _useMessages ( messages )
158+ . then ( ( ) => {
159+ return self . _useServices ( services ) ;
160+ } ) . then ( ( ) => {
161+ resolve ( ) ;
162+ } ) ;
146163 } ) ;
147164 } ,
148165
149166 /** create message classes for all the given types */
150- _useMessages ( types , callback ) {
151- var Messages = [ ] ;
152- types . forEach ( function ( type ) {
153- console . log ( 'get message type! ' + type ) ;
154- messages . getMessage ( type , function ( error , Message ) {
155- console . log ( 'got it!' ) ;
156- Messages . push ( Message ) ;
157- if ( Messages . length === types . length ) {
158- callback ( ) ;
159- }
167+ _useMessages ( types ) {
168+ if ( ! types || types . length == 0 ) {
169+ return Promise . resolve ( ) ;
170+ }
171+ var count = types . length ;
172+ return new Promise ( ( resolve , reject ) => {
173+ types . forEach ( function ( type ) {
174+ messages . getMessage ( type , function ( error , Message ) {
175+ if ( -- count == 0 ) {
176+ resolve ( ) ;
177+ }
178+ } ) ;
160179 } ) ;
161180 } ) ;
162181 } ,
163-
182+
164183 /** create message classes for all the given types */
165- _useServices ( types , callback ) {
184+ _useServices ( types ) {
185+ if ( ! types || types . length == 0 ) {
186+ return Promise . resolve ( ) ;
187+ }
166188 var count = types . length ;
167- types . forEach ( function ( type ) {
168- console . log ( 'get service type! ' + type ) ;
169- messages . getServiceRequest ( type , function ( ) {
170- messages . getServiceResponse ( type , function ( ) {
171- console . log ( 'got it!' ) ;
172- if ( -- count == 0 ) {
173- callback ( ) ;
174- }
189+ return new Promise ( ( resolve , reject ) => {
190+ types . forEach ( function ( type ) {
191+ messages . getServiceRequest ( type , function ( ) {
192+ messages . getServiceResponse ( type , function ( ) {
193+ if ( -- count == 0 ) {
194+ resolve ( ) ;
195+ }
196+ } ) ;
175197 } ) ;
176198 } ) ;
177199 } ) ;
178200 } ,
179201
180- /** get message definition class from registry. Do not generate it
181- * from .msg file if it doesn't already exist. This is mostly
182- * because that would need to be async right now and we want a sync
183- * method. */
184- message ( type ) {
185- return messages . getFromRegistry ( type , "message" ) ;
186- } ,
187-
188- serviceRequest ( type ) {
189- return messages . getFromRegistry ( type , "request" ) ;
190- } ,
191-
192- serviceResponse ( type ) {
193- return messages . getFromRegistry ( type , "response" ) ;
194- } ,
195-
196202 /**
197203 * @return {NodeHandle } for initialized node
198204 */
0 commit comments