From eaaaaad87095e653a54ddfd887db78568974b905 Mon Sep 17 00:00:00 2001 From: Daniel Shapiro Date: Mon, 28 Aug 2017 12:13:24 -0700 Subject: [PATCH] Some minor changes --- .../main/java/org/iot/dsa/dslink/DSLink.java | 7 ++-- .../main/java/org/iot/dsa/io/NodeEncoder.java | 4 ++- .../main/java/org/iot/dsa/node/DSNode.java | 32 ++++++++++++------- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/dslink-core/src/main/java/org/iot/dsa/dslink/DSLink.java b/dslink-core/src/main/java/org/iot/dsa/dslink/DSLink.java index 8cd51c29..a6185991 100644 --- a/dslink-core/src/main/java/org/iot/dsa/dslink/DSLink.java +++ b/dslink-core/src/main/java/org/iot/dsa/dslink/DSLink.java @@ -96,6 +96,9 @@ public DSLink(DSLinkConfig config) throws Exception { root = tmp; saveDatabase(); } + if (root instanceof DSRequester) { + requester = (DSRequester) root; + } add("Root", root).setTransient(true); } @@ -180,7 +183,7 @@ public void run() { try { info(info() ? "Stabilizing root node" : null); stable(); - long nextSave = System.currentTimeMillis() + DSTime.MILLIS_HOUR; + long nextSave = System.currentTimeMillis() + DSTime.MILLIS_MINUTE; while (isRunning()) { synchronized (this) { try { @@ -190,7 +193,7 @@ public void run() { } if (System.currentTimeMillis() > nextSave) { saveDatabase(); - nextSave = System.currentTimeMillis() + DSTime.MILLIS_HOUR; + nextSave = System.currentTimeMillis() + DSTime.MILLIS_MINUTE; } } } diff --git a/dslink-core/src/main/java/org/iot/dsa/io/NodeEncoder.java b/dslink-core/src/main/java/org/iot/dsa/io/NodeEncoder.java index d06db95c..4996a4e3 100644 --- a/dslink-core/src/main/java/org/iot/dsa/io/NodeEncoder.java +++ b/dslink-core/src/main/java/org/iot/dsa/io/NodeEncoder.java @@ -109,7 +109,9 @@ void writeChildren(DSNode arg) { try { info = arg.getInfo(i); obj = info.getObject(); - if (info.isDefault()) { //includes actions + if (info.isTransient()) { + //skip it + } else if (info.isDefault()) { //includes actions writeDefault(info); } else if (obj == null) { out.value((DSElement) null); diff --git a/dslink-core/src/main/java/org/iot/dsa/node/DSNode.java b/dslink-core/src/main/java/org/iot/dsa/node/DSNode.java index e218e004..159c8973 100644 --- a/dslink-core/src/main/java/org/iot/dsa/node/DSNode.java +++ b/dslink-core/src/main/java/org/iot/dsa/node/DSNode.java @@ -647,18 +647,7 @@ public DSNode put(DSInfo info, DSIObject object) { ((DSNode) object).start(); } info.subscribe(); - try { - onChildChanged(info); - } catch (Exception x) { - severe(getPath(), x); - } - if (subscriber != null) { - try { - subscriber.onEvent(this, info, CHILD_CHANGED); - } catch (Exception x) { - severe(getPath(), x); - } - } + childChanged(info); if (isStable()) { if (object instanceof DSNode) { ((DSNode) object).stable(); @@ -667,6 +656,25 @@ public DSNode put(DSInfo info, DSIObject object) { } return this; } + + /** + * TEMPORARY + * Call this to indicate that a child has changed + */ + public void childChanged(DSInfo info) { + try { + onChildChanged(info); + } catch (Exception x) { + severe(getPath(), x); + } + if (subscriber != null) { + try { + subscriber.onEvent(this, info, CHILD_CHANGED); + } catch (Exception x) { + severe(getPath(), x); + } + } + } /** * Remove the child a the given index.