|
| 1 | +var EzyFoxServerClientPlugin = { |
| 2 | + $ezy: { |
| 3 | + client: null, |
| 4 | + setup: null, |
| 5 | + setupApp: null, |
| 6 | + handshakeHandler: null, |
| 7 | + accessAppHandler: null, |
| 8 | + zoneName: null, |
| 9 | + appName: null, |
| 10 | + eventHandlerCallback: null, |
| 11 | + dataHandlerCallback: null, |
| 12 | + toUTF8: function (s) { |
| 13 | + var sLength = lengthBytesUTF8(s) + 1; |
| 14 | + var sPtr = _malloc(sLength); |
| 15 | + stringToUTF8(s, sPtr, sLength); |
| 16 | + return sPtr; |
| 17 | + }, |
| 18 | + map: { |
| 19 | + 'init': function (clientName, jsonConfig, callback) { |
| 20 | + var config = JSON.parse(jsonConfig); |
| 21 | + config.getClientName = function () { |
| 22 | + return this.clientName; |
| 23 | + } |
| 24 | + var clients = EzyClients.getInstance(); |
| 25 | + ezy.client = clients.newClient(config); |
| 26 | + ezy.setup = ezy.client.setup; |
| 27 | + |
| 28 | + for (var ezyEventType in EzyEventType) { |
| 29 | + if (EzyEventType.hasOwnProperty(ezyEventType)) { |
| 30 | + var eventHandler = {"ezyEventType": ezyEventType, "clientName": clientName}; |
| 31 | + eventHandler.handle = function (event) { |
| 32 | + var jsonData = event ? JSON.stringify(event) : "{}"; |
| 33 | + EzyLogger.console(this.clientName); |
| 34 | + EzyLogger.console(this.ezyEventType); |
| 35 | + EzyLogger.console(jsonData); |
| 36 | + dynCall_viii( |
| 37 | + ezy.eventHandlerCallback, |
| 38 | + ezy.toUTF8(this.clientName), |
| 39 | + ezy.toUTF8(this.ezyEventType), |
| 40 | + ezy.toUTF8(jsonData) |
| 41 | + ); |
| 42 | + } |
| 43 | + ezy.setup.addEventHandler(ezyEventType, eventHandler); |
| 44 | + } |
| 45 | + } |
| 46 | + |
| 47 | + for (var commandId in EzyCommands) { |
| 48 | + if (EzyCommands.hasOwnProperty(commandId)) { |
| 49 | + var dataHandler = {"cmd": EzyCommands[commandId], "clientName": clientName}; |
| 50 | + dataHandler.handle = function (data) { |
| 51 | + var jsonData = data ? JSON.stringify(data) : "{}"; |
| 52 | + EzyLogger.console(this.clientName); |
| 53 | + EzyLogger.console(this.cmd); |
| 54 | + EzyLogger.console(jsonData); |
| 55 | + dynCall_viii( |
| 56 | + ezy.dataHandlerCallback, |
| 57 | + ezy.toUTF8(this.clientName), |
| 58 | + this.cmd.id, |
| 59 | + ezy.toUTF8(jsonData) |
| 60 | + ); |
| 61 | + } |
| 62 | + ezy.setup.addDataHandler(EzyCommands[commandId], dataHandler); |
| 63 | + } |
| 64 | + } |
| 65 | + |
| 66 | + dynCall_vii(callback, ezy.toUTF8(clientName), ezy.toUTF8(jsonConfig)); |
| 67 | + }, |
| 68 | + 'connect': function (clientName, jsonData, callback) { |
| 69 | + var data = JSON.parse(jsonData); |
| 70 | + ezy.client.connect(data.url); |
| 71 | + }, |
| 72 | + 'reconnect': function (clientName, callback) { |
| 73 | + EzyLogger.console('reconnect: clientName = ' + clientName); |
| 74 | + ezy.client.reconnect(); |
| 75 | + }, |
| 76 | + 'disconnect': function (clientName, jsonData, callback) { |
| 77 | + EzyLogger.console('disconnect: clientName = ' + clientName + ', jsonData = ' + jsonData); |
| 78 | + var data = JSON.parse(jsonData); |
| 79 | + ezy.client.disconnect(data.reason); |
| 80 | + }, |
| 81 | + 'send': function (clientName, jsonData, callback) { |
| 82 | + var data = JSON.parse(jsonData); |
| 83 | + var cmd = EzyCommands[data.cmdId]; |
| 84 | + var sendData = data.data; |
| 85 | + EzyClients.getInstance() |
| 86 | + .getClient(clientName) |
| 87 | + .send(cmd, sendData); |
| 88 | + }, |
| 89 | + } |
| 90 | + }, |
| 91 | + |
| 92 | + setEventHandlerCallback: function (callback) { |
| 93 | + ezy.eventHandlerCallback = callback; |
| 94 | + }, |
| 95 | + |
| 96 | + setDataHandlerCallback: function (callback) { |
| 97 | + ezy.dataHandlerCallback = callback; |
| 98 | + }, |
| 99 | + |
| 100 | + setDebug: function (value) { |
| 101 | + EzyLogger.debug = value; |
| 102 | + }, |
| 103 | + |
| 104 | + run4: function (clientName, functionName, jsonData, callback) { |
| 105 | + var clientNameString = UTF8ToString(clientName); |
| 106 | + var functionNameString = UTF8ToString(functionName); |
| 107 | + var jsonDataString = UTF8ToString(jsonData); |
| 108 | + EzyLogger.console( |
| 109 | + 'run4(clientName=' + clientNameString + ', functionName=' + |
| 110 | + functionNameString + ', jsonData=' + jsonDataString + ')' |
| 111 | + ); |
| 112 | + ezy.map[functionNameString](clientNameString, jsonDataString, callback); |
| 113 | + }, |
| 114 | + |
| 115 | + run3: function (clientName, functionName, callback) { |
| 116 | + var clientNameString = UTF8ToString(clientName); |
| 117 | + var functionNameString = UTF8ToString(functionName); |
| 118 | + EzyLogger.console('run3(clientName=' + clientNameString + ', functionName=' + functionNameString + ')'); |
| 119 | + ezy.map[functionNameString](clientNameString, callback); |
| 120 | + } |
| 121 | +}; |
| 122 | + |
| 123 | +autoAddDeps(EzyFoxServerClientPlugin, '$ezy'); |
| 124 | +mergeInto(LibraryManager.library, EzyFoxServerClientPlugin); |
0 commit comments