From a953b5167a57ac5fb4b35906f62442e00ba0e357 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Tue, 27 Nov 2018 14:34:27 +0000 Subject: [PATCH] =?utf8?q?Feature=20#31=20Nexio=20szinroniz=C3=A1ci=C3=B3?= =?utf8?q?=20=C3=BAjraind=C3=ADt=C3=A1sa=20a=20fel=C3=BCletr=C5=91l?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31353 --- client/Maestro/Sources/NexioRESTSource.cs | 3 +++ .../run-mediacube-server-bsh.launch | 2 +- .../user/commons/nexio/INexioChangeListener.java | 2 ++ .../src/user/commons/nexio/NexioDataMiner.java | 6 ++++++ .../src/user/commons/nexio/NexioDispatcher.java | 15 ++++++++++++--- .../user/jobengine/osgi/rest/ComponentBinder.java | 10 ++++++++-- .../jobengine/osgi/ws/nexio/NexioWSServlet.java | 8 ++++++++ .../jobengine/osgi/ws/nexio/NexioWSSocket.java | 13 +------------ 8 files changed, 41 insertions(+), 18 deletions(-) diff --git a/client/Maestro/Sources/NexioRESTSource.cs b/client/Maestro/Sources/NexioRESTSource.cs index 945877d1..d72bad83 100644 --- a/client/Maestro/Sources/NexioRESTSource.cs +++ b/client/Maestro/Sources/NexioRESTSource.cs @@ -250,7 +250,10 @@ namespace Maestro.Sources { private void OnList(JToken l) { if (l == null) return; + + cache = null; parent.SafeCall(() => { + Clear(); l.Children(). ToList(). Select(t => CreateItem(t, false)). diff --git a/server/-configuration/run-mediacube-server-bsh.launch b/server/-configuration/run-mediacube-server-bsh.launch index bdc1613d..f81b80d9 100644 --- a/server/-configuration/run-mediacube-server-bsh.launch +++ b/server/-configuration/run-mediacube-server-bsh.launch @@ -19,7 +19,7 @@ - + diff --git a/server/user.jobengine.osgi.commons/src/user/commons/nexio/INexioChangeListener.java b/server/user.jobengine.osgi.commons/src/user/commons/nexio/INexioChangeListener.java index a741b51e..55c2728b 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/nexio/INexioChangeListener.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/nexio/INexioChangeListener.java @@ -10,4 +10,6 @@ public interface INexioChangeListener { void onUpdate(BasicDBObject data); + void refreshClients() throws Exception; + } diff --git a/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDataMiner.java b/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDataMiner.java index cd17ff8e..d2ed899f 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDataMiner.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDataMiner.java @@ -173,6 +173,12 @@ public class NexioDataMiner implements Runnable, INexioChangeListener { return result; } + @Override + public void refreshClients() throws Exception { + // TODO Auto-generated method stub + + } + private void removeDeleted(Map remoteClips, Map localClips) { Set remoteNames = new HashSet<>(remoteClips.keySet()); Set localNames = new HashSet<>(localClips.keySet()); diff --git a/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDispatcher.java b/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDispatcher.java index 165c585b..7c63f705 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDispatcher.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDispatcher.java @@ -249,6 +249,13 @@ public class NexioDispatcher implements ClipEventListener { Mediabase mediabase = NexioDispatcher.this.controller.getMediabase(); mediaListener = mediabase.createMediaListener(disabled, NexioDispatcher.this); setRestartInProgress(false); + + try { + nexioChangeListener.refreshClients(); + } catch (Exception e) { + logger.catching(e); + } + mediaListener.startListener(); } catch (Exception e) { @@ -296,14 +303,14 @@ public class NexioDispatcher implements ClipEventListener { } /* - + int c = connection.read(buffer, 0, 2); //2 bytes hosszan az idokozben hozzaadott id-k szamossaga if (c < 2) { throw new ProtocolException("c, 2, 2"); } //MSB, LSB - + return nofIds; */ return ret; @@ -351,7 +358,8 @@ public class NexioDispatcher implements ClipEventListener { //rename-nel a clipForName null lesz de a clipForID nem ezert nem kell create if (clipForName == null && clipForID == null) { collection.save(clip); - onCreate(clip); + if (!isRestartInProgress()) + onCreate(clip); } else { if (clipForID != null) { clip.put("_id", clipForID.get("_id")); @@ -411,6 +419,7 @@ public class NexioDispatcher implements ClipEventListener { this.controller.connect(); } catch (Exception e) { logger.catching(e); + setRestartInProgress(false); return; } dropAllClipsFromMongo(); diff --git a/server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/ComponentBinder.java b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/ComponentBinder.java index 3a4ddd02..3733ef71 100644 --- a/server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/ComponentBinder.java +++ b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/ComponentBinder.java @@ -19,6 +19,8 @@ public class ComponentBinder { private static IOctopusAPI octopusAPI; private static INexioAPI nexioAPI; + private static NexioWSServlet nexioServlet; + public static IItemManager getItemManager() { if (itemManager == null) throw new RuntimeException("IItemManager is null"); @@ -37,14 +39,18 @@ public class ComponentBinder { return nexioAPI; } + // public static NexioWSServlet getNexioWSServlet() { + // if (nexioServlet == null) + // throw new RuntimeException("IOctopusAPI is null"); + // return nexioServlet; + // } + public static IOctopusAPI getOctopusAPI() { if (octopusAPI == null) throw new RuntimeException("IOctopusAPI is null"); return octopusAPI; } - private NexioWSServlet nexioServlet; - public synchronized void bindService(Object service) { if (service instanceof IJobEngine) { jobengine = (IJobEngine) service; diff --git a/server/user.jobengine.osgi.services/src/user/jobengine/osgi/ws/nexio/NexioWSServlet.java b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/ws/nexio/NexioWSServlet.java index df9286dc..e5604bf1 100644 --- a/server/user.jobengine.osgi.services/src/user/jobengine/osgi/ws/nexio/NexioWSServlet.java +++ b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/ws/nexio/NexioWSServlet.java @@ -16,6 +16,7 @@ import org.osgi.framework.FrameworkUtil; import com.ibm.nosql.json.api.BasicDBObject; import user.commons.nexio.INexioChangeListener; +import user.jobengine.osgi.rest.ComponentBinder; @SuppressWarnings("serial") public class NexioWSServlet extends WebSocketServlet implements INexioChangeListener { @@ -100,6 +101,13 @@ public class NexioWSServlet extends WebSocketServlet implements INexioChangeList sessions.removeAll(deadSessions); } + @Override + public void refreshClients() throws Exception { + BasicDBObject item = new BasicDBObject(NexioWSSocket.DATA, ComponentBinder.getNexioAPI().getItems(null, true)); + item.put(NexioWSSocket.ACTION, NexioWSSocket.LIST); + processMessage(item); + } + public void removeSession(Session session) { if (sessions.contains(session)) sessions.remove(session); diff --git a/server/user.jobengine.osgi.services/src/user/jobengine/osgi/ws/nexio/NexioWSSocket.java b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/ws/nexio/NexioWSSocket.java index 66894b94..771adfa6 100644 --- a/server/user.jobengine.osgi.services/src/user/jobengine/osgi/ws/nexio/NexioWSSocket.java +++ b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/ws/nexio/NexioWSSocket.java @@ -1,7 +1,6 @@ package user.jobengine.osgi.ws.nexio; import java.io.IOException; -import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -12,9 +11,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.ibm.nosql.json.JSONUtil; import com.ibm.nosql.json.api.BasicDBObject; -import com.ibm.nosql.json.api.DBObject; -import user.commons.nexio.INexioAPI; import user.jobengine.osgi.rest.ComponentBinder; import user.jobengine.osgi.rest.ServiceObjectMapper; @@ -37,14 +34,6 @@ public class NexioWSSocket extends WebSocketAdapter { logger.info("EventSocket created"); } - private void listNexio(BasicDBObject response) throws Exception { - INexioAPI nexioAPI = ComponentBinder.getNexioAPI(); - if (nexioAPI == null) - throw new Exception("Nexio service is unreachable"); - List clips = nexioAPI.getItems(null, true); - response.append(DATA, clips); - } - @Override public void onWebSocketClose(int statusCode, String reason) { super.onWebSocketClose(statusCode, reason); @@ -79,7 +68,7 @@ public class NexioWSSocket extends WebSocketAdapter { BasicDBObject response = new BasicDBObject(ACTION, action); switch (action) { case LIST: - listNexio(response); + response.append(DATA, ComponentBinder.getNexioAPI().getItems(null, true)); break; default: throw new Exception("Unhandled action : " + action); -- 2.54.0