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;