Skip to content

Commit

Permalink
fixed wrong input bug
Browse files Browse the repository at this point in the history
bad fromatting messages are no longer causes crash
  • Loading branch information
june9666 committed Jan 17, 2019
1 parent 80d47a2 commit d5818c9
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import static hu.bme.masterrace.Main.*;

public class SegmentOccupancys implements MqttCallback {

private static final String TOPIC_INFO = "segment/occupancy";
private static final String TOPIC_COMMAND = "command/occupancy";
private MqttClient myClient;
Expand All @@ -21,6 +22,7 @@ public class SegmentOccupancys implements MqttCallback {

SegmentOccupancys() {
try {

setConnectionOptions();
connect();
if (myClient.isConnected()) {
Expand All @@ -47,25 +49,34 @@ private void connect() throws MqttException {
myClient.setCallback(this);
myClient.connect(connOpt);
System.out.println("Connected Segment Occpancy Commander!");

}

private void setConnectionOptions() {
connOpt = new MqttConnectOptions();
connOpt.setCleanSession(true);
connOpt.setKeepAliveInterval(30);
connOpt.setAutomaticReconnect(true);
connOpt.setAutomaticReconnect(false);
}

@Override
public void connectionLost(Throwable throwable) {
System.out.println("rip in connection");
try {
connect();
} catch (MqttException e) {
reconnect();
} catch ( MqttException e) {
e.printStackTrace();
}
}

private void reconnect() throws MqttException {
connect();
if (myClient.isConnected()) {
subscribe();
registerSegmentOccupancyChanger();
}
}

@Override
public void messageArrived(String s, MqttMessage mqttMessage) {
printMessageToConsole(s, mqttMessage);
Expand All @@ -80,11 +91,19 @@ private void printMessageToConsole(String s, MqttMessage mqttMessage) {
}

private JsonObject getJsonObject(MqttMessage mqttMessage) {
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(new String(mqttMessage.getPayload()));
return element.getAsJsonObject();
try {
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(new String(mqttMessage.getPayload()));
return element.getAsJsonObject();
}catch (Exception e) {
e.printStackTrace();
System.out.println("wrong format");

}
return null;
}


private void handleRequest(String topic, JsonObject message) {
if (topic.equals(TOPIC_INFO))
handleTopicInfo(message);
Expand All @@ -94,6 +113,7 @@ private void handleRequest(String topic, JsonObject message) {

private void handleTopicCommand(JsonObject message) {
if (message.has("occupancy") && message.has("segmentID"))

sendSegmentOccCommand(message);

}
Expand All @@ -105,10 +125,16 @@ private void sendSegmentOccCommand(JsonObject message) {
}

private SegmentOccupancy getSegmentOcc(JsonObject message) {
if (message.get("occupancy").toString().equals("\"occupied\""))
return SegmentOccupancy.OCCUPIED;
if (message.get("occupancy").toString().equals("\"free\""))
return SegmentOccupancy.FREE;
try {
if (message.get("occupancy").toString().equals("\"occupied\""))
return SegmentOccupancy.OCCUPIED;
if (message.get("occupancy").toString().equals("\"free\""))
return SegmentOccupancy.FREE;

}catch (Exception e ){
e.printStackTrace();
}

return null;
}

Expand Down Expand Up @@ -137,6 +163,8 @@ public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
semaphore.release();
}



private void sendOccupancy(int segmentID) {
try {
SegmentOccupancy state = segmentCommander.getSegmentOccupancy(segmentID);
Expand All @@ -154,6 +182,6 @@ private void sendOccupancy(int segmentID) {
}

private String makeMessage(int segmentID, String s) {
return "{\"segmentID\":" + segmentID + ",\"occupancy\":" + s + "}";
return "{\"segmentID\":" + segmentID + ",\"occupancy\":\"" + s + "\"}";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,19 +53,26 @@ private void setConnectionOptions() {
connOpt = new MqttConnectOptions();
connOpt.setCleanSession(true);
connOpt.setKeepAliveInterval(30);
connOpt.setAutomaticReconnect(true);
connOpt.setAutomaticReconnect(false);
}

@Override
public void connectionLost(Throwable throwable) {
System.out.println("rip in connection");
try {
connect();
} catch (MqttException e) {
reconnect();
} catch ( MqttException e) {
e.printStackTrace();
}
}

private void reconnect() throws MqttException {
connect();
if (myClient.isConnected()) {
subscribe();
registerSegmentStateChange();
}
}
@Override
public void messageArrived(String s, MqttMessage mqttMessage) {
printMessageToConsole(s, mqttMessage);
Expand Down Expand Up @@ -96,10 +103,6 @@ private void handleTopicCommand(JsonObject message) {
if (message.has("state") && message.has("segmentID")) {
sendSegmentCommand(message, "state");
}
//ez a camera miatt, hogy egyszerre 2-t kapcsoljon le
if (message.has("state2") && message.has("segmentID")) {
sendSegmentCommand(message, "state2");
}
if (message.has("stateAll")) {
sendSegmentCommandAll(message);
}
Expand Down
14 changes: 11 additions & 3 deletions GatewayCodes/StationController/src/hu/bme/masterrace/Train.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,19 +45,27 @@ private void setConnectionOptions() {
connOpt = new MqttConnectOptions();
connOpt.setCleanSession(true);
connOpt.setKeepAliveInterval(30);
connOpt.setAutomaticReconnect(true);
connOpt.setAutomaticReconnect(false);
}

@Override
public void connectionLost(Throwable throwable) {
System.out.println("rip in connection");
try {
connect();
} catch (MqttException e) {
reconnect();
} catch ( MqttException e) {
e.printStackTrace();
}
}

private void reconnect() throws MqttException {
connect();
if (myClient.isConnected()) {
subscribe();

}
}

@Override
public void messageArrived(String s, MqttMessage mqttMessage) {
printMessageToConsole(s, mqttMessage);
Expand Down
16 changes: 11 additions & 5 deletions GatewayCodes/StationController/src/hu/bme/masterrace/Turnout.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,21 +56,27 @@ private void setConnectionOptions() {
connOpt = new MqttConnectOptions();
connOpt.setCleanSession(true);
connOpt.setKeepAliveInterval(30);
connOpt.setAutomaticReconnect(true);


connOpt.setAutomaticReconnect(false);
}

@Override
public void connectionLost(Throwable throwable) {
System.out.println("rip in connection");
try {
connect();
} catch (MqttException e) {
reconnect();
} catch ( MqttException e) {
e.printStackTrace();
}
}

private void reconnect() throws MqttException {
connect();
if (myClient.isConnected()) {
subscribe();
registerTurnoutState();
}
}

@Override
public void messageArrived(String s, MqttMessage mqttMessage) {
printMessageToConsole(s, mqttMessage);
Expand Down

0 comments on commit d5818c9

Please sign in to comment.