diff options
Diffstat (limited to 'dozentenmodulserver/src/main/java/thrift/OperatingSystemList.java')
| -rw-r--r-- | dozentenmodulserver/src/main/java/thrift/OperatingSystemList.java | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/dozentenmodulserver/src/main/java/thrift/OperatingSystemList.java b/dozentenmodulserver/src/main/java/thrift/OperatingSystemList.java new file mode 100644 index 00000000..6d5404f7 --- /dev/null +++ b/dozentenmodulserver/src/main/java/thrift/OperatingSystemList.java @@ -0,0 +1,37 @@ +package thrift; + +import java.util.List; + +import org.apache.log4j.Logger; +import org.apache.thrift.TException; +import org.openslx.bwlp.thrift.iface.OperatingSystem; +import org.openslx.thrifthelper.ThriftManager; +import org.openslx.util.TimeoutReference; + +/** + * Holds the list of all known operating systems. The list is synchronized with + * the master server. + */ +public class OperatingSystemList { + + private static final Logger LOGGER = Logger.getLogger(OperatingSystemList.class); + + private static final TimeoutReference<List<OperatingSystem>> cachedList = new TimeoutReference<List<OperatingSystem>>( + 600000, null); + + public static synchronized List<OperatingSystem> get() { + List<OperatingSystem> list = cachedList.get(); + if (list == null) { + try { + list = ThriftManager.getMasterClient().getOperatingSystems(); + // TODO: Write to DB + } catch (TException e) { + LOGGER.warn("Could not retrieve OS list from master server", e); + return null; + } + cachedList.set(list); + } + return list; + } + +} |
