Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 111 additions & 0 deletions nodejs/tfwconnector/TWFConnector.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
'use strict';
const zmq = require('zeromq'),
subSock = zmq.socket('sub'),
pushSock = zmq.socket('push');

const subPort = process.env.TFW_PUBLISHER_PORT || 7654,
pushPort = process.env.TFW_RECEIVER_PORT || 8765;

const subAddress = "tcp://localhost:" + subPort,
pushAddress = "tcp://localhost:" + pushPort;


class TFWConnector {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be named TFWServerConnector to harmonize with python, cpp and java implementations.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The MessageSender.send() and MessageSender.sendToEventHandlers() methods should be implemented here as mentioned above (MessageSender is only meant to write instructions).

constructor() {
this.pushSocket = pushSock.connect(pushAddress);
this.subSocket = subSock.connect(subAddress);
console.log("Push socket connected to: " + pushAddress + "\n" + "Subscribe socket connected to: " + subAddress);
}

subscribe(key) {
this.subSocket.subscribe(key);
}

sendMessage(message, name = "avataobot") {
let key = "message";
let data = {
key: key,
data: {
originator: name,
timestamp: Date.now(),
message: message
},
trigger: ''
};
let messageToSend = createTFWMessage(key, data);
this.pushSocket.send(messageToSend);
}

setView(viewType) {
let key = "dashboard";
let data = {
key: key,
data: {
command: "layout",
value: viewType
}
};
let messageToSend = createTFWMessage(key, data);
this.pushSocket.send(messageToSend);
}

writeShell(command) {
let key = "mirror";
let data = {
key: key,
data: {
key: "shell",
data:{
command: "write",
value: command
}
}
};
let messageToSend = createTFWMessage(key, data);
this.pushSocket.send(messageToSend);
}

sendToEventHandlers(message){
let key = "mirror";
let data = {
key: key,
data: message
};
let messageToSend = createTFWMessage(key, data);
this.pushSocket.send(messageToSend);
}

stepNextState(){
let key = "";
let data = {
key: key,
data: {
event: "Stepping FSM to next state, from node event handler"
},
trigger: "step_next"
};
let messageToSend = createTFWMessage(key, data);
this.pushSocket.send(messageToSend);
}

stepToState(state){
let key = "";
let data = {
key: key,
data: {
event: "Stepping FSM to next state, from node event handler"
},
trigger: "to_"+state
};
let messageToSend = createTFWMessage(key, data);
this.pushSocket.send(messageToSend);
}


}

let createTFWMessage = (key, data) => {
return [Buffer.from(key), Buffer.from(JSON.stringify(data))]
};

module.exports = TFWConnector;