package thrift; import javax.swing.JOptionPane; import models.SessionData; import org.apache.log4j.Logger; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.protocol.TProtocol; import org.apache.thrift.transport.TSocket; import org.apache.thrift.transport.TTransport; import org.openslx.sat.thrift.iface.Server; import org.openslx.sat.thrift.iface.Server.Client; import org.openslx.sat.thrift.version.Version; public class ThriftConnection { private final static Logger LOGGER = Logger .getLogger(ThriftConnection.class); private String satAddress = SessionData.session.getServerAdress(); final TTransport transport = new TSocket(satAddress, 9090, 10000); public Client getThriftConnection() { try { transport.open(); } catch (Exception e) { LOGGER.error("Keine Verbindung möglich! Satellit: " + satAddress, e); JOptionPane.showMessageDialog(null, "Konnte keine Verbindung zum Satellit '" + satAddress + "' aufbauen!", "Debug-Message", JOptionPane.ERROR_MESSAGE); return null; } final TProtocol protocol = new TBinaryProtocol(transport); final Server.Client client = new Server.Client(protocol); LOGGER.info("Verbindung zu " + satAddress + " wurde aufgebaut."); long remoteVersion; try { remoteVersion = client.getVersion(); } catch (Exception e) { LOGGER.error( "Could not query sat server version after successful connect! Assuming untagged version 1", e); remoteVersion = 1; } String text = null; if (remoteVersion > Version.VERSION) { text = "Das von Ihnen verwendete Dozentenmodul ist zu alt, um mit dem Satelliten-Server zu verbinden.\n" + "Sie verwenden Version " + Version.VERSION + ", der Satellit " + remoteVersion + "\n" + "Aktuelle Version unter http://bwlehrpool.hs-offenburg.de/"; } else if (remoteVersion < Version.VERSION) { text = "Das von Ihnen verwendete Dozentenmodul ist zu neu, um mit dem Satelliten-Server zu verbinden.\n" + "Sie verwenden Version " + Version.VERSION + ", der Satellit " + remoteVersion; } if (text != null) { JOptionPane.showMessageDialog(null, text, "Fehler", JOptionPane.ERROR_MESSAGE); } return client; } public void closeThriftConnection() { LOGGER.info("Verbindung wird geplant getrennt."); transport.close(); } }