Example #1
0
  @Override
  public void doStart() {
    state = STARTING;
    try {
      createServerSocket();
      state = RUNNING;
      do {
        try {
          SocketServerThread sst = new SocketServerThread(serverSocket.accept());
          sst.start();
          sockets.add(sst);
        } catch (Throwable t) {
          error(
              "Failed to listen on Socket [" + id + "] on port [" + port + "]: " + t.getMessage());
        }
      } while (getState() == RUNNING || getState() == STARTING);

      close(serverSocket);
      serverSocket = null;
    } catch (Throwable e) {
      state = FAILED;
      error("Error in Socet Gateway [" + id + "]: " + e.getMessage());
      e.printStackTrace();
      // throw CFMLEngineFactory.getInstance().getCastUtil().toPageException(e);
    }
  }
Example #2
0
  @Override
  public String sendMessage(Map _data) {
    Struct data = caster.toStruct(_data, null, false);
    String msg = (String) data.get("message", null);
    String originatorID = (String) data.get("originatorID", null);

    String status = "OK";
    if (msg != null) {

      Iterator<SocketServerThread> it = sockets.iterator();
      SocketServerThread sst;
      try {
        boolean hasSend = false;
        while (it.hasNext()) {
          sst = it.next();
          if (originatorID != null && !sst._id.equalsIgnoreCase(originatorID)) continue;
          sst.writeOutput(msg);
          hasSend = true;
        }

        if (!hasSend) {
          if (sockets.size() == 0) {
            error("There is no connection");
            status = "EXCEPTION";
          } else {
            it = sockets.iterator();
            StringBuilder sb = new StringBuilder();
            while (it.hasNext()) {
              if (sb.length() > 0) sb.append(", ");
              sb.append(it.next()._id);
            }
            error(
                "There is no connection with originatorID ["
                    + originatorID
                    + "], available originatorIDs are ["
                    + sb
                    + "]");
            status = "EXCEPTION";
          }
        }
      } catch (Exception e) {
        e.printStackTrace();
        error("Failed to send message with exception: " + e.toString());
        status = "EXCEPTION";
      }
    }
    return status;
  }