Exemple #1
0
  @Override
  @OutboundActionMeta(name = "batch")
  public void handleOutbound(Context ctx) throws ServletException, IOException {
    Payload payload = ctx.getPayload();
    HttpServletRequest request = ctx.getHttpServletRequest();
    HttpServletResponse response = ctx.getHttpServletResponse();
    String userIp = m_util.getRemoteIp(request);
    String version = payload.getVersion();
    boolean success = true;

    if (userIp != null) {
      if ("1".equals(version)) {
        processVersion1(payload, request, userIp);
      } else if ("2".equals(version)) {
        processVersion2(payload, request, userIp);
      } else {
        success = false;
        Cat.logEvent("InvalidVersion", version, Event.SUCCESS, version);
      }
    } else {
      success = false;
      Cat.logEvent("unknownIp", "batch", Event.SUCCESS, null);
      m_logger.info(
          "unknown http request, x-forwarded-for:" + request.getHeader("x-forwarded-for"));
    }

    if (success) {
      response.getWriter().write("OK");
    } else {
      response.getWriter().write("validate request!");
    }
  }
Exemple #2
0
    @Override
    public void run() {
      while (channel.isOpen()) {
        try {

          final ByteBuffer inBuffer = ByteBuffer.allocate(FRAGMENT_SIZE * 10);
          final InetSocketAddress addr = (InetSocketAddress) channel.receive(inBuffer);
          inBuffer.rewind();
          final Payload payload = PayloadFactory.create(inBuffer);
          final Endpoint endpoint =
              new Endpoint(addr.getAddress(), addr.getPort(), payload.getSubport());
          Connection conn = connectionTable.get(endpoint);
          // if CONNECT and connection doesn't exist
          if (payload.getCommand() == Command.CONNECT && conn == null) {
            final String serviceName = ((ConnectPayload) payload).getService();
            final Service service = serviceTable.get(serviceName);

            if (service != null) {
              conn = new Connection(SRPC.this, endpoint, service);
              connectionTable.put(endpoint, conn);
              conn.commandReceived(payload);
            }
            // if service is null ignore connection
          } else if (conn != null) {
            conn.commandReceived(payload);
          } else {
            // logger.info( "Unknown connection");
          }

        } catch (final IOException e) {
          // TODO - decide what to do here - throw runtimme exception or log output
          System.err.println(e.getMessage());
        }
      }
    }
Exemple #3
0
  private Map<String, double[]> getGraphDatasFromDaily(
      Date start, Date end, Model model, Payload payload) {
    String domain = model.getDomain();
    String type = payload.getType();
    String name = payload.getName();
    String ip = model.getIpAddress();
    String queryIp = "All".equalsIgnoreCase(ip) == true ? "All" : ip;
    List<DailyGraph> graphs = new ArrayList<DailyGraph>();

    for (long startLong = start.getTime();
        startLong < end.getTime();
        startLong = startLong + TimeUtil.ONE_DAY) {
      try {
        DailyGraph graph =
            m_dailyGraphDao.findByDomainNameIpDate(
                new Date(startLong),
                queryIp,
                domain,
                EventAnalyzer.ID,
                DailyGraphEntity.READSET_FULL);
        graphs.add(graph);
      } catch (DalNotFoundException e) {
      } catch (Exception e) {
        Cat.logError(e);
      }
    }
    return buildGraphDatasForDaily(start, end, type, name, graphs);
  }
 private Payload doInBackgroundRegister(Payload data) {
   String username = (String) data.data[0];
   String password = (String) data.data[1];
   BasicHttpSyncer server = new RemoteServer(this, null);
   HttpResponse ret = server.register(username, password);
   String hostkey = null;
   boolean valid = false;
   data.returnType = ret.getStatusLine().getStatusCode();
   String status = null;
   if (data.returnType == 200) {
     try {
       JSONObject jo = (new JSONObject(server.stream2String(ret.getEntity().getContent())));
       status = jo.getString("status");
       if (status.equals("ok")) {
         hostkey = jo.getString("hkey");
         valid = (hostkey != null) && (hostkey.length() > 0);
       }
     } catch (JSONException e) {
     } catch (IllegalStateException e) {
       throw new RuntimeException(e);
     } catch (IOException e) {
       throw new RuntimeException(e);
     }
   }
   if (valid) {
     data.success = true;
     data.data = new String[] {username, hostkey};
   } else {
     data.success = false;
     if (status != null) {
       data.data = new String[] {status};
     }
   }
   return data;
 }
Exemple #5
0
  public void buildTrendGraph(Model model, Payload payload) {
    Date start = payload.getHistoryStartDate();
    Date end = payload.getHistoryEndDate();
    String type = payload.getType();
    String name = payload.getName();
    String display = name != null ? name : type;
    int size = (int) ((end.getTime() - start.getTime()) * 12 / TimeUtil.ONE_HOUR);
    String queryType = payload.getReportType();
    List<Map<String, double[]>> allDatas = new ArrayList<Map<String, double[]>>();
    long step = TimeUtil.ONE_MINUTE * 5;

    if (queryType.equalsIgnoreCase("day")) {
      Map<String, double[]> currentGraph = getGraphDatasForHour(start, end, model, payload);
      Map<String, double[]> lastDayGraph =
          getGraphDatasForHour(
              new Date(start.getTime() - TimeUtil.ONE_DAY),
              new Date(end.getTime() - TimeUtil.ONE_DAY),
              model,
              payload);
      Map<String, double[]> lastWeekGraph =
          getGraphDatasForHour(
              new Date(start.getTime() - TimeUtil.ONE_WEEK),
              new Date(end.getTime() - TimeUtil.ONE_WEEK),
              model,
              payload);

      allDatas.add(currentGraph);
      allDatas.add(lastDayGraph);
      allDatas.add(lastWeekGraph);
    } else if (queryType.equalsIgnoreCase("week")) {
      Map<String, double[]> currentGraph = getGraphDatasForHour(start, end, model, payload);
      Map<String, double[]> lastWeek =
          getGraphDatasForHour(
              new Date(start.getTime() - TimeUtil.ONE_WEEK),
              new Date(end.getTime() - TimeUtil.ONE_WEEK),
              model,
              payload);

      allDatas.add(currentGraph);
      allDatas.add(lastWeek);
    } else if (queryType.equalsIgnoreCase("month")) {
      size = (int) ((end.getTime() - start.getTime()) / TimeUtil.ONE_DAY);
      step = TimeUtil.ONE_DAY;
      Map<String, double[]> graphData = getGraphDatasFromDaily(start, end, model, payload);

      allDatas.add(graphData);
    } else {
      throw new RuntimeException("Error graph query type");
    }

    LineChart item = buildTotal(allDatas, start, size, step, display, queryType);
    model.setHitTrend(item.getJsonString());

    item = buildFail(allDatas, start, size, step, display, queryType);
    model.setFailureTrend(item.getJsonString());
  }
Exemple #6
0
  @Override
  @OutboundActionMeta(name = "t")
  public void handleOutbound(Context ctx) throws ServletException, IOException {
    Model model = new Model(ctx);
    Payload payload = ctx.getPayload();

    normalize(model, payload);
    String type = payload.getType();

    switch (payload.getAction()) {
      case HOURLY_REPORT:
        showHourlyReport(model, payload);
        DisplayNames displayNameReport = model.getDisplayNameReport();
        if ((!StringUtils.isEmpty(type)) && displayNameReport != null) {
          buildTransactionNameGraph(displayNameReport.getResults(), model);
        }
        break;
      case HISTORY_REPORT:
        showSummarizeReport(model, payload);
        displayNameReport = model.getDisplayNameReport();
        if ((!StringUtils.isEmpty(type)) && displayNameReport != null) {
          buildTransactionNameGraph(displayNameReport.getResults(), model);
        }
        break;
      case HISTORY_GRAPH:
        m_historyGraph.buildTrendGraph(model, payload);
        break;
      case GRAPHS:
        showHourlyGraphs(model, payload);
        break;
      case MOBILE:
        showHourlyReport(model, payload);
        if (!StringUtils.isEmpty(payload.getType())) {
          DisplayNames report = model.getDisplayNameReport();
          String json = m_gson.toJson(report);
          model.setMobileResponse(json);
        } else {
          DisplayTypes report = model.getDisplayTypeReport();
          String json = m_gson.toJson(report);
          model.setMobileResponse(json);
        }
        break;
      case MOBILE_GRAPHS:
        MobileGraphs graphs = showMobileGraphs(model, payload);
        if (graphs != null) {
          model.setMobileResponse(m_gson.toJson(graphs));
        }
        break;
    }

    if (payload.isXml()) {
      m_xmlViewer.view(ctx, model);
    } else {
      m_jspViewer.view(ctx, model);
    }
  }
Exemple #7
0
  private TransactionName getTransactionName(Payload payload) {
    String domain = payload.getDomain();
    String type = payload.getType();
    String name = payload.getName();
    String ip = payload.getIpAddress();
    String ipAddress = payload.getIpAddress();
    String date = String.valueOf(payload.getDate());
    ModelRequest request =
        new ModelRequest(domain, payload.getPeriod()) //
            .setProperty("date", date) //
            .setProperty("type", payload.getType()) //
            .setProperty("name", payload.getName()) //
            .setProperty("ip", ipAddress);
    if (name == null || name.length() == 0) {
      request.setProperty("name", "*");
      request.setProperty("all", "true");
      name = CatString.ALL;
    }
    ModelResponse<TransactionReport> response = m_service.invoke(request);
    TransactionReport report = response.getModel();

    report = m_mergeManager.mergerAll(report, ipAddress, name);
    TransactionType t = report.getMachines().get(ip).findType(type);
    if (t != null) {
      TransactionName n = t.findName(name);
      if (n != null) {
        n.accept(m_computer);
      }
      return n;
    } else {
      return null;
    }
  }
  public static Payload parseMessage(String message) {
    final Payload payload = new Payload();

    Document messageDom = XMLParser.parse(message);
    NodeList statements = messageDom.getElementsByTagName("com.freedomotic.reactions.Statement");
    for (int i = 0; i < statements.getLength(); i++) {
      Element statement = (Element) statements.item(i);
      payload.enqueueStatement(parseStatement(statement));
    }
    return payload;
  }
Exemple #9
0
 public boolean Send(Payload p) {
   try {
     int identity = rand.nextInt(Integer.MAX_VALUE);
     while (identifierPool.contains(identity)) identity = rand.nextInt(Integer.MAX_VALUE);
     p.identity = identity;
     identifierPool.add(identity);
     socket.send(p.getPacket(socket));
   } catch (IOException e) {
     return false;
   }
   return true;
 }
Exemple #10
0
  private TransactionReport getHourlyReport(Payload payload) {
    String domain = payload.getDomain();
    String date = String.valueOf(payload.getDate());
    String ipAddress = payload.getIpAddress();
    ModelRequest request =
        new ModelRequest(domain, payload.getPeriod()) //
            .setProperty("date", date) //
            .setProperty("type", payload.getType()) //
            .setProperty("ip", ipAddress);

    if (m_service.isEligable(request)) {
      ModelResponse<TransactionReport> response = m_service.invoke(request);
      TransactionReport report = response.getModel();

      if (payload.getPeriod().isLast()) {
        Date start = new Date(payload.getDate());
        Date end = new Date(payload.getDate() + TimeUtil.ONE_HOUR);

        if (CatString.ALL.equals(domain)) {
          report = m_reportService.queryTransactionReport(domain, start, end);
        }
        Set<String> domains = m_reportService.queryAllDomainNames(start, end, "transaction");
        Set<String> domainNames = report.getDomainNames();

        domainNames.addAll(domains);
      }
      report = m_mergeManager.mergerAllIp(report, ipAddress);
      calculateTps(payload, report);
      return report;
    } else {
      throw new RuntimeException(
          "Internal error: no eligable transaction service registered for " + request + "!");
    }
  }
  /** Test of addPayload method, of class UserMessage. */
  @Test
  public void test16_AddPayload() {
    em.getTransaction().begin();
    List<UserMessage> tps = em.createQuery("from UserMessage", UserMessage.class).getResultList();

    assertTrue(tps.size() == 1);

    tps.get(0).addPayload(T_PAYLOAD_3);

    em.getTransaction().commit();

    tps = em.createQuery("from UserMessage", UserMessage.class).getResultList();
    assertEquals(1, tps.size());

    assertEquals(3, tps.get(0).getPayloads().size());

    for (IPayload pl : tps.get(0).getPayloads()) {
      if (pl.getContentLocation().equals(T_PAYLOAD_1.getContentLocation()))
        assertEquals(T_PAYLOAD_1.getMimeType(), pl.getMimeType());
      else if (pl.getContentLocation().equals(T_PAYLOAD_2.getContentLocation())) {
        assertEquals(T_PAYLOAD_2.getMimeType(), pl.getMimeType());
        assertEquals(T_PAYLOAD_2.getPayloadURI(), pl.getPayloadURI());
      }
      if (pl.getContentLocation().equals(T_PAYLOAD_3.getContentLocation())) {
        assertEquals(T_PAYLOAD_3.getMimeType(), pl.getMimeType());
        assertEquals(T_PAYLOAD_3.getPayloadURI(), pl.getPayloadURI());
      }
    }
  }
Exemple #12
0
  private void buildTransactionMetaInfo(Model model, Payload payload, TransactionReport report) {
    String type = payload.getType();
    String sorted = payload.getSortBy();
    String queryName = payload.getQueryName();
    String ip = payload.getIpAddress();

    if (!StringUtils.isEmpty(type)) {
      DisplayNames displayNames = new DisplayNames();

      model.setDisplayNameReport(displayNames.display(sorted, type, ip, report, queryName));
      buildTransactionNamePieChart(displayNames.getResults(), model);
    } else {
      model.setDisplayTypeReport(new DisplayTypes().display(sorted, ip, report));
    }
  }
 @Override
 public void onItemClick(
     final AdapterView<?> parent, final View view, final int position, final long id) {
   final ListView lv = (ListView) parent;
   final Payload payload = (Payload) lv.getAdapter().getItem(position);
   if (payload.intentable()) {
     parent.getContext().startActivity(payload.toIntent(parent.getContext()));
   } else if (!this.clickListener.payloadClicked(payload)) {
     Toast.makeText(
             parent.getContext(),
             "Do not know how to show: " + payload.getTitle(),
             Toast.LENGTH_LONG)
         .show();
   }
 }
    public Router executeIf(String pattern, Consumer<Payload> consumer) {

      if (payload.getRequestURI().contains(pattern)) {

        payload.setPattern(pattern);
        payload.setFinalURI(payload.getRequestURI().replace(pattern, ""));

        try {
          consumer.accept(payload);
        } catch (Exception e) {
          logger.debug(e.getMessage(), e);
        }
      }
      return this;
    }
Exemple #15
0
  private void processVersion2(Payload payload, HttpServletRequest request, String userIp) {
    String content = payload.getContent();
    String records[] = content.split("\n");
    IpInfo ipInfo = m_ipService.findIpInfoByString(userIp);

    if (ipInfo != null) {
      String province = ipInfo.getProvince();
      String operatorStr = ipInfo.getChannel();
      Integer cityId = m_appConfigManager.getCities().get(province);
      Integer operatorId = m_appConfigManager.getOperators().get(operatorStr);

      if (cityId != null && operatorId != null) {
        for (String record : records) {
          try {
            if (!StringUtils.isEmpty(record)) {
              processOneRecord(cityId, operatorId, record);
            }
          } catch (Exception e) {
            Cat.logError(e);
          }
        }
      } else {
        Cat.logEvent("Unknown", province + ":" + operatorStr, Event.SUCCESS, null);
      }
    }
  }
Exemple #16
0
  private void normalize(Model model, Payload payload) {
    model.setPage(ReportPage.TRANSACTION);
    m_normalizePayload.normalize(model, payload);

    if (StringUtils.isEmpty(payload.getQueryName())) {
      payload.setQueryName(null);
    }
    if (StringUtils.isEmpty(payload.getType())) {
      payload.setType(null);
    }

    String queryName = payload.getQueryName();
    if (queryName != null) {
      model.setQueryName(queryName);
    }
  }
Exemple #17
0
  public DataStructure createDataStructure() throws DataFormatException {
    Payload payload = new Payload();
    SessionKey key = (SessionKey) (new SessionKeyTest()).createDataStructure();

    byte data[] = "Hello, I2P".getBytes();
    // This causes equals() to fail unless we override the test
    // to set the unencrypted data after reading.
    // Unencrypted data is deprecated, just use encrypted data for the test.
    // payload.setUnencryptedData(data);
    Hash hash = (Hash) (new HashTest()).createDataStructure();

    Destination target = (Destination) (new DestinationTest()).createDataStructure();
    payload.setEncryptedData(data);

    return payload;
  }
  /** Test of getPayloads method, of class UserMessage. */
  @Test
  public void test15_GetPayloads() {
    List<UserMessage> tps = em.createQuery("from UserMessage", UserMessage.class).getResultList();
    assertTrue(tps.size() == 1);

    assertEquals(2, tps.get(0).getPayloads().size());

    for (IPayload pl : tps.get(0).getPayloads()) {
      if (pl.getContentLocation().equals(T_PAYLOAD_1.getContentLocation()))
        assertEquals(T_PAYLOAD_1.getMimeType(), pl.getMimeType());
      else if (pl.getContentLocation().equals(T_PAYLOAD_2.getContentLocation())) {
        assertEquals(T_PAYLOAD_2.getMimeType(), pl.getMimeType());
        assertEquals(T_PAYLOAD_2.getPayloadURI(), pl.getPayloadURI());
      }
    }
  }
  public void handleEvent(QueueElementIF elem) {
    logger.debug("Got event " + elem);

    // If startup
    if (!initialized) {
      // This one is sent when setting up
      if (elem instanceof StagesInitializedSignal) {
        // Request registration for this app
        dispatch(new BambooRouterAppRegReq(app_id, false, false, false, my_sink));
      }
      // OK, we are now registered to Bamboo
      else if (elem instanceof BambooRouterAppRegResp) {
        // handle pending events
        initialized = true;
        while (!wait_q.isEmpty()) handleEvent((QueueElementIF) wait_q.removeFirst());

        // Dispatch in 10s a Alarm msg to stages on this node
        if (sender) classifier.dispatch_later(new Alarm(), 10000);
      }
      // For pending events before we are registered
      else wait_q.addLast(elem);
    }
    // Normal opertional mode
    else {
      // Event that we got a message delivered
      if (elem instanceof BambooRouteDeliver) {
        BambooRouteDeliver deliver = (BambooRouteDeliver) elem;
        Payload pay = (Payload) deliver.payload;
        logger.info("Message is: " + pay.toString());
      } else if (elem instanceof Alarm) {
        // Create a new message to be send over bamboo, only
        // stages with the same app_id will get this message!
        String msg =
            "This message should be send over" + "Bamboo to the node with the smallest node ID.";
        BambooRouteInit init =
            new BambooRouteInit(BigInteger.ZERO, app_id, false, false, new Payload(msg));
        // Send the message to the sink.
        dispatch(init);

        // Dispatch in 10s a new Alarm msg to the stages on this node
        classifier.dispatch_later(new Alarm(), 10000);
      } else {
        BUG("Event " + elem + " unknown.");
      }
    }
  }
Exemple #20
0
  private TransactionReport getHourlyReport(Payload payload) {
    String domain = payload.getDomain();
    String ipAddress = payload.getIpAddress();
    ModelRequest request =
        new ModelRequest(domain, payload.getDate())
            .setProperty("type", payload.getType())
            .setProperty("ip", ipAddress);

    if (m_service.isEligable(request)) {
      ModelResponse<TransactionReport> response = m_service.invoke(request);
      TransactionReport report = response.getModel();

      if (payload.getPeriod().isLast()) {
        Date start = new Date(payload.getDate());
        Date end = new Date(payload.getDate() + TimeHelper.ONE_HOUR);

        if (Constants.ALL.equals(domain)) {
          report = m_reportService.queryTransactionReport(domain, start, end);
        }
        Set<String> domains =
            m_reportService.queryAllDomainNames(start, end, TransactionAnalyzer.ID);
        Set<String> domainNames = report.getDomainNames();

        domainNames.addAll(domains);
      }
      return report;
    } else {
      throw new RuntimeException(
          "Internal error: no eligable transaction service registered for " + request + "!");
    }
  }
Exemple #21
0
  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    try {

      Payload payload = gson.fromJson(req.getReader(), Payload.class);

      if (payload != null && payload.getMarkdown() != null) {

        String html = "";
        if (payload.getLinkAttributes() != null && payload.getLinkAttributes().size() > 0) {
          AttributesLinkRederer linkRenderer =
              new AttributesLinkRederer(payload.getLinkAttributes());
          html = processor.markdownToHtml(payload.getMarkdown(), linkRenderer);
        } else {
          html = processor.markdownToHtml(payload.getMarkdown());
        }

        resp.getWriter().write(html);
      }

      resp.getWriter().close();
      resp.setStatus(200);
    } catch (Exception e) {
      e.printStackTrace();
      resp.setStatus(500);
    }
  }
Exemple #22
0
 private void calculateTps(Payload payload, TransactionReport report) {
   try {
     if (payload != null && report != null) {
       boolean isCurrent = payload.getPeriod().isCurrent();
       String ip = payload.getIpAddress();
       Machine machine = report.getMachines().get(ip);
       if (machine == null) {
         return;
       }
       for (TransactionType transType : machine.getTypes().values()) {
         long totalCount = transType.getTotalCount();
         double tps = 0;
         if (isCurrent) {
           double seconds =
               (System.currentTimeMillis() - payload.getCurrentDate()) / (double) 1000;
           tps = totalCount / seconds;
         } else {
           double time =
               (report.getEndTime().getTime() - report.getStartTime().getTime()) / (double) 1000;
           tps = totalCount / (double) time;
         }
         transType.setTps(tps);
         for (TransactionName transName : transType.getNames().values()) {
           long totalNameCount = transName.getTotalCount();
           double nameTps = 0;
           if (isCurrent) {
             double seconds =
                 (System.currentTimeMillis() - payload.getCurrentDate()) / (double) 1000;
             nameTps = totalNameCount / seconds;
           } else {
             double time =
                 (report.getEndTime().getTime() - report.getStartTime().getTime()) / (double) 1000;
             nameTps = totalNameCount / (double) time;
           }
           transName.setTps(nameTps);
           transName.setTotalPercent((double) totalNameCount / totalCount);
         }
       }
     }
   } catch (Exception e) {
     Cat.logError(e);
   }
 }
  @RequestMapping(
      value = {"/**/*.*", "*.*"},
      method = {GET, HEAD},
      produces = "*/*")
  @ResponseBody
  public void all(HttpServletRequest request, HttpServletResponse response) {

    Payload payload = new Payload();
    payload.setRequest(request);
    payload.setResponse(response);
    payload.setRequestURI(request.getRequestURI());

    Router router =
        new Router(payload)
            .executeIf("/afx/resource/", generalResource::executeAfxResource)
            .executeIf("/afx/dynamic/", dynamicResource::executeDynamicResource)
            .executeIf("/afx/live/", liveResource::executeLiveResource)
            .executeIf("/afx/slide/", slideResource::executeSlideResource)
            .executeIf("/afx/epub/", epubResource::executeEpubResource);
  }
 private Payload doInBackgroundLogin(Payload data) {
   String username = (String) data.data[0];
   String password = (String) data.data[1];
   BasicHttpSyncer server = new RemoteServer(this, null);
   HttpResponse ret = server.hostKey(username, password);
   String hostkey = null;
   boolean valid = false;
   if (ret != null) {
     data.returnType = ret.getStatusLine().getStatusCode();
     Log.i(
         AnkiDroidApp.TAG,
         "doInBackgroundLogin - response from server: "
             + data.returnType
             + " ("
             + ret.getStatusLine().getReasonPhrase()
             + ")");
     if (data.returnType == 200) {
       try {
         JSONObject jo = (new JSONObject(server.stream2String(ret.getEntity().getContent())));
         hostkey = jo.getString("key");
         valid = (hostkey != null) && (hostkey.length() > 0);
       } catch (JSONException e) {
         valid = false;
       } catch (IllegalStateException e) {
         throw new RuntimeException(e);
       } catch (IOException e) {
         throw new RuntimeException(e);
       }
     }
   } else {
     Log.e(AnkiDroidApp.TAG, "doInBackgroundLogin - empty response from server");
   }
   if (valid) {
     data.success = true;
     data.data = new String[] {username, hostkey};
   } else {
     data.success = false;
   }
   return data;
 }
  /**
   * Dispatch a message.
   *
   * @threadsafe
   * @remarks: The function may not be running from the UI thread. It is listener's duty to handle
   *     multiple threading issue.
   */
  public static void dispatch(String name, Map message) {

    try {

      Payload payload;

      mutex.acquire();

      if (dispatching) {
        payload = new Payload();
        payload.name = name;
        payload.message = message;
        queue.add(payload);
        mutex.release();
        return;
      }

      dispatching = true;
      //            printMap(message);
      mutex.release();

      emit(name, message); // Emit

      mutex.acquire(); // Process queued message

      while (queue.size() > 0) {
        payload = queue.poll();
        mutex.release();

        emit(payload.name, payload.message);

        mutex.acquire();
      }
      dispatching = false;
      mutex.release();

    } catch (Exception e) {
      Log.e(TAG, "exception", e);
    }
  }
Exemple #26
0
  public ResponsePayload SendAndReceive(final Payload p) throws IOException {
    try {
      int identity = rand.nextInt(Integer.MAX_VALUE);
      while (identifierPool.contains(identity)) identity = rand.nextInt(Integer.MAX_VALUE);
      p.identity = identity;
      identifierPool.add(identity);
      pendingRes.put(p.identity, null);
      socket.send(p.getPacket(socket));
    } catch (IOException e) {
      pendingRes.remove(p.identity);
      return null;
    }
    Thread t =
        new Thread(
            new Runnable() {

              @Override
              public void run() {
                try {
                  Thread.sleep(10000);
                  ResponsePayload timeout = new ResponsePayload();
                  timeout.status = "failed";
                  timeout.message = "Connection timeout!";
                  pendingRes.put(p.identity, timeout);
                } catch (InterruptedException e) {
                  e.printStackTrace();
                }
              }
            });
    t.start();
    while (pendingRes.get(p.identity) == null && pendingRes.containsKey(p.identity)) {
      try {
        Thread.sleep(500);
      } catch (InterruptedException e) {
        return pendingRes.remove(p.identity);
      }
    }
    t.interrupt();
    return pendingRes.remove(p.identity);
  }
Exemple #27
0
 /**
  * Calculates and sets {@link Payload#setContentMD5} on the payload.
  *
  * <p>note that this will rebuffer in memory if the payload is not repeatable.
  *
  * @param payload payload to calculate
  * @return new Payload with md5 set.
  * @throws IOException
  */
 public static Payload calculateMD5(Payload payload) throws IOException {
   checkNotNull(payload, "payload");
   if (!payload.isRepeatable()) {
     MutableContentMetadata oldContentMetadata = payload.getContentMetadata();
     Payload oldPayload = payload;
     try {
       payload = newByteArrayPayload(toByteArray(payload));
     } finally {
       oldPayload.release();
     }
     oldContentMetadata.setContentLength(payload.getContentMetadata().getContentLength());
     oldContentMetadata.setContentMD5(payload.getContentMetadata().getContentMD5());
     payload.setContentMetadata(oldContentMetadata);
   }
   payload
       .getContentMetadata()
       .setContentMD5(asByteSource(payload.getInput()).hash(md5()).asBytes());
   return payload;
 }
Exemple #28
0
 public Map<String, double[]> getGraphDatasForHour(
     Date start, Date end, Model model, Payload payload) {
   String domain = model.getDomain();
   String type = payload.getType();
   String name = payload.getName();
   String ip = model.getIpAddress();
   String queryIP = "All".equals(ip) == true ? "all" : ip;
   List<Graph> events = new ArrayList<Graph>();
   for (long startLong = start.getTime();
       startLong < end.getTime();
       startLong = startLong + TimeUtil.ONE_HOUR) {
     try {
       Graph graph =
           m_graphDao.findSingalByDomainNameIpDuration(
               new Date(startLong), queryIP, domain, EventAnalyzer.ID, GraphEntity.READSET_FULL);
       events.add(graph);
     } catch (DalNotFoundException e) {
     } catch (Exception e) {
       Cat.logError(e);
     }
   }
   return buildGraphDatasForHour(start, end, type, name, events);
 }
Exemple #29
0
  private void showHourlyReport(Model model, Payload payload) {
    try {
      TransactionReport report = getHourlyReport(payload);

      if (report != null) {
        report.accept(m_computer);
        model.setReport(report);

        String type = payload.getType();
        String sorted = payload.getSortBy();
        String queryName = payload.getQueryName();
        String ip = payload.getIpAddress();
        if (!StringUtils.isEmpty(type)) {
          model.setDisplayNameReport(
              new DisplayNames().display(sorted, type, ip, report, queryName));
        } else {
          model.setDisplayTypeReport(new DisplayTypes().display(sorted, ip, report));
        }
      }
    } catch (Throwable e) {
      Cat.logError(e);
      model.setException(e);
    }
  }
Exemple #30
0
  public void store(String userName, String accountName, Payload payload) {
    ConfigModification modification = m_configModificationDao.createLocal();

    modification.setUserName(userName);
    modification.setAccountName(accountName);
    modification.setActionName(payload.getAction().getName());
    modification.setDate(new Date());
    modification.setArgument(new JsonBuilder().toJson(payload));

    try {
      m_configModificationDao.insert(modification);
    } catch (Exception ex) {
      Cat.logError(ex);
    }
  }