import EDU.cmu.softagents.misc.KQMLParser.InternalKQMLmessage;
import EDU.cmu.softagents.misc.KQMLParser.ExternalKQMLmessage;
import EDU.cmu.softagents.retsina.Communicator.*;
import java.io.IOException;

public class Client1 {

  static Communicator comm = null;

  public static void main ( String argv[]) throws CommunicatorException,
                                                 IOException
  {
    comm = new Communicator("TestClient",        // ClientName
			    "angel.cimds.ri",    // ClientHost
			    0,                   // ClientPort
			    new InternalKQMLmessage(),
			    new ExternalKQMLmessage(),
			    null,                // ClientInfo
			    false);              // is not a Retsina Agent

    ConnectionDescriptor cd = comm.openConnection("TestServer");

    InternalKQMLmessage reqMsg = new InternalKQMLmessage();
    reqMsg.setPerformative("ask-one");
    reqMsg.setField(reqMsg.SENDER, "TestClient");
    reqMsg.setField(reqMsg.RECEIVER, "TestServer");
    reqMsg.setField(reqMsg.REPLY_WITH, " "); 
    reqMsg.setField(reqMsg.IN_REPLY_TO, " ");

    reqMsg.setField(reqMsg.CONTENT, "HelloWorld!");

    boolean sentOK = comm.sendMsg( cd, reqMsg );

      //    InternalKQMLmessage replyMsg =
      //	(InternalKQMLmessage) comm.waitOnGetInputMsg(cd);
      //	(InternalKQMLmessage) comm.sendMsgAndGetReply(cd, reqMsg);
    InputMsgObject imo = comm.waitOnGetNextInputMsg();
    InternalKQMLmessage replyMsg = (InternalKQMLmessage) imo.getMsg();

    String result = replyMsg.getField(replyMsg.CONTENT).trim();
    System.out.println("*** reply message = "+ result +" ***");

    comm.refuseNewConnections();
    comm.flushMsgsAndStop();
    comm.unRegisterWithANS();

    comm.closeConnection( cd );
    System.exit(0);
  }


	
}
