@@ -6,10 +6,18 @@ const services = require('../lib/sdk_grpc_pb');
66class AgonesSDK {
77 constructor ( ) {
88 this . client = new services . SDKClient ( 'localhost:59357' , grpc . credentials . createInsecure ( ) ) ;
9+ this . healthStream = undefined ;
10+ this . emitters = [ ] ;
11+ }
12+ async close ( ) {
13+ if ( this . healthStream !== undefined ) {
14+ this . healthStream . destroy ( )
15+ }
16+ this . emitters . forEach ( emitter => emitter . call . cancel ( ) ) ;
17+ this . client . close ( ) ;
918 }
10-
1119 async ready ( ) {
12- let request = new messages . Empty ( ) ;
20+ const request = new messages . Empty ( ) ;
1321 return new Promise ( ( resolve , reject ) => {
1422 this . client . ready ( request , ( error , response ) => {
1523 if ( error ) {
@@ -20,9 +28,8 @@ class AgonesSDK {
2028 } ) ;
2129 } ) ;
2230 }
23-
2431 async shutdown ( ) {
25- let request = new messages . Empty ( ) ;
32+ const request = new messages . Empty ( ) ;
2633 return new Promise ( ( resolve , reject ) => {
2734 this . client . shutdown ( request , ( error , response ) => {
2835 if ( error ) {
@@ -33,19 +40,17 @@ class AgonesSDK {
3340 } ) ;
3441 } ) ;
3542 }
36-
3743 health ( ) {
38- if ( ! this . healthStream ) {
44+ if ( this . healthStream === undefined ) {
3945 this . healthStream = this . client . health ( ( error ) => {
4046 // Ignore error as this can't be caught
4147 } ) ;
4248 }
43- let request = new messages . Empty ( ) ;
49+ const request = new messages . Empty ( ) ;
4450 this . healthStream . write ( request ) ;
4551 }
46-
4752 async getGameServer ( ) {
48- let request = new messages . Empty ( ) ;
53+ const request = new messages . Empty ( ) ;
4954 return new Promise ( ( resolve , reject ) => {
5055 this . client . getGameServer ( request , ( error , response ) => {
5156 if ( error ) {
@@ -56,17 +61,21 @@ class AgonesSDK {
5661 } ) ;
5762 } ) ;
5863 }
59-
6064 watchGameServer ( callback ) {
61- let request = new messages . Empty ( ) ;
62- let emitter = this . client . watchGameServer ( request ) ;
65+ const request = new messages . Empty ( ) ;
66+ const emitter = this . client . watchGameServer ( request ) ;
6367 emitter . on ( 'data' , ( data ) => {
6468 callback ( data . toObject ( ) ) ;
6569 } ) ;
70+ emitter . on ( 'error' , ( error ) => {
71+ if ( error . code === grpc . status . CANCELLED ) { // this happens when call is cancelled
72+ return ;
73+ }
74+ } )
75+ this . emitters . push ( emitter ) ;
6676 }
67-
6877 async setLabel ( key , value ) {
69- let request = new messages . KeyValue ( ) ;
78+ const request = new messages . KeyValue ( ) ;
7079 request . setKey ( key ) ;
7180 request . setValue ( value ) ;
7281 return new Promise ( ( resolve , reject ) => {
@@ -79,9 +88,8 @@ class AgonesSDK {
7988 } ) ;
8089 } ) ;
8190 }
82-
8391 async setAnnotation ( key , value ) {
84- let request = new messages . KeyValue ( ) ;
92+ const request = new messages . KeyValue ( ) ;
8593 request . setKey ( key ) ;
8694 request . setValue ( value ) ;
8795 return new Promise ( ( resolve , reject ) => {
0 commit comments