|
| 1 | +/* tslint:disable */ |
| 2 | +import ClientMessage = require('../ClientMessage'); |
| 3 | +import {BitsUtil} from '../BitsUtil'; |
| 4 | +import {Data} from '../serialization/Data'; |
| 5 | +import {SemaphoreMessageType} from './SemaphoreMessageType'; |
| 6 | + |
| 7 | +const REQUEST_TYPE = SemaphoreMessageType.SEMAPHORE_INIT; |
| 8 | +const RESPONSE_TYPE = 101; |
| 9 | +const RETRYABLE = false; |
| 10 | + |
| 11 | +export class SemaphoreInitCodec { |
| 12 | + |
| 13 | + static calculateSize(name: string, permits: number) { |
| 14 | +// Calculates the request payload size |
| 15 | + let dataSize: number = 0; |
| 16 | + dataSize += BitsUtil.calculateSizeString(name); |
| 17 | + dataSize += BitsUtil.INT_SIZE_IN_BYTES; |
| 18 | + return dataSize; |
| 19 | + } |
| 20 | + |
| 21 | + static encodeRequest(name: string, permits: number) { |
| 22 | +// Encode request into clientMessage |
| 23 | + const clientMessage = ClientMessage.newClientMessage(this.calculateSize(name, permits)); |
| 24 | + clientMessage.setMessageType(REQUEST_TYPE); |
| 25 | + clientMessage.setRetryable(RETRYABLE); |
| 26 | + clientMessage.appendString(name); |
| 27 | + clientMessage.appendInt32(permits); |
| 28 | + clientMessage.updateFrameLength(); |
| 29 | + return clientMessage; |
| 30 | + } |
| 31 | + |
| 32 | + static decodeResponse(clientMessage: ClientMessage, toObjectFunction: (data: Data) => any = null) { |
| 33 | +// Decode response from client message |
| 34 | + const parameters: any = {'response': null}; |
| 35 | + parameters['response'] = clientMessage.readBoolean(); |
| 36 | + return parameters; |
| 37 | + } |
| 38 | +} |
0 commit comments