|
@@ -1,10 +1,15 @@
|
|
|
package com.example;
|
|
|
|
|
|
-import java.io.*;
|
|
|
+import java.io.BufferedReader;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.InputStreamReader;
|
|
|
+import java.io.PrintWriter;
|
|
|
import java.net.Socket;
|
|
|
+
|
|
|
import org.json.JSONObject;
|
|
|
|
|
|
public class ClientHandler implements Runnable {
|
|
|
+
|
|
|
private final Socket socket;
|
|
|
|
|
|
public ClientHandler(Socket socket) {
|
|
@@ -13,46 +18,60 @@ public class ClientHandler implements Runnable {
|
|
|
|
|
|
@Override
|
|
|
public void run() {
|
|
|
- try (
|
|
|
- BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
|
|
- PrintWriter out = new PrintWriter(socket.getOutputStream(), true)
|
|
|
- ) {
|
|
|
+ BufferedReader in = null;
|
|
|
+ PrintWriter out = null;
|
|
|
+
|
|
|
+ try {
|
|
|
+ in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
|
|
+ out = new PrintWriter(socket.getOutputStream(), true);
|
|
|
+
|
|
|
+ System.out.println("Client connected: " + socket.getInetAddress());
|
|
|
+
|
|
|
String rawMessage;
|
|
|
while ((rawMessage = in.readLine()) != null) {
|
|
|
- System.out.println("Received: " + rawMessage);
|
|
|
+ System.out.println("📨 Received: " + rawMessage);
|
|
|
|
|
|
String response = handleEvent(rawMessage);
|
|
|
+ System.out.println("📤 Responding: " + response);
|
|
|
out.println(response);
|
|
|
}
|
|
|
+
|
|
|
+ System.out.println("Client disconnected: " + socket.getInetAddress());
|
|
|
+
|
|
|
} catch (IOException e) {
|
|
|
System.err.println("Client handler error: " + e.getMessage());
|
|
|
+ } finally {
|
|
|
+ try {
|
|
|
+ if (in != null) in.close();
|
|
|
+ if (out != null) out.close();
|
|
|
+ socket.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ System.err.println("Error closing client socket: " + e.getMessage());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private String handleEvent(String rawMessage) {
|
|
|
try {
|
|
|
- JSONObject json = new JSONObject(rawMessage);
|
|
|
- String pattern = json.getString("pattern");
|
|
|
- String data = json.optString("data", "");
|
|
|
-
|
|
|
- return switch (pattern) {
|
|
|
- case "eventTest" -> handleEventTest(data);
|
|
|
- case "matchFingerprint" -> handleMatchFingerprint(data);
|
|
|
- default -> "Unknown pattern: " + pattern;
|
|
|
- };
|
|
|
- } catch (Exception e) {
|
|
|
- return "Invalid message format: " + e.getMessage();
|
|
|
- }
|
|
|
- }
|
|
|
+ JSONObject message = new JSONObject(rawMessage);
|
|
|
|
|
|
- private String handleEventTest(String message) {
|
|
|
- System.out.println("Hello there. Just responding to EventPattern.");
|
|
|
- System.out.println("Message: " + message);
|
|
|
- return "eventTest acknowledged";
|
|
|
- }
|
|
|
+ String pattern = message.optString("pattern", "unknown");
|
|
|
+ JSONObject data = message.optJSONObject("data");
|
|
|
+
|
|
|
+ // You could use pattern to route logic
|
|
|
+ String resultMessage = "Received pattern: " + pattern + ", data: " + (data != null ? data.toString() : "null");
|
|
|
|
|
|
- private String handleMatchFingerprint(String data) {
|
|
|
- System.out.println("Received fingerprint match request (not implemented).");
|
|
|
- return "matchFingerprint handler stub";
|
|
|
+ // Build response
|
|
|
+ JSONObject response = new JSONObject();
|
|
|
+ response.put("pattern", pattern);
|
|
|
+ response.put("result", resultMessage);
|
|
|
+
|
|
|
+ return response.toString();
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ JSONObject error = new JSONObject();
|
|
|
+ error.put("error", "Invalid message format: " + e.getMessage());
|
|
|
+ return error.toString();
|
|
|
+ }
|
|
|
}
|
|
|
-}
|
|
|
+}
|