1754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beustpackage org.testng.remote.strprotocol;
2754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beust
33eb34813b24377dd042c9e85b8a7854af34e3b81Cédric Beustimport org.testng.remote.RemoteTestNG;
43eb34813b24377dd042c9e85b8a7854af34e3b81Cédric Beust
5754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beustimport java.io.IOException;
654c45175326b6cda1d4da7780f906871632de1d5Cédric Beustimport java.io.ObjectInputStream;
7754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beustimport java.io.ObjectOutputStream;
8754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beust
9754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beust
10754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beustpublic class SerializedMessageSender extends BaseMessageSender {
11754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beust
12754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beust  public SerializedMessageSender(String host, int port) {
135c2da9a4d95f922a413b8502f4ddc3ab0f13c9d3Cédric Beust    super(host, port, false /* no ack */);
145c2da9a4d95f922a413b8502f4ddc3ab0f13c9d3Cédric Beust  }
155c2da9a4d95f922a413b8502f4ddc3ab0f13c9d3Cédric Beust
165c2da9a4d95f922a413b8502f4ddc3ab0f13c9d3Cédric Beust  public SerializedMessageSender(String host, int port, boolean ack) {
175c2da9a4d95f922a413b8502f4ddc3ab0f13c9d3Cédric Beust    super(host, port, ack);
18754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beust  }
19754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beust
20754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beust  @Override
21754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beust  public void sendMessage(IMessage message) throws IOException {
22d6c0c9ac6acabd3a5d072f3f02d5dda00fc77bdbCédric Beust    synchronized(m_outStream) {
2354c45175326b6cda1d4da7780f906871632de1d5Cédric Beust      p("Sending message " + message);
243eb34813b24377dd042c9e85b8a7854af34e3b81Cédric Beust      ObjectOutputStream oos = new ObjectOutputStream(m_outStream);
253eb34813b24377dd042c9e85b8a7854af34e3b81Cédric Beust      oos.writeObject(message);
263eb34813b24377dd042c9e85b8a7854af34e3b81Cédric Beust      oos.flush();
2754c45175326b6cda1d4da7780f906871632de1d5Cédric Beust
280482f188546780be2e9fbb4607765fcaaecb898bCédric Beust      waitForAck();
29754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beust    }
30754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beust  }
31754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beust
3215f707e1b3e9b4360b4b1e5fa5ad7a3b396b04fdCédric Beust  @Override
3354c45175326b6cda1d4da7780f906871632de1d5Cédric Beust  public IMessage receiveMessage() throws IOException, ClassNotFoundException {
3454c45175326b6cda1d4da7780f906871632de1d5Cédric Beust
3554c45175326b6cda1d4da7780f906871632de1d5Cédric Beust    IMessage result = null;
3654c45175326b6cda1d4da7780f906871632de1d5Cédric Beust    try {
373eb34813b24377dd042c9e85b8a7854af34e3b81Cédric Beust      ObjectInputStream ios = new ObjectInputStream(m_inStream);
3854c45175326b6cda1d4da7780f906871632de1d5Cédric Beust//      synchronized(m_input) {
393eb34813b24377dd042c9e85b8a7854af34e3b81Cédric Beust        result = (IMessage) ios.readObject();
4054c45175326b6cda1d4da7780f906871632de1d5Cédric Beust        p("Received message " + result);
4154c45175326b6cda1d4da7780f906871632de1d5Cédric Beust//        sendAck();
4254c45175326b6cda1d4da7780f906871632de1d5Cédric Beust//      }
4354c45175326b6cda1d4da7780f906871632de1d5Cédric Beust    }
4408e92ff179284885dde755591df8e2f3b360aff7Cédric Beust    catch(Exception ex) {
4508e92ff179284885dde755591df8e2f3b360aff7Cédric Beust      if (RemoteTestNG.isVerbose()) {
4608e92ff179284885dde755591df8e2f3b360aff7Cédric Beust        ex.printStackTrace();
4708e92ff179284885dde755591df8e2f3b360aff7Cédric Beust      }
4854c45175326b6cda1d4da7780f906871632de1d5Cédric Beust    }
4954c45175326b6cda1d4da7780f906871632de1d5Cédric Beust    return result;
5054c45175326b6cda1d4da7780f906871632de1d5Cédric Beust  }
5154c45175326b6cda1d4da7780f906871632de1d5Cédric Beust
520482f188546780be2e9fbb4607765fcaaecb898bCédric Beust  static void p(String s) {
533eb34813b24377dd042c9e85b8a7854af34e3b81Cédric Beust    if (RemoteTestNG.isVerbose()) {
543eb34813b24377dd042c9e85b8a7854af34e3b81Cédric Beust      System.out.println("[SerializedMessageSender] " + s);
553eb34813b24377dd042c9e85b8a7854af34e3b81Cédric Beust    }
5615f707e1b3e9b4360b4b1e5fa5ad7a3b396b04fdCédric Beust  }
57754256e4b1acba1555bcb1892a2627fd34f594c6Cédric Beust}
58