diff --git a/.gitignore b/.gitignore
index 3024000..c683139 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,5 +6,7 @@
*.apk
+.fatjar
+bin/
-bin/
\ No newline at end of file
+classes/
\ No newline at end of file
diff --git a/cim_for_mina/2.0.0.VERSION b/cim_for_mina/2.1.0.VERSION
similarity index 100%
rename from cim_for_mina/2.0.0.VERSION
rename to cim_for_mina/2.1.0.VERSION
diff --git a/cim_for_mina/cim-android-sdk/.classpath b/cim_for_mina/cim-android-sdk/.classpath
index 709fbc8..9375b42 100644
--- a/cim_for_mina/cim-android-sdk/.classpath
+++ b/cim_for_mina/cim-android-sdk/.classpath
@@ -2,8 +2,7 @@
-
-
+
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMCacheToolkit.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMCacheToolkit.java
index 0fe4db9..290f014 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMCacheToolkit.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMCacheToolkit.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMConnectorManager.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMConnectorManager.java
index 82ed38c..800cf7e 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMConnectorManager.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMConnectorManager.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
@@ -40,7 +40,7 @@ import com.farsunset.cim.sdk.android.model.SentBody;
*
* @author 3979434@qq.com
*/
-class CIMConnectorManager {
+class CIMConnectorManager extends IoHandlerAdapter implements KeepAliveMessageFactory{
final static String TAG = CIMConnectorManager.class.getSimpleName();
private NioSocketConnector connector;
@@ -82,9 +82,9 @@ class CIMConnectorManager {
public final static String ACTION_CONNECTION_RECOVERY = "com.farsunset.cim.CONNECTION_RECOVERY";
private ExecutorService executor;
- private CIMConnectorManager(Context ctx) {
+ private CIMConnectorManager(Context ctx) {
context = ctx;
- executor = Executors.newFixedThreadPool(1);
+ executor = Executors.newCachedThreadPool();
connector = new NioSocketConnector();
connector.setConnectTimeoutMillis(10 * 1000);
@@ -93,10 +93,10 @@ class CIMConnectorManager {
connector.getSessionConfig().setReadBufferSize(2048);
connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new ClientMessageCodecFactory()));
- KeepAliveFilter keepAliveaHandler = new KeepAliveFilter(new ClientKeepAliveFactoryImpl(), IdleStatus.BOTH_IDLE);
+ KeepAliveFilter keepAliveaHandler = new KeepAliveFilter(this, IdleStatus.BOTH_IDLE);
keepAliveaHandler.setForwardEvent(true);
connector.getFilterChain().addLast("heartbeat", keepAliveaHandler);
- connector.setHandler(iohandler);
+ connector.setHandler(this);
@@ -252,98 +252,94 @@ class CIMConnectorManager {
return null;
}
- IoHandlerAdapter iohandler = new IoHandlerAdapter() {
+ @Override
+ public void sessionCreated(IoSession session) throws Exception {
- @Override
- public void sessionCreated(IoSession session) throws Exception {
+
+ Log.i(TAG, "******************CIM连接服务器成功:"+session.getLocalAddress());
+
+ setLastHeartbeatTime(session);
+
+ Intent intent = new Intent();
+ intent.setAction(ACTION_CONNECTION_SUCCESSED);
+ context.sendBroadcast(intent);
-
- Log.i(TAG, "******************CIM连接服务器成功:"+session.getLocalAddress());
-
- setLastHeartbeatTime(session);
-
- Intent intent = new Intent();
- intent.setAction(ACTION_CONNECTION_SUCCESSED);
- context.sendBroadcast(intent);
+ }
+ @Override
+ public void sessionOpened(IoSession session) throws Exception {
+ session.getConfig().setBothIdleTime(180);
+ }
+
+ @Override
+ public void sessionClosed(IoSession session) throws Exception {
+
+ Log.e(TAG, "******************CIM与服务器断开连接:"+session.getLocalAddress());
+
+ Intent intent = new Intent();
+ intent.setAction(ACTION_CONNECTION_CLOSED);
+ context.sendBroadcast(intent);
+
+ }
+
+ @Override
+ public void sessionIdle(IoSession session, IdleStatus status)throws Exception {
+ Log.d(TAG, "******************CIM与服务器连接空闲:"+session.getLocalAddress() + " isActive:" + session.isActive()+ " isConnected:" + session.isConnected());
+
+ /**
+ * 用于解决,wifi情况下。偶而路由器与服务器断开连接时,客户端并没及时收到关闭事件
+ * 导致这样的情况下当前连接无效也不会重连的问题
+ *
+ */
+ long lastHeartbeatTime = getLastHeartbeatTime(session);
+ if(System.currentTimeMillis() - lastHeartbeatTime >= HEARBEAT_TIME_OUT)
+ {
+ session.closeNow();
}
+ }
- @Override
- public void sessionOpened(IoSession session) throws Exception {
- session.getConfig().setBothIdleTime(180);
- }
+ @Override
+ public void exceptionCaught(IoSession session, Throwable cause)
+ throws Exception {
- @Override
- public void sessionClosed(IoSession session) throws Exception {
+ Intent intent = new Intent();
+ intent.setAction(ACTION_UNCAUGHT_EXCEPTION);
+ intent.putExtra("exception", cause);
+ context.sendBroadcast(intent);
+ }
- Log.e(TAG, "******************CIM与服务器断开连接:"+session.getLocalAddress());
-
- Intent intent = new Intent();
- intent.setAction(ACTION_CONNECTION_CLOSED);
- context.sendBroadcast(intent);
+ @Override
+ public void messageReceived(IoSession session, Object obj)
+ throws Exception {
- }
-
- @Override
- public void sessionIdle(IoSession session, IdleStatus status)throws Exception {
- Log.d(TAG, "******************CIM与服务器连接空闲:"+session.getLocalAddress() + " isActive:" + session.isActive()+ " isConnected:" + session.isConnected());
-
- /**
- * 用于解决,wifi情况下。偶而路由器与服务器断开连接时,客户端并没及时收到关闭事件
- * 导致这样的情况下当前连接无效也不会重连的问题
- *
- */
- long lastHeartbeatTime = getLastHeartbeatTime(session);
- if(System.currentTimeMillis() - lastHeartbeatTime >= HEARBEAT_TIME_OUT)
- {
- session.closeNow();
- }
- }
-
- @Override
- public void exceptionCaught(IoSession session, Throwable cause)
- throws Exception {
+ if (obj instanceof Message) {
Intent intent = new Intent();
- intent.setAction(ACTION_UNCAUGHT_EXCEPTION);
- intent.putExtra("exception", cause);
+ intent.setAction(ACTION_MESSAGE_RECEIVED);
+ intent.putExtra("message", (Message) obj);
+ context.sendBroadcast(intent);
+
+ }
+ if (obj instanceof ReplyBody) {
+
+
+ Intent intent = new Intent();
+ intent.setAction(ACTION_REPLY_RECEIVED);
+ intent.putExtra("replyBody", (ReplyBody) obj);
context.sendBroadcast(intent);
}
+ }
- @Override
- public void messageReceived(IoSession session, Object obj)
- throws Exception {
-
- if (obj instanceof Message) {
-
- Intent intent = new Intent();
- intent.setAction(ACTION_MESSAGE_RECEIVED);
- intent.putExtra("message", (Message) obj);
- context.sendBroadcast(intent);
-
- }
- if (obj instanceof ReplyBody) {
-
-
- Intent intent = new Intent();
- intent.setAction(ACTION_REPLY_RECEIVED);
- intent.putExtra("replyBody", (ReplyBody) obj);
- context.sendBroadcast(intent);
- }
+ @Override
+ public void messageSent(IoSession session, Object message) throws Exception {
+ if(message instanceof SentBody)
+ {
+ Intent intent = new Intent();
+ intent.setAction(ACTION_SENT_SUCCESSED);
+ intent.putExtra("sentBody", (SentBody) message);
+ context.sendBroadcast(intent);
}
-
- @Override
- public void messageSent(IoSession session, Object message) throws Exception {
- if(message instanceof SentBody)
- {
- Intent intent = new Intent();
- intent.setAction(ACTION_SENT_SUCCESSED);
- intent.putExtra("sentBody", (SentBody) message);
- context.sendBroadcast(intent);
- }
- }
- };
-
+ }
private void setLastHeartbeatTime(IoSession session)
{
@@ -370,30 +366,27 @@ class CIMConnectorManager {
return false;
}
- public class ClientKeepAliveFactoryImpl implements KeepAliveMessageFactory {
-
- @Override
- public Object getRequest(IoSession arg0) {
- return null;
- }
-
- @Override
- public Object getResponse(IoSession arg0, Object arg1) {
- return CIMConstant.CMD_HEARTBEAT_RESPONSE;
- }
-
- @Override
- public boolean isRequest(IoSession session, Object data) {
-
- setLastHeartbeatTime(session);
-
- return CIMConstant.CMD_HEARTBEAT_REQUEST.equalsIgnoreCase(data.toString());
- }
-
- @Override
- public boolean isResponse(IoSession arg0, Object arg1) {
- return false;
- }
-
+ @Override
+ public Object getRequest(IoSession arg0) {
+ return null;
}
+
+ @Override
+ public Object getResponse(IoSession arg0, Object arg1) {
+ return CIMConstant.CMD_HEARTBEAT_RESPONSE;
+ }
+
+ @Override
+ public boolean isRequest(IoSession session, Object data) {
+
+ setLastHeartbeatTime(session);
+
+ return CIMConstant.CMD_HEARTBEAT_REQUEST.equalsIgnoreCase(data.toString());
+ }
+
+ @Override
+ public boolean isResponse(IoSession arg0, Object arg1) {
+ return false;
+ }
+
}
\ No newline at end of file
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMEventBroadcastReceiver.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMEventBroadcastReceiver.java
index 6c02e5b..d95d0de 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMEventBroadcastReceiver.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMEventBroadcastReceiver.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMEventListener.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMEventListener.java
index 01f769e..18928e3 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMEventListener.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMEventListener.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMListenerManager.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMListenerManager.java
index 27eced5..1c9c845 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMListenerManager.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMListenerManager.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMPushManager.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMPushManager.java
index 295ecb0..c98c48f 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMPushManager.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMPushManager.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMPushService.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMPushService.java
index 1c80b3b..d52317d 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMPushService.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMPushService.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
@@ -11,6 +11,7 @@ import android.content.Intent;
import android.os.IBinder;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
+import android.util.Log;
import com.farsunset.cim.sdk.android.model.SentBody;
@@ -20,7 +21,7 @@ import com.farsunset.cim.sdk.android.model.SentBody;
*
*/
public class CIMPushService extends Service {
-
+ final static String TAG = CIMPushService.class.getSimpleName();
protected final static int DEF_CIM_PORT = 28888;
CIMConnectorManager manager;
WakeLock wakeLock;
@@ -67,12 +68,19 @@ import com.farsunset.cim.sdk.android.model.SentBody;
android.os.Process.killProcess(android.os.Process.myPid());
}
- if(CIMPushManager.ACTION_ACTIVATE_PUSH_SERVICE.equals(action) && !manager.isConnected())
+ if(CIMPushManager.ACTION_ACTIVATE_PUSH_SERVICE.equals(action) )
{
+ if(!manager.isConnected()){
+
+ boolean isManualStop = CIMCacheToolkit.getInstance(this).getBoolean(CIMCacheToolkit.KEY_MANUAL_STOP);
+ Log.i(TAG, "CIM.isConnected() == false, isManualStop == " + isManualStop);
+ CIMPushManager.connect(this);
+
+ }else
+ {
+ Log.i(TAG, "CIM.isConnected() == true");
+ }
- String host = CIMCacheToolkit.getInstance(this).getString(CIMCacheToolkit.KEY_CIM_SERVIER_HOST);
- int port =CIMCacheToolkit.getInstance(this).getInt( CIMCacheToolkit.KEY_CIM_SERVIER_PORT);
- manager.connect(host,port);
}
try{
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/constant/CIMConstant.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/constant/CIMConstant.java
index 8846777..c0a0438 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/constant/CIMConstant.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/constant/CIMConstant.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
@@ -52,8 +52,6 @@ public interface CIMConstant {
public static String CLIENT_BIND ="client_bind";
- public static String CLIENT_LOGOUT ="client_logout";
-
public static String CLIENT_OFFLINE_MESSAGE ="client_get_offline_message";
}
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/exception/CIMSessionDisableException.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/exception/CIMSessionDisableException.java
index 7fb83fe..eb3a005 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/exception/CIMSessionDisableException.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/exception/CIMSessionDisableException.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/exception/NetWorkDisableException.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/exception/NetWorkDisableException.java
index f35ed57..d549e9f 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/exception/NetWorkDisableException.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/exception/NetWorkDisableException.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/exception/WriteToClosedSessionException.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/exception/WriteToClosedSessionException.java
index d01c683..5c925a6 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/exception/WriteToClosedSessionException.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/exception/WriteToClosedSessionException.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/filter/ClientMessageCodecFactory.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/filter/ClientMessageCodecFactory.java
index dbfeba5..dd86e15 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/filter/ClientMessageCodecFactory.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/filter/ClientMessageCodecFactory.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/filter/ClientMessageDecoder.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/filter/ClientMessageDecoder.java
index 54be3a0..dbff0d8 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/filter/ClientMessageDecoder.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/filter/ClientMessageDecoder.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
@@ -31,13 +31,14 @@ public class ClientMessageDecoder extends CumulativeProtocolDecoder {
final static String TAG = ClientMessageDecoder.class.getSimpleName();
- private IoBuffer buff = IoBuffer.allocate(320).setAutoExpand(true);
@Override
- public boolean doDecode(IoSession iosession, IoBuffer iobuffer,
- ProtocolDecoderOutput out) throws Exception {
+ public boolean doDecode(IoSession iosession, IoBuffer iobuffer,ProtocolDecoderOutput out) throws Exception {
+
boolean complete = false;
-
+ IoBuffer tBuffer = IoBuffer.allocate(320).setAutoExpand(true);
+ iobuffer.mark();
+
while (iobuffer.hasRemaining()) {
byte b = iobuffer.get();
/**
@@ -49,16 +50,16 @@ public class ClientMessageDecoder extends CumulativeProtocolDecoder {
complete = true;
break;
} else {
- buff.put(b);
+ tBuffer.put(b);
}
}
if (complete) {
- buff.flip();
- byte[] bytes = new byte[buff.limit()];
- buff.get(bytes);
+ tBuffer.flip();
+ byte[] bytes = new byte[tBuffer.limit()];
+ tBuffer.get(bytes);
String message = new String(bytes, CIMConstant.UTF8);
- buff.clear();
+ tBuffer.clear();
try
{
@@ -68,6 +69,9 @@ public class ClientMessageDecoder extends CumulativeProtocolDecoder {
{
e.printStackTrace();
}
+ }else
+ {
+ iobuffer.reset();//如果消息没有接收完整,对buffer进行重置,下次继续读取
}
return complete;
@@ -96,7 +100,7 @@ public class ClientMessageDecoder extends CumulativeProtocolDecoder {
NodeList items = doc.getElementsByTagName("data").item(0).getChildNodes();
for (int i = 0; i < items.getLength(); i++) {
Node node = items.item(i);
- reply.getData().put(node.getNodeName(), node.getTextContent());
+ reply.put(node.getNodeName(), node.getTextContent());
}
return reply;
}
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/filter/ClientMessageEncoder.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/filter/ClientMessageEncoder.java
index 4ec4953..d4c1acc 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/filter/ClientMessageEncoder.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/filter/ClientMessageEncoder.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/model/Message.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/model/Message.java
index ce19251..e59786b 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/model/Message.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/model/Message.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/model/ReplyBody.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/model/ReplyBody.java
index 4497506..9fa706e 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/model/ReplyBody.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/model/ReplyBody.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/model/SentBody.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/model/SentBody.java
index c0f1508..61951f9 100644
--- a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/model/SentBody.java
+++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/sdk/android/model/SentBody.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/sdk/server/filter/ServerMessageDecoder.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/sdk/server/filter/ServerMessageDecoder.java
index 5621a39..e09cc7c 100644
--- a/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/sdk/server/filter/ServerMessageDecoder.java
+++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/sdk/server/filter/ServerMessageDecoder.java
@@ -28,10 +28,14 @@ import com.farsunset.cim.sdk.server.model.SentBody;
public class ServerMessageDecoder extends CumulativeProtocolDecoder {
protected final Logger logger = Logger.getLogger(ServerMessageDecoder.class);
- private IoBuffer buff = IoBuffer.allocate(320).setAutoExpand(true);
@Override
public boolean doDecode(IoSession iosession, IoBuffer iobuffer, ProtocolDecoderOutput out) throws Exception {
+
boolean complete = false;
+ IoBuffer tBuffer = IoBuffer.allocate(320).setAutoExpand(true);
+
+ iobuffer.mark();
+
while (iobuffer.hasRemaining()) {
byte b = iobuffer.get();
/**
@@ -48,19 +52,19 @@ public class ServerMessageDecoder extends CumulativeProtocolDecoder {
break;
}
else {
- buff.put(b);
+ tBuffer.put(b);
}
}
if (complete) {
- buff.flip();
- byte[] bytes = new byte[buff.limit()];
- buff.get(bytes);
+ tBuffer.flip();
+ byte[] bytes = new byte[tBuffer.limit()];
+ tBuffer.get(bytes);
String message = new String(bytes, CIMConstant.UTF8);
logger.debug(message);
- buff.clear();
+ tBuffer.clear();
try{
Object body = getSentBody(message);
@@ -70,6 +74,9 @@ public class ServerMessageDecoder extends CumulativeProtocolDecoder {
e.printStackTrace();
logger.warn(e.getMessage());
}
+ }else
+ {
+ iobuffer.reset();//如果消息没有接收完整,对buffer进行重置,下次继续读取
}
return complete;
}
diff --git a/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/sdk/server/handler/CIMIoHandler.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/sdk/server/handler/CIMIoHandler.java
index a0e6588..7e58e49 100644
--- a/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/sdk/server/handler/CIMIoHandler.java
+++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/sdk/server/handler/CIMIoHandler.java
@@ -81,20 +81,10 @@ public class CIMIoHandler extends IoHandlerAdapter {
/**
*/
public void sessionClosed(IoSession ios) throws Exception {
-
+ logger.warn(ios.getRemoteAddress());
CIMSession cimSession =new CIMSession(ios);
- try{
- logger.warn("sessionClosed()... from "+cimSession.getRemoteAddress());
- CIMRequestHandler handler = handlers.get(CIMSESSION_CLOSED_HANDLER_KEY);
- if(handler!=null && cimSession.containsAttribute(CIMConstant.SESSION_KEY))
- {
- handler.process(cimSession, null);
- }
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
+ CIMRequestHandler handler = handlers.get(CIMSESSION_CLOSED_HANDLER_KEY);
+ handler.process(cimSession, null);
}
/**
diff --git a/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/sdk/server/model/Message.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/sdk/server/model/Message.java
index c0d0108..a777a5e 100644
--- a/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/sdk/server/model/Message.java
+++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/sdk/server/model/Message.java
@@ -1,6 +1,6 @@
/**
* probject:cim-server-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_mina/cim-server/.classpath b/cim_for_mina/cim-server/.classpath
index a323a94..84a952b 100644
--- a/cim_for_mina/cim-server/.classpath
+++ b/cim_for_mina/cim-server/.classpath
@@ -6,7 +6,6 @@
-
@@ -20,6 +19,7 @@
+
@@ -30,6 +30,7 @@
+
@@ -37,6 +38,5 @@
-
diff --git a/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/cim-server-sdk-2.1.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/cim-server-sdk-2.1.jar
new file mode 100644
index 0000000..7464718
Binary files /dev/null and b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/cim-server-sdk-2.1.jar differ
diff --git a/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/LogoutHandler.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/LogoutHandler.java
deleted file mode 100644
index 58db228..0000000
--- a/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/LogoutHandler.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * probject:cim
- * @version 2.0
- *
- * @author 3979434@qq.com
- */
-package com.farsunset.cim.handler;
-
-import com.farsunset.cim.sdk.server.constant.CIMConstant;
-import com.farsunset.cim.sdk.server.handler.CIMRequestHandler;
-import com.farsunset.cim.sdk.server.model.ReplyBody;
-import com.farsunset.cim.sdk.server.model.SentBody;
-import com.farsunset.cim.sdk.server.session.CIMSession;
-import com.farsunset.cim.sdk.server.session.DefaultSessionManager;
-import com.farsunset.cim.util.ContextHolder;
-
-
-/**
- * 退出连接实现
- */
-public class LogoutHandler implements CIMRequestHandler {
-
- public ReplyBody process(CIMSession ios, SentBody message) {
-
-
- DefaultSessionManager sessionManager = ((DefaultSessionManager) ContextHolder.getBean("CIMSessionManager"));
-
- String account =ios.getAttribute(CIMConstant.SESSION_KEY).toString();
- ios.removeAttribute(CIMConstant.SESSION_KEY);
- ios.closeNow();
- sessionManager.remove(account);
-
- return null;
- }
-
-
-}
\ No newline at end of file
diff --git a/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/SessionClosedHandler.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/SessionClosedHandler.java
index e0a80db..bb4c67d 100644
--- a/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/SessionClosedHandler.java
+++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/SessionClosedHandler.java
@@ -26,15 +26,12 @@ public class SessionClosedHandler implements CIMRequestHandler {
public ReplyBody process(CIMSession ios, SentBody message) {
- DefaultSessionManager sessionManager = ((DefaultSessionManager) ContextHolder.getBean("CIMSessionManager"));
-
- if(ios.getAttribute(CIMConstant.SESSION_KEY)==null)
- {
- return null;
- }
+ DefaultSessionManager sessionManager = ((DefaultSessionManager) ContextHolder.getBean("CIMSessionManager"));
- String account = ios.getAttribute(CIMConstant.SESSION_KEY).toString();
- sessionManager.remove(account);
+ String account =ios.getAttribute(CIMConstant.SESSION_KEY).toString();
+ ios.removeAttribute(CIMConstant.SESSION_KEY);
+ ios.closeNow();
+ sessionManager.remove(account);
return null;
}
diff --git a/cim_for_mina/cim-server/src/main/resource/log4j.properties b/cim_for_mina/cim-server/src/main/resource/log4j.properties
index b0572a1..b883399 100644
--- a/cim_for_mina/cim-server/src/main/resource/log4j.properties
+++ b/cim_for_mina/cim-server/src/main/resource/log4j.properties
@@ -1,13 +1,13 @@
-log4j.rootLogger=debug,console, file
+log4j.rootLogger=info,console, file
#----------console----------------
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.Target=System.out
-log4j.appender.console.layout.ConversionPattern=%C %p %d{yyyy-MM-dd HH:mm:ss}%n%m%n--------------------------------------------------------------------------------------------------------------------------%n
+log4j.appender.console.layout.ConversionPattern=%C.%M() %p %d{yyyy-MM-dd HH:mm:ss}%n%m%n--------------------------------------------------------------------------------------------------------------------------%n
#----------file----------------
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=cim.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%C %p %d{yyyy-MM-dd HH\:mm\:ss} - %m%n
+log4j.appender.file.layout.ConversionPattern=%C.%M() %p %d{yyyy-MM-dd HH:mm:ss}%n%m%n--------------------------------------------------------------------------------------------------------------------------%n
diff --git a/cim_for_mina/cim-server/src/main/resource/spring-cim.xml b/cim_for_mina/cim-server/src/main/resource/spring-cim.xml
index e2ab23f..2eedc80 100644
--- a/cim_for_mina/cim-server/src/main/resource/spring-cim.xml
+++ b/cim_for_mina/cim-server/src/main/resource/spring-cim.xml
@@ -21,9 +21,7 @@
-
-
-
+
diff --git a/cim_for_mina/client-mchat-android/.classpath b/cim_for_mina/client-mchat-android/.classpath
index 5176974..9c49fa5 100644
--- a/cim_for_mina/client-mchat-android/.classpath
+++ b/cim_for_mina/client-mchat-android/.classpath
@@ -1,9 +1,12 @@
-
-
+
+
+
+
+
diff --git a/cim_for_mina/client-mchat-android/AndroidManifest.xml b/cim_for_mina/client-mchat-android/AndroidManifest.xml
index fafbada..2ed9424 100644
--- a/cim_for_mina/client-mchat-android/AndroidManifest.xml
+++ b/cim_for_mina/client-mchat-android/AndroidManifest.xml
@@ -1,8 +1,8 @@
+ android:versionCode="3"
+ android:versionName="2.1.0" >
diff --git a/cim_for_mina/client-mchat-android/libs/cim-android-sdk-2.0.jar b/cim_for_mina/client-mchat-android/libs/cim-android-sdk-2.0.jar
deleted file mode 100644
index 87458be..0000000
Binary files a/cim_for_mina/client-mchat-android/libs/cim-android-sdk-2.0.jar and /dev/null differ
diff --git a/cim_for_mina/client-mchat-android/libs/cim-android-sdk-2.1.jar b/cim_for_mina/client-mchat-android/libs/cim-android-sdk-2.1.jar
new file mode 100644
index 0000000..e4b8470
Binary files /dev/null and b/cim_for_mina/client-mchat-android/libs/cim-android-sdk-2.1.jar differ
diff --git a/cim_for_mina/client-mchat-android/libs/mina-core-2.0.13.jar b/cim_for_mina/client-mchat-android/libs/mina-core-2.0.13.jar
new file mode 100644
index 0000000..557f190
Binary files /dev/null and b/cim_for_mina/client-mchat-android/libs/mina-core-2.0.13.jar differ
diff --git a/cim_for_mina/client-mchat-android/libs/slf4j-api-1.7.5.jar b/cim_for_mina/client-mchat-android/libs/slf4j-api-1.7.5.jar
new file mode 100644
index 0000000..8766455
Binary files /dev/null and b/cim_for_mina/client-mchat-android/libs/slf4j-api-1.7.5.jar differ
diff --git a/cim_for_mina/client-mchat-android/libs/slf4j-nop-1.7.5.jar b/cim_for_mina/client-mchat-android/libs/slf4j-nop-1.7.5.jar
new file mode 100644
index 0000000..e55bdd8
Binary files /dev/null and b/cim_for_mina/client-mchat-android/libs/slf4j-nop-1.7.5.jar differ
diff --git a/cim_for_mina/client-mchat-android/proguard.cfg b/cim_for_mina/client-mchat-android/proguard.cfg
index 6609a47..22a2de2 100644
--- a/cim_for_mina/client-mchat-android/proguard.cfg
+++ b/cim_for_mina/client-mchat-android/proguard.cfg
@@ -6,29 +6,14 @@
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-dontwarn
--keep public class com.adview.** {*;}
--keeppackagenames com.madhouse.android.ads
--keepclassmembers class * {public *;}
--keep public class com.wqmobile.sdk.** {*;}
--keep public class * {public *;}
--keep public class com.adwo.adsdk.AdwoAdBrowserActivity
--keep public class com.wooboo.** {*;}
--keep public class cn.aduu.adsdk.**{*;}
--keep class net.youmi.android.** {*;}
+-keep public class org.apache.mina.** {*;}
+-keep public class com.farsunset.cim.sdk.android.model.** {*;}
+
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
--keep public class com.android.vending.licensing.ILicensingService
--keep public class MobWin.*
--keep public class MobWin.cnst.*
--keep class com.tencent.lbsapi.*
--keep class com.tencent.lbsapi.core.*
--keep class LBSAPIProtocol.*
--keep class com.tencent.lbsapi.core.QLBSJNI {
-*;
-}
-keepclasseswithmembernames class * {
native ;
}
diff --git a/cim_for_mina/client-mchat-android/project.properties b/cim_for_mina/client-mchat-android/project.properties
index a5578ba..358ce4a 100644
--- a/cim_for_mina/client-mchat-android/project.properties
+++ b/cim_for_mina/client-mchat-android/project.properties
@@ -8,4 +8,4 @@
# project structure.
# Project target.
-target=android-19
+target=android-22
diff --git a/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/app/Constant.java b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/app/Constant.java
index 921b44e..75e0c14 100644
--- a/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/app/Constant.java
+++ b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/app/Constant.java
@@ -9,7 +9,7 @@ package com.farsunset.ichat.example.app;
public interface Constant {
//服务端IP地址
- public static final String CIM_SERVER_HOST = "192.168.2.2";
+ public static final String CIM_SERVER_HOST = "192.168.191.1";
//服务端web地址
public static final String SERVER_URL = "http://"+CIM_SERVER_HOST+":8080/cim-server";
diff --git a/cim_for_netty/2.0.0.VERSION b/cim_for_netty/2.1.0.VERSION
similarity index 100%
rename from cim_for_netty/2.0.0.VERSION
rename to cim_for_netty/2.1.0.VERSION
diff --git a/cim_for_netty/cim-android-sdk/.classpath b/cim_for_netty/cim-android-sdk/.classpath
index 24c8e68..6f7dcf0 100644
--- a/cim_for_netty/cim-android-sdk/.classpath
+++ b/cim_for_netty/cim-android-sdk/.classpath
@@ -2,11 +2,11 @@
-
+
diff --git a/cim_for_netty/cim-android-sdk/cim-android-sdk-2.1.jar b/cim_for_netty/cim-android-sdk/cim-android-sdk-2.1.jar
new file mode 100644
index 0000000..ecb7452
Binary files /dev/null and b/cim_for_netty/cim-android-sdk/cim-android-sdk-2.1.jar differ
diff --git a/cim_for_netty/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMCacheToolkit.java b/cim_for_netty/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMCacheToolkit.java
index b4c62de..a932a33 100644
--- a/cim_for_netty/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMCacheToolkit.java
+++ b/cim_for_netty/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMCacheToolkit.java
@@ -1,6 +1,6 @@
/**
* probject:cim-android-sdk
- * @version 2.0.0
+ * @version 2.1.0
*
* @author 3979434@qq.com
*/
diff --git a/cim_for_netty/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMConnectorManager.java b/cim_for_netty/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMConnectorManager.java
index a3cc71c..0c44707 100644
--- a/cim_for_netty/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMConnectorManager.java
+++ b/cim_for_netty/cim-android-sdk/src/com/farsunset/cim/sdk/android/CIMConnectorManager.java
@@ -94,7 +94,7 @@ class CIMConnectorManager extends SimpleChannelInboundHandler