package chapter2.recipe6;
import io.netty.buffer.ByteBuf;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
/**
* @author trieunt
*
*/
public class NettyMonitorIO {
static final DateFormat DATE_TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm");
static ConcurrentMap<String, Long> dataOutStats = new ConcurrentHashMap<String, Long>();
static ConcurrentMap<String, Long> dataInStats = new ConcurrentHashMap<String, Long>();
public static long updateDataOut(ByteBuf buf) {
String time = DATE_TIME_FORMAT.format(new Date());
long c = dataOutStats.getOrDefault(time, 0L) + buf.readableBytes();
dataOutStats.put(time, c);
return c;
}
public static long updateDataIn(ByteBuf buf) {
String time = DATE_TIME_FORMAT.format(new Date());
long c = dataInStats.getOrDefault(time, 0L) + buf.writableBytes();
dataInStats.put(time, c);
return c;
}
static {
new Timer(true).schedule(new TimerTask() {
@Override
public void run() {
System.out.println("--------------------------------");
System.out.println("Data In Stats:");
dataInStats.forEach((String key, Long val)->{
System.out.println(key + " : "+val);
});
System.out.println("Data Out Stats:");
dataOutStats.forEach((String key, Long val)->{
System.out.println(key + " : "+val);
});
}
}, 2000, 2000);
}
}