package kernel; import rescuecore2.messages.Message; import rescuecore2.messages.control.Shutdown; import rescuecore2.connection.Connection; import rescuecore2.connection.ConnectionException; import rescuecore2.log.Logger; import java.util.Collection; import java.util.Collections; /** Abstract base class for KernelComponent implementations. */ public abstract class AbstractKernelComponent implements KernelComponent { private Connection connection; private String name; /** Construct a new abstract component. @param name The name of this component. @param c The connection this component is using. */ protected AbstractKernelComponent(String name, Connection c) { this.name = name; this.connection = c; } @Override public void send(Collection<? extends Message> messages) { if (!connection.isAlive()) { return; } try { connection.sendMessages(messages); } catch (ConnectionException e) { Logger.error("Error sending message", e); } } @Override public Connection getConnection() { return connection; } @Override public void shutdown() { send(new Shutdown()); connection.shutdown(); } @Override public String getName() { return name; } /** Send a single message. @param message The message to send. */ protected void send(Message message) { send(Collections.singleton(message)); } }