Example #1
0
  @Override
  public void updatePktRemoteFMCounterStoreLocal(IOFSwitch sw, OFMessage m) {
    String countersKey = this.getCountersKey(sw, m, null);
    Map<String, MutableInt> pktremote_buffer = this.pktremote_local_buffer.get();
    MutableInt currval = pktremote_buffer.get(countersKey);

    if (currval == null) {
      this.getPktRemoteFMCounters(sw, m); // create counters as side effect (if required)
      currval = new MutableInt();
      pktremote_buffer.put(countersKey, currval);
    }
    currval.increment();
    return;
  }
Example #2
0
  @Override
  public void updatePacketInCountersLocal(IOFSwitch sw, OFMessage m, Ethernet eth) {
    if (((OFPacketIn) m).getPacketData().length <= 0) {
      return;
    }

    String countersKey = this.getCountersKey(sw, m, eth);
    Map<String, MutableInt> pktin_buffer = this.pktin_local_buffer.get();
    MutableInt currval = pktin_buffer.get(countersKey);

    if (currval == null) {
      this.getPacketInCounters(sw, m, eth); // create counters as side effect (if required)
      currval = new MutableInt();
      pktin_buffer.put(countersKey, currval);
    }
    currval.increment();
    return;
  }
Example #3
0
  @Override
  public void updateFlush() {
    Date date = new Date();
    Map<String, MutableInt> pktin_buffer = this.pktin_local_buffer.get();
    for (String key : pktin_buffer.keySet()) {
      MutableInt currval = pktin_buffer.get(key);
      int delta = currval.get();

      if (delta > 0) {
        List<ICounter> counters = this.pktinCounters.get(key);
        if (counters != null) {
          for (ICounter c : counters) {
            c.increment(date, delta);
          }
        }
      }
    }
    // We could do better "GC" of counters that have not been update "recently"
    pktin_buffer.clear();

    Map<String, MutableInt> pktout_buffer = this.pktout_local_buffer.get();
    for (String key : pktout_buffer.keySet()) {
      MutableInt currval = pktout_buffer.get(key);
      int delta = currval.get();

      if (delta > 0) {
        List<ICounter> counters = this.pktoutCounters.get(key);
        if (counters != null) {
          for (ICounter c : counters) {
            c.increment(date, delta);
          }
        }
      }
    }
    // We could do better "GC" of counters that have not been update "recently"
    pktout_buffer.clear();
  }