diff --git a/src/main/java/examples/Config.java b/src/main/java/examples/Config.java index 0e81b2a..fa3b084 100644 --- a/src/main/java/examples/Config.java +++ b/src/main/java/examples/Config.java @@ -7,9 +7,9 @@ package examples; public class Config { - public static final String USERNAME = "admin"; - public static final String PASSWORD = ""; - public static final String HOST = "10.0.1.3"; + public static final String USERNAME = "adept"; + public static final String PASSWORD = "tzrx21j"; + public static final String HOST = "196.44.35.96"; } diff --git a/src/main/java/examples/Example4.java b/src/main/java/examples/Example4.java new file mode 100644 index 0000000..5844f4d --- /dev/null +++ b/src/main/java/examples/Example4.java @@ -0,0 +1,38 @@ +package examples; + +import java.util.Map; +import me.legrange.mikrotik.MikrotikApiException; +import me.legrange.mikrotik.ResultListener; + +/** + * Example 4: Asynchronous results. Run a command and receive results for it asynchronously with a ResultListener + * + * @author gideon + */ +public class Example4 extends Example { + + public static void main(String... args) throws Exception { + Example4 ex = new Example4(); + ex.connect(); + ex.test(); + ex.disconnect(); + } + + private void test() throws MikrotikApiException, InterruptedException { + String id = con.execute("/interface/wireless/monitor .id=wlan1", new ResultListener() { + private int prev = 0; + + public void receive(Map result) { + int val = Integer.parseInt(result.get("signal-strength")); + String sym = (val == prev) ? " " : ((val < prev) ? "-" : "+"); + System.out.printf("%d %s\n", val, sym); + prev = val; + } + + + }); + // let it run for 60 seconds + Thread.sleep(60000); + con.cancel(id); + } +} diff --git a/src/main/java/me/legrange/mikrotik/ApiConnection.java b/src/main/java/me/legrange/mikrotik/ApiConnection.java index e044646..d2c2d67 100644 --- a/src/main/java/me/legrange/mikrotik/ApiConnection.java +++ b/src/main/java/me/legrange/mikrotik/ApiConnection.java @@ -430,7 +430,7 @@ public class ApiConnection { notify(); } - public void receive(Result result) { + public void receive(Map result) { results.add(result); } diff --git a/src/main/java/me/legrange/mikrotik/Done.java b/src/main/java/me/legrange/mikrotik/Done.java index f9f03c1..9105f4a 100644 --- a/src/main/java/me/legrange/mikrotik/Done.java +++ b/src/main/java/me/legrange/mikrotik/Done.java @@ -4,7 +4,7 @@ package me.legrange.mikrotik; * Internal representation of !done * @author GideonLeGrange */ -class Done extends Responsex { +class Done extends Response { Done(String tag) { super(tag); diff --git a/src/main/java/me/legrange/mikrotik/ResultListener.java b/src/main/java/me/legrange/mikrotik/ResultListener.java index ab0b25a..716a9f8 100644 --- a/src/main/java/me/legrange/mikrotik/ResultListener.java +++ b/src/main/java/me/legrange/mikrotik/ResultListener.java @@ -1,11 +1,13 @@ package me.legrange.mikrotik; +import java.util.Map; + /** * Implement this interface to receive command results from the Mikrotik Api. * @author GideonLeGrange */ public interface ResultListener { - void receive(Result result); + void receive(Map result); }