From 2df6123b39cbb321915d0cc02dfafe20742204da Mon Sep 17 00:00:00 2001 From: Rasha Djurdjevic Date: Tue, 5 Jan 2021 21:14:18 +0100 Subject: [PATCH] #2 create Zone Nameservers --- .../dslab/nameserver/NameServerRemote.java | 4 +++- .../java/dslab/nameserver/Nameserver.java | 22 +++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/main/java/dslab/nameserver/NameServerRemote.java b/src/main/java/dslab/nameserver/NameServerRemote.java index 7fda166..6a901b0 100644 --- a/src/main/java/dslab/nameserver/NameServerRemote.java +++ b/src/main/java/dslab/nameserver/NameServerRemote.java @@ -1,8 +1,10 @@ package dslab.nameserver; +import java.io.Serializable; import java.rmi.RemoteException; -public class NameServerRemote implements INameserverRemote { +public class NameServerRemote implements INameserverRemote, Serializable { + @Override public void registerNameserver(String domain, INameserverRemote nameserver) throws RemoteException, AlreadyRegisteredException, InvalidDomainException { diff --git a/src/main/java/dslab/nameserver/Nameserver.java b/src/main/java/dslab/nameserver/Nameserver.java index 59835e1..19bcd9d 100644 --- a/src/main/java/dslab/nameserver/Nameserver.java +++ b/src/main/java/dslab/nameserver/Nameserver.java @@ -24,9 +24,11 @@ public class Nameserver implements INameserver { */ public Nameserver(String componentId, Config config, InputStream in, PrintStream out) { // only root nameserver creates RMI registry + String registryName = config.getString("root_id"); + String registryHost = config.getString("registry.host"); + int registryPort = config.getInt("registry.port"); if (componentId.equals("ns-root")) { - int registryPort = config.getInt("registry.port"); - String registryName = config.getString("root_id"); + // Root Nameserver INameserverRemote nameserverRemote = new NameServerRemote(); try { INameserverRemote stub = (INameserverRemote) UnicastRemoteObject.exportObject(nameserverRemote, registryPort); @@ -38,8 +40,20 @@ public class Nameserver implements INameserver { e.printStackTrace(); } } else { - // TODO zone nameservers - System.out.println("Zone Nameserver"); + // Zone Nameserver + String domain = config.getString("domain"); + try { + REGISTRY = LocateRegistry.getRegistry(registryHost, registryPort); + INameserverRemote nameserverRemote = (INameserverRemote) REGISTRY.lookup(registryName); + nameserverRemote.registerNameserver(domain, new NameServerRemote()); + } catch (RemoteException | NotBoundException e) { + e.printStackTrace(); + } catch (InvalidDomainException e) { + e.printStackTrace(); + } catch (AlreadyRegisteredException e) { + e.printStackTrace(); + } + System.out.printf("Zone Nameserver %s started!%n", domain); } }