From a27ab784026afba0386f17956443c9ef53f7b0a4 Mon Sep 17 00:00:00 2001
From: Sebastian Rieger <sebastian.rieger@informatik.hs-fulda.de>
Date: Mon, 22 Oct 2018 00:33:12 +0200
Subject: [PATCH] initial version

---
 .../rmi/RMIMandelbrotCalculationsServer2.java | 115 ++++++++++++++++++
 1 file changed, 115 insertions(+)
 create mode 100644 VerteilteSysteme-Examples/src/verteiltesysteme/mandelbrot/rmi/RMIMandelbrotCalculationsServer2.java

diff --git a/VerteilteSysteme-Examples/src/verteiltesysteme/mandelbrot/rmi/RMIMandelbrotCalculationsServer2.java b/VerteilteSysteme-Examples/src/verteiltesysteme/mandelbrot/rmi/RMIMandelbrotCalculationsServer2.java
new file mode 100644
index 0000000..a0feee9
--- /dev/null
+++ b/VerteilteSysteme-Examples/src/verteiltesysteme/mandelbrot/rmi/RMIMandelbrotCalculationsServer2.java
@@ -0,0 +1,115 @@
+package verteiltesysteme.mandelbrot.rmi;
+
+//import java.io.IOException;
+//import java.net.InetAddress;
+//import java.net.ServerSocket;
+//import java.net.Socket;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+//import java.rmi.server.RMISocketFactory;
+import java.rmi.server.UnicastRemoteObject;
+
+/*
+class LoopbackSocketFactory extends RMISocketFactory {
+    public ServerSocket createServerSocket(int port) throws IOException {
+        return new ServerSocket(port, 5, InetAddress.getByName("127.0.0.1"));
+    }
+
+    public Socket createSocket(String host, int port) throws IOException {
+        // just call the default client socket factory
+        return RMISocketFactory.getDefaultSocketFactory()
+                               .createSocket(host, port);
+    }
+}
+*/
+
+public class RMIMandelbrotCalculationsServer2 implements RMIMandelbrotCalculationsInterface {
+    public RMIMandelbrotCalculationsServer2() {}
+
+    public static void main(String args[]) {
+
+        try {
+          //RMISocketFactory.setSocketFactory(new LoopbackSocketFactory());
+
+          RMIMandelbrotCalculationsServer2 obj = new RMIMandelbrotCalculationsServer2();
+          RMIMandelbrotCalculationsInterface stub = (RMIMandelbrotCalculationsInterface) UnicastRemoteObject.exportObject(obj, 0);
+
+            // Bind the remote object's stub in the registry
+            Registry registry = LocateRegistry.getRegistry();
+            registry.bind("RMIMandelbrotCalculationsInterface2", stub);
+
+            System.err.println("Server ready");
+        } catch (Exception e) {
+            System.err.println("Server exception: " + e.toString());
+            e.printStackTrace();
+        }
+    }
+
+  // hier wird das Ergebnis von iterateAll() gespeichert
+  protected int[] result = null;
+
+  // der augenblicklich gewaehlte Ausschnitt
+  double ULx = -2, ULy = 2, LRx = 2, LRy = -2;
+
+  int iterateOnePoint(Complex c, int maxIterations, double maxModulus) {
+    Complex z = new Complex(0., 0.);
+
+    for (int i = 0; i < maxIterations; i++) {
+      z.mulBy(z);
+      z.add(c);
+      double m = z.absValue();
+      if (m > maxModulus) {
+        return i;
+      }
+    }
+    return maxIterations;
+  }
+
+  public void iterateAllPoints(int maxIterations, double nrPointsX, double nrPointsY) {
+
+    this.result = new int[(int) (nrPointsX * nrPointsY)];
+
+    int counter = 0;
+    double stepX = (this.LRx - this.ULx) / nrPointsX;
+    double stepY = (this.LRy - this.ULy) / nrPointsY;
+    double i = this.ULy;
+    for (int cy = 0; cy < nrPointsY; cy++) {
+      double r = this.ULx;
+      for (int cx = 0; cx < nrPointsX; cx++) {
+        Complex c = new Complex(r, i);
+        this.result[counter] = maxIterations - this.iterateOnePoint(c, maxIterations, 2.0);
+        counter += 1;
+        r += stepX;
+      }
+      i += stepY;
+    }
+  }
+
+  public int[] getResult() {
+    return this.result;
+  }
+
+  public double getULx() {
+    return this.ULx;
+  }
+
+  public double getLRx() {
+    return this.LRx;
+  }
+
+  public double getULy() {
+    return this.ULy;
+  }
+
+  public double getLRy() {
+    return this.LRy;
+  }
+
+  public void setView(double ULx, double ULy, double LRx, double LRy) {
+    this.ULx = ULx;
+    this.ULy = ULy;
+    this.LRx = LRx;
+    this.LRy = LRy;
+  }
+
+}
-- 
GitLab