예제 #1
0
  // Called when a peer we're trying to connect to sends us a message
  private void processNewPeer(SocketChannel c) throws IOException {
    ByteBuffer message = ChannelHelper.readBytes(c, 4);
    String recognize = utf8.decode(message).toString();
    if (!recognize.equals("bam!")) {
      // Connected to something that wasn't a BAMPong client...
      c.close();
      Peer p = new_peers.remove(c);
      log("Closing attempt to " + p.getName() + " got " + recognize);
      return;
    }

    // Assemble response
    ByteBuffer name = utf8.encode(nick);
    message = ByteBuffer.allocateDirect(name.limit() + 10); // id(4), port(4), name(2+limit)
    message.putInt(id);
    message.putInt(getPort());
    ChannelHelper.putString(message, name);
    message.flip();

    // Send message
    c.write(message);

    // Move socket to connected peers.
    Peer peer = new_peers.remove(c);
    peers.put(c, peer);
    sockets.put(peer, c);
  }
예제 #2
0
 /** Send a debug message to all connected peers. */
 public void sendDebug(String message) throws IOException {
   ByteBuffer msg = utf8.encode(message);
   ByteBuffer buff = ByteBuffer.allocateDirect(msg.limit() + 3);
   buff.put(MSG_DEBUG);
   ChannelHelper.putString(buff, msg);
   buff.flip();
   for (SocketChannel c : peers.keySet()) {
     ChannelHelper.sendAll(c, buff);
     buff.rewind();
   }
 }
예제 #3
0
  // Called when someone who's just connected to us sends a messages
  private void processNewSocket(SocketChannel c) throws IOException {
    int id = ChannelHelper.getInt(c);
    int port = ChannelHelper.getInt(c);
    String name = ChannelHelper.getString(c);

    // Move to connected peers lists
    Peer peer = new Peer(id, name, c.socket().getInetAddress(), port);
    new_sockets.remove(c);
    peers.put(c, peer);
    sockets.put(peer, c);

    if (listener != null) listener.addPeer(peer);
  }
예제 #4
0
  /** Send a ball to a peer. */
  public void sendBall(Ball b, double position, Peer p) throws IOException {
    ByteBuffer msg = ByteBuffer.allocateDirect(33); // type(1), id(4), position(8), dx(8), dy(8)
    msg.put(MSG_BALL);
    msg.putInt(b.id);
    msg.putDouble(position);
    msg.putDouble(b.dx);
    msg.putDouble(b.dy);
    msg.putInt(b.D);
    msg.flip();

    SocketChannel sock = sockets.get(p);
    if (sock == null) throw new IllegalArgumentException("Not connected to peer");

    ChannelHelper.sendAll(sock, msg);
  }
예제 #5
0
  // Called when an established peer sends us a message
  private void processPeerMessage(SocketChannel c) throws IOException {
    Peer peer = peers.get(c);

    ByteBuffer b = ByteBuffer.allocateDirect(1);
    int read = c.read(b);
    if (read < 0) {
      c.close();
      return;
    }
    if (read < 1) return; // No data?
    b.flip();
    byte type = b.get();

    switch (type) {
      case MSG_DEBUG:
        log(peer.getName() + ": " + ChannelHelper.getString(c));
        break;
      case MSG_BALL:
        int id = ChannelHelper.getInt(c);
        double position = ChannelHelper.getDouble(c);
        double dx = ChannelHelper.getDouble(c);
        double dy = ChannelHelper.getDouble(c);
        int D = ChannelHelper.getInt(c);
        if (listener != null) listener.receiveBall(id, position, dx, dy, D);
        break;
        //		Dropped ball
        //			Informative to all peers & server
        //			(Maybe implement as passing ball to server?)
        //			Server may respond with “you lose”
        //		Drop player
        //			Paxos confirmation that client is gone
        //		Heartbeat?
        //			Probably only sent in response to drop
        //			Ping/pong messages
        //		Server failure
        //			All peers, send choice of backup
      default:
        System.err.println("Unknown peer message: " + type);
    }
  }
예제 #6
0
  @Override
  public List<AbstractBean> getAllActiveFilterRecords(String array, String field, String username) {
    List<AbstractBean> retValue = new ArrayList<AbstractBean>();
    String query =
        "select * from tbl_crm_lead where type = 0 and status = ? and userId = ? and "
            + field
            + " IN ("
            + array
            + ") UNION select * from tbl_crm_lead where leadId IN (select leadId from tbl_crm_share where userId = ?) and type = 0 and status = ? and "
            + field
            + " IN ("
            + array
            + ");";
    try {
      preparedStatement = DBUtility.connection.prepareStatement(query);
      preparedStatement.setBoolean(1, true);
      preparedStatement.setString(2, username);
      preparedStatement.setString(3, username);
      preparedStatement.setBoolean(4, true);
    } catch (SQLException e) {
      ZLog.err("VNC CRM for Zimbra", "Error in getting all active records in LeadHelper", e);
    }
    ResultSet rs = dbu.select(preparedStatement);
    LeadBean leadBean = null;
    CountryHelper countryHelper = new CountryHelper();
    StateHelper stateHelper = new StateHelper();
    ChannelHelper channelHelper = new ChannelHelper();
    SectionHelper sectionHelper = new SectionHelper();
    CategoryHelper categoryHelper = new CategoryHelper();
    PriorityHelper priorityHelper = new PriorityHelper();
    StageHelper stageHelper = new StageHelper();
    CompanyHelper companyHelper = new CompanyHelper();
    LeadClassHelper leadClassHelper = new LeadClassHelper();

    try {
      while (rs.next()) {
        leadBean = new LeadBean();
        leadBean.setLeadId(rs.getInt("leadId"));
        leadBean.setSubjectName(rs.getString("subjectName"));
        leadBean.setLeadDescription(rs.getString("leadDescription"));
        leadBean.setContactName(rs.getString("contactName"));
        leadBean.setCompanyBean(
            (CompanyBean) (companyHelper.getRecordById(rs.getString("companyId"))));
        leadBean.setValuation(rs.getString("valuation"));
        leadBean.setLeadState(rs.getString("leadState"));
        leadBean.setLeadClassBean(
            (LeadClassBean) (leadClassHelper.getRecordById(rs.getString("leadClassId"))));
        leadBean.setPartnerName(rs.getString("partnerName"));
        leadBean.setPhone(rs.getString("phone"));
        leadBean.setFax(rs.getString("fax"));
        leadBean.setEmail(rs.getString("email"));
        leadBean.setWorkPhone(rs.getString("workPhone"));
        leadBean.setMobile(rs.getString("mobile"));
        leadBean.setStreet1(rs.getString("street1"));
        leadBean.setStreet2(rs.getString("street2"));
        leadBean.setCity(rs.getString("city"));
        leadBean.setZip(rs.getString("zip"));
        leadBean.setCountryBean(
            (CountryBean) (countryHelper.getRecordById(rs.getString("countryId"))));
        leadBean.setStateBean((StateBean) (stateHelper.getRecordById(rs.getString("stateId"))));
        leadBean.setChannelBean(
            (ChannelBean) (channelHelper.getRecordById(rs.getString("channelId"))));
        leadBean.setPriorityBean(
            (PriorityBean) (priorityHelper.getRecordById(rs.getString("priorityId"))));
        leadBean.setStageBean((StageBean) (stageHelper.getRecordById(rs.getString("stageId"))));
        leadBean.setCategoryBean(
            (CategoryBean) (categoryHelper.getRecordById(rs.getString("categoryId"))));
        leadBean.setSectionBean(
            (SectionBean) (sectionHelper.getRecordById(rs.getString("sectionId"))));
        leadBean.setType(rs.getString("type"));
        leadBean.setDateOpen(rs.getString("dateOpen"));
        leadBean.setDateClose(rs.getString("dateClose"));
        leadBean.setExpectedDateClose(rs.getString("expectedDateClose"));
        leadBean.setProbability(rs.getString("probability"));
        leadBean.setDayClose(rs.getString("dayClose"));
        leadBean.setDayOpen(rs.getString("dayOpen"));
        leadBean.setReferredBy(rs.getString("referredBy"));
        leadBean.setUserId(rs.getString("userId"));
        leadBean.setNextActionDate(rs.getString("nextActionDate"));
        leadBean.setNextAction(rs.getString("nextAction"));
        leadBean.setStatus(rs.getBoolean("status"));
        leadBean.setCreateBy(rs.getString("createBy"));
        leadBean.setCreateDate(rs.getString("createDate"));
        leadBean.setWriteBy(rs.getString("writeBy"));
        leadBean.setWriteDate(rs.getString("writeDate"));
        retValue.add(leadBean);
      }
    } catch (SQLException e) {
      ZLog.err("VNC CRM for Zimbra", "Error in Lead Helper Class", e);
    }
    return retValue;
  }