diff options
| author | Vijaykumar Patel <vijay.patel@aheeva.com> | 2024-12-01 19:07:46 -0500 |
|---|---|---|
| committer | Vijaykumar Patel <vijay.patel@aheeva.com> | 2024-12-01 19:07:46 -0500 |
| commit | 90529cfd7ef1f38ddb25449ea85cceba036ecd57 (patch) | |
| tree | e1b535efb7e6d2d2cebf731b34dfd4b25e77435e /src/main/java | |
| parent | 77654e34e381543fb24d60324ce772b5953ea953 (diff) | |
| download | soen423-90529cfd7ef1f38ddb25449ea85cceba036ecd57.zip | |
added ReliableUnicastReceiver in FE to receive response
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/derms/frontend/FE.java | 99 |
1 files changed, 68 insertions, 31 deletions
diff --git a/src/main/java/derms/frontend/FE.java b/src/main/java/derms/frontend/FE.java index 58d934b..7c8b3cd 100644 --- a/src/main/java/derms/frontend/FE.java +++ b/src/main/java/derms/frontend/FE.java @@ -8,6 +8,7 @@ import javax.xml.ws.Endpoint; import derms.Config; import derms.Request; import derms.Response; +import derms.net.runicast.ReliableUnicastReceiver; import derms.net.runicast.ReliableUnicastSender; import java.util.concurrent.atomic.AtomicInteger; @@ -116,48 +117,84 @@ public class FE { } +// private static void listenForUDPResponses(DERMSServerImpl servant) { +// DatagramSocket aSocket = null; +// try { +// +//// aSocket = new MulticastSocket(1413); +//// InetAddress[] allAddresses = Inet4Address.getAllByName("SepJ-ROG"); +// InetAddress desiredAddress = InetAddress.getByName(FE_IP_Address); +//// //In order to find the desired Ip to be routed by other modules (WiFi adapter) +//// for (InetAddress address : +//// allAddresses) { +//// if (address.getHostAddress().startsWith("192.168.2")) { +//// desiredAddress = address; +//// } +//// } +//// aSocket.joinGroup(InetAddress.getByName("230.1.1.5")); +// aSocket = new DatagramSocket(FE_PORT, desiredAddress); +// byte[] buffer = new byte[1000]; +// System.out.println("FE Server Started on " + desiredAddress + ":" + FE_PORT + "............"); +// +// while (true) { +// DatagramPacket response = new DatagramPacket(buffer, buffer.length); +// aSocket.receive(response); +// String sentence = new String(response.getData(), 0, +// response.getLength()).trim(); +// System.out.println("FE:Response received from Rm>>>" + sentence); +// Response rmResponse = new Response(sentence); +//// String[] parts = sentence.split(";"); +// +// System.out.println("Adding response to FrontEndImplementation:"); +// servant.addReceivedResponse(rmResponse); +//// DatagramPacket reply = new DatagramPacket(response.getData(), response.getLength(), response.getAddress(), +//// response.getPort()); +//// aSocket.send(reply); +// } +// +// } catch (SocketException e) { +// System.out.println("Socket: " + e.getMessage()); +// } catch (IOException e) { +// System.out.println("IO: " + e.getMessage()); +// } finally { +//// if (aSocket != null) +//// aSocket.close(); +// } +// } + private static void listenForUDPResponses(DERMSServerImpl servant) { - DatagramSocket aSocket = null; + ReliableUnicastReceiver<Response> receiver = null; try { + // Initialize the ReliableUnicastReceiver to listen on the specified address and port + InetSocketAddress laddr = new InetSocketAddress(FE_IP_Address, FE_PORT); + receiver = new ReliableUnicastReceiver<>(laddr); -// aSocket = new MulticastSocket(1413); -// InetAddress[] allAddresses = Inet4Address.getAllByName("SepJ-ROG"); - InetAddress desiredAddress = InetAddress.getByName(FE_IP_Address); -// //In order to find the desired Ip to be routed by other modules (WiFi adapter) -// for (InetAddress address : -// allAddresses) { -// if (address.getHostAddress().startsWith("192.168.2")) { -// desiredAddress = address; -// } -// } -// aSocket.joinGroup(InetAddress.getByName("230.1.1.5")); - aSocket = new DatagramSocket(FE_PORT, desiredAddress); - byte[] buffer = new byte[1000]; - System.out.println("FE Server Started on " + desiredAddress + ":" + FE_PORT + "............"); + System.out.println("FE Server Started on " + FE_IP_Address + ":" + FE_PORT + "............"); while (true) { - DatagramPacket response = new DatagramPacket(buffer, buffer.length); - aSocket.receive(response); - String sentence = new String(response.getData(), 0, - response.getLength()).trim(); - System.out.println("FE:Response received from Rm>>>" + sentence); - Response rmResponse = new Response(sentence); -// String[] parts = sentence.split(";"); + // Blocking call to receive a message from RM + Response response = receiver.receive(); + System.out.println("FE: Response received from RM >>> " + response); + // Process the received response and add it to the servant System.out.println("Adding response to FrontEndImplementation:"); - servant.addReceivedResponse(rmResponse); -// DatagramPacket reply = new DatagramPacket(response.getData(), response.getLength(), response.getAddress(), -// response.getPort()); -// aSocket.send(reply); + servant.addReceivedResponse(response); } - - } catch (SocketException e) { - System.out.println("Socket: " + e.getMessage()); } catch (IOException e) { System.out.println("IO: " + e.getMessage()); + } catch (InterruptedException e) { + System.out.println("Listener interrupted: " + e.getMessage()); + Thread.currentThread().interrupt(); } finally { -// if (aSocket != null) -// aSocket.close(); + if (receiver != null) { + try { + receiver.close(); + System.out.println("ReliableUnicastReceiver closed."); + } catch (IOException e) { + System.out.println("Error closing ReliableUnicastReceiver: " + e.getMessage()); + } + } } } + }
\ No newline at end of file |