[SignalingServer] Enable the d2d_offload flag
[platform/framework/web/wrtjs.git] / device_home / signaling_server / gen / socket-tizen.js
1 const TAG = 'socket-tizen.js';
2
3 class SocketTizen {
4   constructor(id, localPort) {
5     console.log(TAG, `SocketTizen created for ${id}`);
6     this._appId = id;
7     this._portName = 'offload';
8     this._localPort = localPort;
9     this._remotePort = null;
10     this._eventHandlers = {};
11   }
12
13   get id() {
14     return this._appId;
15   }
16
17   on(event, callback) {
18     this._eventHandlers[event] = callback.bind(null);
19   }
20
21   handleEvents(event, value) {
22     const handler = this._eventHandlers[event];
23     if (!handler) {
24       console.error(TAG, `Messageport ${event} handler is not found`);
25       return;
26     }
27
28     handler(value);
29   }
30
31   emit(event, message) {
32     console.log(TAG, `Messageport emit: ${event}`);
33     const value = message || {};
34     try {
35       this._remotePort.sendMessage(
36         [
37           {
38             key: event,
39             value: JSON.stringify(value)
40           }
41         ],
42         this._localPort
43       );
44     } catch (error) {
45       console.error(TAG, 'Messageport emit failed:' + error);
46       throw new Error('Messageport emit failed');
47     }
48   }
49
50   connect() {
51     console.log(TAG, `Messageport try to connect ${this._appId}`);
52     try {
53       this._remotePort = tizen.messageport.requestRemoteMessagePort(
54         this._appId,
55         this._portName
56       );
57
58       this.handleEvents('connection', this);
59       this.emit('connect');
60     } catch (error) {
61       console.error(TAG, 'Messageport connection failed: ' + error);
62     }
63   }
64
65   close() {
66     // TODO: Need to implement
67   }
68 }
69
70 module.exports = SocketTizen;