thufir

observer arg

Sep 17th, 2013
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.99 KB | None | 0 0
  1. package telnet;
  2.  
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5. import java.io.OutputStream;
  6. import java.net.InetAddress;
  7. import java.net.SocketException;
  8. import java.util.Deque;
  9. import java.util.Observable;
  10. import java.util.Observer;
  11. import java.util.Properties;
  12. import java.util.logging.Logger;
  13. import org.apache.commons.net.telnet.TelnetClient;
  14. import player.GameAction;
  15. import player.GameData;
  16. import player.TelnetEventProcessor;
  17.  
  18. public class TelnetConnection implements Observer {
  19.  
  20.     private static Logger log = Logger.getLogger(TelnetConnection.class.getName());
  21.     private TelnetClient telnetClient = new TelnetClient();
  22.     private InputOutput inputOutput = new InputOutput();
  23.     private TelnetEventProcessor parser = new TelnetEventProcessor();
  24.     private Logic logic = new Logic();
  25.  
  26.     public TelnetConnection() {
  27.         try {
  28.             init();
  29.         } catch (SocketException ex) {
  30.         } catch (FileNotFoundException ex) {
  31.         } catch (IOException ex) {
  32.         }
  33.     }
  34.  
  35.     private void init() throws SocketException, FileNotFoundException, IOException {
  36.         Properties props = PropertiesReader.getProps();
  37.         InetAddress host = InetAddress.getByName(props.getProperty("host"));
  38.         int port = Integer.parseInt(props.getProperty("port"));
  39.         telnetClient.connect(host, port);
  40.         inputOutput.readWriteParse(telnetClient.getInputStream(), telnetClient.getOutputStream());
  41.         inputOutput.addObserver(this);
  42.         parser.addObserver(this);
  43.     }
  44.  
  45.     private void sendAction(GameAction action) throws IOException {
  46.         log.fine(action.toString());
  47.         byte[] actionBytes = action.getAction().getBytes();
  48.         OutputStream outputStream = telnetClient.getOutputStream();
  49.         outputStream.write(actionBytes);
  50.         outputStream.write(13);
  51.         outputStream.write(10);
  52.         outputStream.flush();
  53.     }
  54.  
  55.     private void sendActions(Deque<GameAction> gameActions) {
  56.         while (!gameActions.isEmpty()) {
  57.             GameAction action = gameActions.remove();
  58.             try {
  59.                 sendAction(action);
  60.             } catch (IOException ex) {
  61.             }
  62.         }
  63.     }
  64.  
  65.     @Override
  66.     public void update(Observable o, Object arg) {
  67.         GameData data = null;
  68.         String line = null;
  69.         AliasTarget aliasTarget = null;
  70.         if (o instanceof InputOutput) {
  71.             line = arg.toString();
  72.             parser.parse(line);
  73.         } else if (o instanceof TelnetEventProcessor) {
  74.             if (arg instanceof GameData) {
  75.                 data = (GameData) arg;
  76.                 Deque<GameAction> gameActions = logic.getActions(data);
  77.                 sendActions(gameActions);
  78.             } else if (arg instanceof AliasTarget) {
  79.                 aliasTarget = (AliasTarget) arg;
  80.                 log.info("target\n"+aliasTarget.toString());
  81.             }
  82.         }
  83.     }
  84.  
  85.     public static void main(String[] args) {
  86.         new TelnetConnection();
  87.     }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment