UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

171 lines 11.2 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { QueueComProtocol } from '@iotize/tap/protocol/core'; import { of, Subject } from 'rxjs'; import { delay, first } from 'rxjs/operators'; import { debug } from '../debug'; import { MockRouter } from './mock-router'; const TAG = 'MockProtocol'; export function createMockProtocol() { return new MockProtocol(); } /** * * <p> * This is a mock com protocol for testing only * <p> * We can simulate iotize response according to the request message */ export class MockProtocol extends QueueComProtocol { constructor() { super(); this.mockOptions = { connect: { delay: 100, }, disconnect: { delay: 100, }, write: { delay: 1, }, }; this.input = new Subject(); this.output = new Subject(); this._router = new MockRouter(); // this.connectDelay = 2000; // this.disconnectDelay = 2000; // this.callback = callback; // this.lastReceivedData = new Uint8Array(0); // this.configuration = new Configuration(); // this.configuration.connectionTimeoutMillis = 3000; // this.configuration.sendTimeoutMillis = 3000; } static MIRROR() { const mockProtocol = new MockProtocol(); mockProtocol.input.subscribe((input) => { mockProtocol.setOutputData(input); }); // mockProtocol.router.addRoute( // (command: Uint8Array) => { // return true; // }, // (request: Uint8Array) => { // return request; // } // ); return mockProtocol; } // /** // * Create a new instance from roote mapping // */ // public static createFromRoutes(map: RouteMapping): MockProtocol { // const mockProtocol = new MockProtocol(); // mockProtocol.router.addRoutes(map); // return mockProtocol; // } // public get router(): MockRouter { // return this._router; // } setConnectionState(connectionState) { debug(TAG, `setConnectionState: ${connectionState}`); this.connectionState = connectionState; return this; } setConnectDelay(connectDelay) { this.mockOptions.connect.delay = connectDelay; return this; } getDisconnectDelay() { return this.mockOptions.disconnect.delay; } setDisconnectDelay(disconnectDelay) { this.mockOptions.disconnect.delay = disconnectDelay; return this; } setOutputData(inputData) { this.lastTranseiveData = inputData; this.output.next(inputData); } setInputData(outputData) { this.lastReceivedData = outputData; this.input.next(outputData); } setCallback(callback) { this.callback = callback; } _connect(options) { return of(undefined).pipe(delay(this.mockOptions.connect.delay)); } _disconnect(options) { return of(undefined).pipe(delay(this.mockOptions.disconnect.delay)); } write(request) { return __awaiter(this, void 0, void 0, function* () { try { if (this.callback) { yield this.callback.beforeWrite(request); } // this.lastReceivedData = request; // const response = this.router.findRoute(request); // if (!response) { // throw new Error(`Not route for request ${bufferToHexString(request)}`) // } // debug( // TAG, // 'MockProtocol', // 'Mocking response for ' + request + ' => ' + response // ); // var result = this.responseEncoder.encode(response); this.setInputData(request); if (this.callback) { yield this.callback.afterWrite(request); } return new Promise((resolve) => setTimeout(resolve, this.mockOptions.write.delay)); } catch (err) { return new Promise((resolve, reject) => setTimeout(() => reject(err), this.mockOptions.write.delay)); } }); } read() { try { if (this.callback) { this.callback.beforeRead(); } return this.output .pipe(first()) .toPromise() .then((v) => (v ? v : new Uint8Array())); // while (!this.hasNewData()) { // // TODO wait ?? // } // if (this.lastTranseiveData) { // const result = of(this.lastTranseiveData); // if (this.callback) { // this.callback.afterRead(result); // } // return result.toPromise(); // } else { // return Promise.reject(new Error('Read timeout')); // } } catch (err) { return Promise.reject(err); } } } // public addOnRequestListener() { // this.mOnRequestListener = // } // public interface onRequestListener{ // onRequest(RequestMessage request); // } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1wcm90b2NvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Rlc3Rpbmcvc3JjL21vY2svbW9jay1wcm90b2NvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFLQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFakMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUM7QUFnQjNCLE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsT0FBTyxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQzVCLENBQUM7QUFVRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sWUFBYSxTQUFRLGdCQUFnQjtJQXFCaEQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQW5CVixnQkFBVyxHQUFHO1lBQ1osT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxHQUFHO2FBQ1g7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLEdBQUc7YUFDWDtZQUNELEtBQUssRUFBRTtnQkFDTCxLQUFLLEVBQUUsQ0FBQzthQUNUO1NBQ0YsQ0FBQztRQUVGLFVBQUssR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO1FBQ2xDLFdBQU0sR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO1FBT2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNoQyw0QkFBNEI7UUFDNUIsK0JBQStCO1FBQy9CLDRCQUE0QjtRQUM1Qiw2Q0FBNkM7UUFDN0MsNENBQTRDO1FBQzVDLHFEQUFxRDtR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