agones.dev/agones@v1.54.0/sdks/nodejs/src/beta.js (about)

     1  // Copyright 2020 Google LLC All Rights Reserved.
     2  
     3  //
     4  // Licensed under the Apache License, Version 2.0 (the "License");
     5  // you may not use this file except in compliance with the License.
     6  // You may obtain a copy of the License at
     7  //
     8  //     http://www.apache.org/licenses/LICENSE-2.0
     9  //
    10  // Unless required by applicable law or agreed to in writing, software
    11  // distributed under the License is distributed on an "AS IS" BASIS,
    12  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  // See the License for the specific language governing permissions and
    14  // limitations under the License.
    15  
    16  const grpc = require('@grpc/grpc-js');
    17  const fieldMask = require('google-protobuf/google/protobuf/field_mask_pb');
    18  const jspbWrappers = require('google-protobuf/google/protobuf/wrappers_pb');
    19  
    20  const messages = require('../lib/beta/beta_pb');
    21  const servicesPackageDefinition = require('../lib/beta/beta_grpc_pb');
    22  
    23  class Beta {
    24  	constructor(address, credentials) {
    25  		const services = grpc.loadPackageDefinition(servicesPackageDefinition);
    26  		this.client = new services.agones.dev.sdk.beta.SDK(address, credentials);
    27  	}
    28  
    29  	async getCounterCount(key) {
    30  		const request = new messages.GetCounterRequest();
    31  		request.setName(key);
    32  
    33  		return new Promise((resolve, reject) => {
    34  			this.client.getCounter(request, (error, response) => {
    35  				if (error) {
    36  					reject(error);
    37  				} else {
    38  					resolve(response.getCount());
    39  				}
    40  			});
    41  		});
    42  	}
    43  
    44  	async incrementCounter(key, amount) {
    45  		const updateRequest = new messages.CounterUpdateRequest();
    46  		updateRequest.setName(key);
    47  		updateRequest.setCountdiff(amount);
    48  		const request = new messages.UpdateCounterRequest();
    49  		request.setCounterupdaterequest(updateRequest);
    50  
    51  		return new Promise((resolve, reject) => {
    52  			this.client.updateCounter(request, (error) => {
    53  				if (error) {
    54  					reject(error);
    55  				} else {
    56  					resolve();
    57  				}
    58  			});
    59  		});
    60  	}
    61  
    62  	async decrementCounter(key, amount) {
    63  		const updateRequest = new messages.CounterUpdateRequest();
    64  		updateRequest.setName(key);
    65  		updateRequest.setCountdiff(-amount);
    66  		const request = new messages.UpdateCounterRequest();
    67  		request.setCounterupdaterequest(updateRequest);
    68  
    69  		return new Promise((resolve, reject) => {
    70  			this.client.updateCounter(request, (error) => {
    71  				if (error) {
    72  					reject(error);
    73  				} else {
    74  					resolve();
    75  				}
    76  			});
    77  		});
    78  	}
    79  
    80  	async setCounterCount(key, amount) {
    81  		let count = new jspbWrappers.Int64Value();
    82  		count.setValue(amount);
    83  		const updateRequest = new messages.CounterUpdateRequest();
    84  		updateRequest.setName(key);
    85  		updateRequest.setCount(count);
    86  		const request = new messages.UpdateCounterRequest();
    87  		request.setCounterupdaterequest(updateRequest);
    88  
    89  		return new Promise((resolve, reject) => {
    90  			this.client.updateCounter(request, (error) => {
    91  				if (error) {
    92  					reject(error);
    93  				} else {
    94  					resolve();
    95  				}
    96  			});
    97  		});
    98  	}
    99  
   100  	async getCounterCapacity(key) {
   101  		const request = new messages.GetCounterRequest();
   102  		request.setName(key);
   103  
   104  		return new Promise((resolve, reject) => {
   105  			this.client.getCounter(request, (error, response) => {
   106  				if (error) {
   107  					reject(error);
   108  				} else {
   109  					resolve(response.getCapacity());
   110  				}
   111  			});
   112  		});
   113  	}
   114  
   115  	async setCounterCapacity(key, amount) {
   116  		const capacity = new jspbWrappers.Int64Value();
   117  		capacity.setValue(amount);
   118  		const updateRequest = new messages.CounterUpdateRequest();
   119  		updateRequest.setName(key);
   120  		updateRequest.setCapacity(capacity);
   121  		const request = new messages.UpdateCounterRequest();
   122  		request.setCounterupdaterequest(updateRequest);
   123  
   124  		return new Promise((resolve, reject) => {
   125  			this.client.updateCounter(request, (error) => {
   126  				if (error) {
   127  					reject(error);
   128  				} else {
   129  					resolve();
   130  				}
   131  			});
   132  		});
   133  	}
   134  
   135  	async getListCapacity(key) {
   136  		const request = new messages.GetListRequest();
   137  		request.setName(key);
   138  
   139  		return new Promise((resolve, reject) => {
   140  			this.client.getList(request, (error, response) => {
   141  				if (error) {
   142  					reject(error);
   143  				} else {
   144  					resolve(response.getCapacity());
   145  				}
   146  			});
   147  		});
   148  	}
   149  
   150  	async setListCapacity(key, amount) {
   151  		const list = new messages.List();
   152  		list.setName(key);
   153  		list.setCapacity(amount);
   154  		const updateMask = new fieldMask.FieldMask({Name: 'capacity'});
   155  		const request = new messages.UpdateListRequest();
   156  		request.setList(list);
   157  		request.setUpdateMask(updateMask);
   158  
   159  		return new Promise((resolve, reject) => {
   160  			this.client.updateList(request, (error) => {
   161  				if (error) {
   162  					reject(error);
   163  				} else {
   164  					resolve();
   165  				}
   166  			});
   167  		});
   168  	}
   169  
   170  	async listContains(key, value) {
   171  		const request = new messages.GetListRequest();
   172  		request.setName(key);
   173  
   174  		return new Promise((resolve, reject) => {
   175  			this.client.getList(request, (error, response) => {
   176  				if (error) {
   177  					reject(error);
   178  				} else {
   179  					resolve(response.getValuesList().indexOf(value) >= 0);
   180  				}
   181  			});
   182  		});
   183  	}
   184  
   185  	async getListLength(key) {
   186  		const request = new messages.GetListRequest();
   187  		request.setName(key);
   188  
   189  		return new Promise((resolve, reject) => {
   190  			this.client.getList(request, (error, response) => {
   191  				if (error) {
   192  					reject(error);
   193  				} else {
   194  					resolve(response.getValuesList().length);
   195  				}
   196  			});
   197  		});
   198  	}
   199  
   200  	async getListValues(key) {
   201  		const request = new messages.GetListRequest();
   202  		request.setName(key);
   203  
   204  		return new Promise((resolve, reject) => {
   205  			this.client.getList(request, (error, response) => {
   206  				if (error) {
   207  					reject(error);
   208  				} else {
   209  					resolve(response.getValuesList());
   210  				}
   211  			});
   212  		});
   213  	}
   214  
   215  	async appendListValue(key, value) {
   216  		const request = new messages.AddListValueRequest();
   217  		request.setName(key);
   218  		request.setValue(value);
   219  
   220  		return new Promise((resolve, reject) => {
   221  			this.client.addListValue(request, (error) => {
   222  				if (error) {
   223  					reject(error);
   224  				} else {
   225  					resolve();
   226  				}
   227  			});
   228  		});
   229  	}
   230  
   231  	async deleteListValue(key, value) {
   232  		const request = new messages.RemoveListValueRequest();
   233  		request.setName(key);
   234  		request.setValue(value);
   235  
   236  		return new Promise((resolve, reject) => {
   237  			this.client.removeListValue(request, (error) => {
   238  				if (error) {
   239  					reject(error);
   240  				} else {
   241  					resolve();
   242  				}
   243  			});
   244  		});
   245  	}
   246  }
   247  
   248  module.exports = Beta;