Skip to content
Snippets Groups Projects
Commit a5f3cd30 authored by Ondřej Trojan's avatar Ondřej Trojan
Browse files

Conditional scheduling

parent 74f79956
No related branches found
No related tags found
No related merge requests found
......@@ -54,6 +54,7 @@
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
......
......@@ -12,6 +12,7 @@ public class CustomConfig {
private String client2Ip;
private int client1Port;
private int client2Port;
private boolean enableVlcScheduling = true;
public String getVideoFolderPath() {
......@@ -53,4 +54,12 @@ public class CustomConfig {
public void setClient2Port(int client2Port) {
this.client2Port = client2Port;
}
public boolean isEnableVlcScheduling() {
return enableVlcScheduling;
}
public void setEnableVlcScheduling(boolean enableVlcScheduling) {
this.enableVlcScheduling = enableVlcScheduling;
}
}
......@@ -2,7 +2,10 @@ package com.museum.projection.service;
import com.museum.projection.config.CustomConfig;
import com.museum.projection.util.VlcClient;
import com.museum.projection.vlc.RemoteClient;
import com.museum.projection.vlc.VlcClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -12,14 +15,15 @@ import javax.annotation.Resource;
public class ControlService {
private static volatile boolean outOfSync = false;
private static final Logger log = LoggerFactory.getLogger(ControlService.class);
private final CustomConfig config;
@Resource(name = "client1")
private VlcClient client1;
private RemoteClient client1;
@Resource(name = "client2")
private VlcClient client2;
private RemoteClient client2;
@Autowired
......@@ -91,11 +95,11 @@ public class ControlService {
}
public void sendCommand(VlcClient client, String cmd) {
public void sendCommand(RemoteClient client, String cmd) {
sendCommand(client, cmd, "");
}
public void sendCommand(VlcClient client, String cmd, String parameter) {
public void sendCommand(RemoteClient client, String cmd, String parameter) {
client.send(cmd + " " + parameter, getLinesFor(cmd));
}
......
package com.museum.projection.vlc;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
public class DummyClient implements RemoteClient {
private static final Logger log = LoggerFactory.getLogger(DummyClient.class);
private final String id;
public DummyClient(String id) {
this.id = id;
}
@Override
public List<String> send(String msg, int expectedLines) {
log.warn("Attempt to send command to " + id + " with VlcIntegration disabled");
return null;
}
}
package com.museum.projection.vlc;
import java.util.List;
public interface RemoteClient {
public List<String> send(String msg, int expectedLines);
}
package com.museum.projection.util;
package com.museum.projection.vlc;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -8,7 +8,7 @@ import java.io.*;
import java.net.*;
import java.util.*;
public class VlcClient {
public class VlcClient implements RemoteClient {
private static final int INTERVAL_MAINTAIN = 4000;
private static final int INTERVAL_STARTUP = 1000;
......
package com.museum.projection.config;
package com.museum.projection.vlc;
import com.museum.projection.util.VlcClient;
import com.museum.projection.config.CustomConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import javax.annotation.Resource;
@Configuration
@EnableScheduling
public class VlcConfig {
......@@ -21,13 +19,31 @@ public class VlcConfig {
}
@Bean("client1")
@ConditionalOnProperty(name = "5d.scheduling.enabled", havingValue = "true", matchIfMissing = true)
public VlcClient Client1() {
return new VlcClient(propertiesConfig.getClient1Ip(), propertiesConfig.getClient1Port());
}
@Bean("client2")
@ConditionalOnProperty(name = "5d.scheduling.enabled", havingValue = "true", matchIfMissing = true)
public VlcClient Client2() {
return new VlcClient(propertiesConfig.getClient2Ip(), propertiesConfig.getClient2Port());
}
@Bean("client1")
@ConditionalOnProperty(name = "5d.scheduling.enabled", havingValue = "false")
public RemoteClient Client1Dummy() {
return new DummyClient("client1");
}
@Bean("client2")
@ConditionalOnProperty(name = "5d.scheduling.enabled", havingValue = "false")
public RemoteClient Client2Dummy() {
return new DummyClient("client2");
}
}
......@@ -12,10 +12,11 @@ spring.task.scheduling.shutdown.await-termination=true
################5D-projection-config###################
5d.videoFolderPath = /home/user/vid/
5d.scheduling.enabled=true
5d.client1ip=127.0.0.1
5d.client2ip=127.0.0.1
5d.client1port=5041
5d.client2port=5031
5d.client2port=5051
#5d.connection-maintain-interval=1000
#5d.init-interval=400
#5d.socket-timeout=200
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment