/** toString returns current value. */
 public void testToString() {
   AtomicInteger ai = new AtomicInteger();
   assertEquals("0", ai.toString());
   for (int x : VALUES) {
     ai.set(x);
     assertEquals(Integer.toString(x), ai.toString());
   }
 }
Beispiel #2
0
  private String bindingClassName(
      ExecutableElement providerMethod,
      Map<ExecutableElement, String> methodToClassName,
      Map<String, AtomicInteger> methodNameToNextId) {
    String className = methodToClassName.get(providerMethod);
    if (className != null) return className;

    String methodName = providerMethod.getSimpleName().toString();
    String suffix = "";
    AtomicInteger id = methodNameToNextId.get(methodName);
    if (id == null) {
      methodNameToNextId.put(methodName, new AtomicInteger(2));
    } else {
      suffix = id.toString();
      id.incrementAndGet();
    }
    String uppercaseMethodName =
        Character.toUpperCase(methodName.charAt(0)) + methodName.substring(1);
    className = uppercaseMethodName + "ProvidesAdapter" + suffix;
    methodToClassName.put(providerMethod, className);
    return className;
  }
  /** Método run da classe, trata as mensagens recebidas por um cliente. */
  @Override
  public void run() {

    try {
      BufferedReader inFromClient =
          new BufferedReader(new InputStreamReader(socket.getInputStream()));
      String line;

      while ((line = inFromClient.readLine()) != null) {
        /* Quebra a string em tokens, separando o tipo da mensagem, o remetente, o timestamp e o id da mensagem */
        StringTokenizer st = new StringTokenizer(line, "@");

        String messageType = st.nextToken();
        String sender = st.nextToken();
        int timestampReceived = Integer.parseInt(st.nextToken());
        String message_id = st.nextToken();

        System.out.print("+ Mensagem recebida: " + messageType);
        System.out.print(". id: " + message_id);
        System.out.print(". remetente: " + sender);
        System.out.print(". timestamp: " + timestampReceived);
        System.out.println(".");

        String key = Integer.toString(timestampReceived) + sender;

        if (messageType.equals(eleicaoMessage)) {

          if (Integer.parseInt(message_id) < Integer.parseInt(pid) && message_id == "1") {
            Socket clientSocketA = new Socket("localhost", 25001);
            BufferedWriter outToProcessA =
                new BufferedWriter(new OutputStreamWriter(clientSocketA.getOutputStream()));
            Thread.sleep(2000);
            // String message_id;
            String message;
            message = "OK" + "@" + pid + "@" + timestamp.toString() + "@" + message_id;
            /* Incremento do timestamp. */
            timestamp.incrementAndGet();
            outToProcessA.write(message);
            outToProcessA.newLine();
            outToProcessA.flush();
            coordenador = "1";
          } else {
            if (Integer.parseInt(message_id) < Integer.parseInt(pid) && message_id == "2") {
              Socket clientSocketB = new Socket("localhost", 25002);
              BufferedWriter outToProcessB =
                  new BufferedWriter(new OutputStreamWriter(clientSocketB.getOutputStream()));
              Thread.sleep(2000);
              // String message_id;
              String message;
              message = "OK" + "@" + pid + "@" + timestamp.toString() + "@" + message_id;
              /* Incremento do timestamp. */
              timestamp.incrementAndGet();
              outToProcessB.write(message);
              outToProcessB.newLine();
              outToProcessB.flush();
              coordenador = "2";
            }
          }
        } else {

          // atualiza o coordenador com que vem em OK
          if (messageType.equals("COORDENADOR")) {
            coordenador = sender;
          }

          /* ACK recebido. O número de ACKs da mensagem deve ser incrementado. */
          /* Caso o número de ACKs tenha chegado em 2, e a mensagem está no início da fila, */
          /* então a mensagem deve ser entregue à aplicação. */
          /*
          Integer numberOfAcks;
          String firstKey = messageQueue.firstKey();

          for ( Map.Entry<String, String> entry : messageQueue.entrySet() ) {
              if ( entry.getValue().equals(message_id) ) {
                  key = entry.getKey();
                  break;
              }
          }

          if ( (numberOfAcks = ackQueue.get(key)) != null ) {

              /* Incremente o número de ACKs recebidos.
              ackQueue.replace(key, numberOfAcks, ++numberOfAcks);

              if ( numberOfAcks == 2 ) {
                  /* Possui dois ACKs. Necessário verificar se está no início da fila.

                  if ( firstKey.equals(key) ) {
                      /* Retire da fila e entregue para a aplicação.
                      Map.Entry<String, String> m = messageQueue.pollFirstEntry();
                      ackQueue.pollFirstEntry();

                      System.out.print("\t - Mensagem entregue para a aplicacao.");
                      System.out.println(" remetente: " + m.getKey() + ". id: " + m.getValue());
                  }

              }
          }
          */

        }
      }
    } catch (IOException e) {
      //            e.printStackTrace();
    } catch (InterruptedException ex) {
      Logger.getLogger(socket2.class.getName()).log(Level.SEVERE, null, ex);
    }
  }
    public Thread newThread(Runnable runnable) {

      Log.e(TAG, "New a Thread for  ImageLoadTask:" + mCount.toString());
      return new Thread(runnable, "ImageLoadTask #" + mCount.getAndIncrement());
    }
 private void addCSeq(DefaultFullHttpRequest req) {
   req.headers().add("CSeq", cseq.toString());
   cseq.incrementAndGet();
 }
 @Override
 public String toString() {
   return super.toString() + "[References: " + references.toString() + "]";
 }