Net traffic compressing. Enabled by default. Can be disabled by -Dnocompress on server.

This commit is contained in:
magenoxx 2011-06-08 18:45:57 +04:00
parent 41546cf7d3
commit 05759b2966
3 changed files with 34 additions and 6 deletions

View file

@ -41,6 +41,7 @@ import mage.client.util.GameManager;
import mage.client.util.object.SaveObjectUtil; import mage.client.util.object.SaveObjectUtil;
import mage.interfaces.callback.CallbackClient; import mage.interfaces.callback.CallbackClient;
import mage.interfaces.callback.ClientCallback; import mage.interfaces.callback.ClientCallback;
import mage.utils.CompressUtil;
import mage.view.AbilityPickerView; import mage.view.AbilityPickerView;
import mage.view.ChatMessage; import mage.view.ChatMessage;
import mage.view.DraftClientMessage; import mage.view.DraftClientMessage;
@ -76,6 +77,7 @@ public class CallbackClientImpl implements CallbackClient {
@Override @Override
public void run() { public void run() {
SaveObjectUtil.saveObject(callback.getData(), callback.getMethod()); SaveObjectUtil.saveObject(callback.getData(), callback.getMethod());
callback.setData(CompressUtil.decompress(callback.getData()));
try { try {
logger.info(callback.getMessageId() + " -- " + callback.getMethod()); logger.info(callback.getMessageId() + " -- " + callback.getMethod());
if (callback.getMethod().equals("startGame")) { if (callback.getMethod().equals("startGame")) {

View file

@ -8,15 +8,39 @@ import java.io.ObjectOutputStream;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
/**
* Utility class to save an object on disk.
*
* @author ayrat
*/
public class SaveObjectUtil { public class SaveObjectUtil {
/**
* Defines should data be saved or not.
* Read from system property:
*/
private static boolean saveIncomeData = false; private static boolean saveIncomeData = false;
/**
* Defines the system property name to get {@link #saveIncomeData} value from.
*/
private static final String SAVE_DATA_PROPERTY = "saveObjects";
/**
* Date pattern used to form filename to save object to.
*/
private static final String DATE_PATTERN = "[yyyy_MM_dd][H-mm-ss]";
static { static {
saveIncomeData = System.getProperty("saveObjects") != null; saveIncomeData = System.getProperty(SAVE_DATA_PROPERTY) != null;
} }
/**
* Save object on disk.
*
* @param object Object to save.
* @param name Part of name that will be used to form original filename to save object to.
*/
public static void saveObject(Object object, String name) { public static void saveObject(Object object, String name) {
if (saveIncomeData) { if (saveIncomeData) {
ObjectOutputStream oos = null; ObjectOutputStream oos = null;
@ -28,7 +52,7 @@ public class SaveObjectUtil {
return; return;
} }
} }
String time = now("[yyyy_MM_dd][H-mm-ss]"); String time = now(DATE_PATTERN);
File f = new File("income" + File.separator + name + "_" + time + ".save"); File f = new File("income" + File.separator + name + "_" + time + ".save");
if (!f.exists()) { if (!f.exists()) {
f.createNewFile(); f.createNewFile();

View file

@ -30,6 +30,8 @@ package mage.interfaces.callback;
import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
import mage.utils.CompressUtil;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
/** /**
@ -85,7 +87,7 @@ public class CallbackServerSession {
waiting.await(); waiting.await();
} }
callback.setMethod(call.getMethod()); callback.setMethod(call.getMethod());
callback.setData(call.getData()); callback.setData(CompressUtil.compress(call.getData()));
callback.setObjectId(call.getObjectId()); callback.setObjectId(call.getObjectId());
callback.setMessageId(call.getMessageId()); callback.setMessageId(call.getMessageId());
callbackCalled.signal(); callbackCalled.signal();