merge
This commit is contained in:
@@ -2,8 +2,8 @@ package com.mogo.telematic;
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.nsd.NsdServiceInfo;
|
||||
import android.util.Log;
|
||||
|
||||
import com.elegant.log.simplelog.Logger;
|
||||
import com.mogo.telematic.client.NettyTcpClient;
|
||||
import com.mogo.telematic.client.NsdClient;
|
||||
import com.mogo.telematic.client.listener.MessageStateListener;
|
||||
@@ -43,7 +43,7 @@ public class NSDNettyManager {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
private NettyServerListener mDefaultServerListener = new NettyServerListener() {
|
||||
private final NettyServerListener mDefaultServerListener = new NettyServerListener() {
|
||||
|
||||
@Override
|
||||
public void onMessageResponseServer(Object msg, Channel channel) {
|
||||
@@ -129,7 +129,7 @@ public class NSDNettyManager {
|
||||
/**
|
||||
* 服务器端注册一个可供NSD探测到的网络 Ip 地址,便于给展示叫号机连接此socket
|
||||
*/
|
||||
private Runnable mNsdServerRunnable = new Runnable() {
|
||||
private final Runnable mNsdServerRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (mNsdServer == null) {
|
||||
@@ -140,7 +140,7 @@ public class NSDNettyManager {
|
||||
mNsdServer.setRegisterState(new NSDServer.IRegisterState() {
|
||||
@Override
|
||||
public void onServiceRegistered(NsdServiceInfo serviceInfo) {
|
||||
Log.i(TAG, "已注册服务onServiceRegistered: " + serviceInfo.toString());
|
||||
Logger.i(TAG, "已注册服务onServiceRegistered: " + serviceInfo.toString());
|
||||
//已经注册可停止该服务
|
||||
// nsdServer.stopNSDServer();
|
||||
}
|
||||
@@ -188,7 +188,7 @@ public class NSDNettyManager {
|
||||
public void onServerFound(NsdServiceInfo info, int port) {
|
||||
if (info != null) {
|
||||
String hostAddress = info.getHost().getHostAddress();
|
||||
Log.d(TAG, "NSD查询到指定服务器信息ip为:" + hostAddress + ",port为:" + port);
|
||||
Logger.d(TAG, "NSD查询到指定服务器信息ip为:" + hostAddress + ",port为:" + port);
|
||||
//获取到指定的地址,进行Netty的连接
|
||||
connectNettyServer(hostAddress, port, uuid, listener);
|
||||
|
||||
@@ -209,9 +209,9 @@ public class NSDNettyManager {
|
||||
}
|
||||
|
||||
private void connectNettyServer(String serverAddress, int port, String sign, NettyClientListener listener) {
|
||||
Log.d(TAG, "connectNettyServer");
|
||||
Logger.d(TAG, "connectNettyServer");
|
||||
if (serverAddress == null || serverAddress.length() == 0) {
|
||||
Log.e(TAG, "Netty Server的ip不能为空!");
|
||||
Logger.e(TAG, "Netty Server的ip不能为空!");
|
||||
return;
|
||||
}
|
||||
if (mNettyTcpClient == null) {
|
||||
|
||||
@@ -5,7 +5,8 @@ import android.net.nsd.NsdManager;
|
||||
import android.net.nsd.NsdServiceInfo;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.util.Log;
|
||||
|
||||
import com.elegant.log.simplelog.Logger;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.ArrayList;
|
||||
@@ -22,19 +23,19 @@ public class NsdClient {
|
||||
|
||||
private NsdManager.DiscoveryListener mDiscoveryListener;
|
||||
private NsdManager mNsdManager;
|
||||
private Context mContext;
|
||||
private String mServiceName;
|
||||
private IServerFound mIServerFound;
|
||||
private final Context mContext;
|
||||
private final String mServiceName;
|
||||
private final IServerFound mIServerFound;
|
||||
|
||||
/**
|
||||
* 用来存储解析后的网络对象列表,包含完整数据
|
||||
*/
|
||||
private ArrayList<NsdServiceInfo> mNsdServiceInfoList = new ArrayList<>();
|
||||
private final ArrayList<NsdServiceInfo> mNsdServiceInfoList = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* 未解析前搜索到的
|
||||
*/
|
||||
private ArrayList<NsdServiceInfo> mNsdServiceInfoListBefore = new ArrayList<>();
|
||||
private final ArrayList<NsdServiceInfo> mNsdServiceInfoListBefore = new ArrayList<>();
|
||||
|
||||
|
||||
private static final int MSG_RESOLVER = 1002;
|
||||
@@ -67,23 +68,23 @@ public class NsdClient {
|
||||
@Override
|
||||
public void onStartDiscoveryFailed(String serviceType, int errorCode) {
|
||||
mNsdManager.stopServiceDiscovery(this);
|
||||
Log.e(TAG, "onStartDiscoveryFailed()");
|
||||
Logger.e(TAG, "onStartDiscoveryFailed()");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStopDiscoveryFailed(String serviceType, int errorCode) {
|
||||
mNsdManager.stopServiceDiscovery(this);
|
||||
Log.e(TAG, "onStopDiscoveryFailed()");
|
||||
Logger.e(TAG, "onStopDiscoveryFailed()");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDiscoveryStarted(String serviceType) {
|
||||
Log.e(TAG, "onDiscoveryStarted()");
|
||||
Logger.e(TAG, "onDiscoveryStarted()");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDiscoveryStopped(String serviceType) {
|
||||
Log.e(TAG, "onDiscoveryStopped()");
|
||||
Logger.e(TAG, "onDiscoveryStopped()");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -92,7 +93,7 @@ public class NsdClient {
|
||||
*/
|
||||
@Override
|
||||
public void onServiceFound(NsdServiceInfo serviceInfo) {
|
||||
Log.e(TAG, "onServiceFound()");
|
||||
Logger.e(TAG, "onServiceFound()");
|
||||
//根据咱服务器的定义名称,指定解析该 NsdServiceInfo
|
||||
if (serviceInfo.getServiceName().equals(mServiceName)) {
|
||||
mNsdManager.resolveService(serviceInfo, getResolveListener());
|
||||
@@ -104,12 +105,12 @@ public class NsdClient {
|
||||
|
||||
@Override
|
||||
public void onServiceLost(NsdServiceInfo serviceInfo) {
|
||||
Log.e(TAG, "onServiceLost(): serviceInfo=" + serviceInfo);
|
||||
Logger.e(TAG, "onServiceLost(): serviceInfo=" + serviceInfo);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private Handler mHandler = new Handler() {
|
||||
private final Handler mHandler = new Handler() {
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
super.handleMessage(msg);
|
||||
@@ -120,7 +121,7 @@ public class NsdClient {
|
||||
if (mIServerFound != null) {
|
||||
mIServerFound.onServerFound(serviceInfo, serviceInfo.getPort());
|
||||
}
|
||||
Log.e(TAG, " 指定onServiceFound(" + mServiceName + "): Service Info: --> " + serviceInfo);
|
||||
Logger.e(TAG, " 指定onServiceFound(" + mServiceName + "): Service Info: --> " + serviceInfo);
|
||||
|
||||
break;
|
||||
case MSG_NULL:
|
||||
@@ -140,7 +141,7 @@ public class NsdClient {
|
||||
return new NsdManager.ResolveListener() {
|
||||
@Override
|
||||
public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
|
||||
Log.e(TAG, "onResolveFailed()");
|
||||
Logger.e(TAG, "onResolveFailed()");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -149,7 +150,7 @@ public class NsdClient {
|
||||
InetAddress host = serviceInfo.getHost();
|
||||
String serviceName = serviceInfo.getServiceName();
|
||||
String hostAddress = serviceInfo.getHost().getHostAddress();
|
||||
Log.i(TAG, "onServiceResolved 已解析:" + " host:" + hostAddress + ":" + port + " ----- serviceName: " + serviceName);
|
||||
Logger.i(TAG, "onServiceResolved 已解析:" + " host:" + hostAddress + ":" + port + " ----- serviceName: " + serviceName);
|
||||
|
||||
mNsdServiceInfoList.add(serviceInfo);
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.mogo.telematic.client.handler;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.elegant.log.simplelog.Logger;
|
||||
import com.mogo.telematic.MogoProtocolMsg;
|
||||
import com.mogo.telematic.client.NettyTcpClient;
|
||||
import com.mogo.telematic.client.listener.NettyClientListener;
|
||||
@@ -15,15 +14,15 @@ import io.netty.handler.timeout.IdleStateEvent;
|
||||
public class NettyClientHandler extends SimpleChannelInboundHandler<MogoProtocolMsg> {
|
||||
|
||||
private static final String TAG = "NettyClientHandler";
|
||||
private final boolean isSendheartBeat;
|
||||
private final boolean isSendHeartBeat;
|
||||
private NettyClientListener listener;
|
||||
private String mSign;
|
||||
private Object heartBeatData;
|
||||
private final String mSign;
|
||||
private final Object heartBeatData;
|
||||
|
||||
public NettyClientHandler(NettyClientListener listener, String sign, boolean isSendheartBeat, Object heartBeatData) {
|
||||
public NettyClientHandler(NettyClientListener listener, String sign, boolean isSendHeartBeat, Object heartBeatData) {
|
||||
this.listener = listener;
|
||||
this.mSign = sign;
|
||||
this.isSendheartBeat = isSendheartBeat;
|
||||
this.isSendHeartBeat = isSendHeartBeat;
|
||||
this.heartBeatData = heartBeatData;
|
||||
}
|
||||
|
||||
@@ -51,17 +50,17 @@ public class NettyClientHandler extends SimpleChannelInboundHandler<MogoProtocol
|
||||
}
|
||||
|
||||
private void sendHeartbeat(ChannelHandlerContext ctx) {
|
||||
if (isSendheartBeat) {
|
||||
if (isSendHeartBeat) {
|
||||
if (heartBeatData == null) {
|
||||
MogoProtocolMsg heartData = new MogoProtocolMsg(MogoProtocolMsg.NORMAL_DATA, 2, new byte[]{0x00, 0x00});
|
||||
ctx.channel().writeAndFlush(heartData);
|
||||
} else if (heartBeatData instanceof MogoProtocolMsg) {
|
||||
ctx.channel().writeAndFlush(heartBeatData);
|
||||
} else {
|
||||
Log.e(TAG, "userEventTriggered: heartBeatData type error");
|
||||
Logger.e(TAG, "userEventTriggered: heartBeatData type error");
|
||||
}
|
||||
} else {
|
||||
Log.d(TAG, "不发送心跳");
|
||||
Logger.d(TAG, "不发送心跳");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,7 +71,7 @@ public class NettyClientHandler extends SimpleChannelInboundHandler<MogoProtocol
|
||||
*/
|
||||
@Override
|
||||
public void channelActive(ChannelHandlerContext ctx) {
|
||||
Log.e(TAG, "channelActive");
|
||||
Logger.e(TAG, "channelActive");
|
||||
listener.onClientStatusConnectChanged(ConnectState.STATUS_CONNECT_SUCCESS, mSign);
|
||||
}
|
||||
|
||||
@@ -83,7 +82,7 @@ public class NettyClientHandler extends SimpleChannelInboundHandler<MogoProtocol
|
||||
*/
|
||||
@Override
|
||||
public void channelInactive(ChannelHandlerContext ctx) {
|
||||
Log.e(TAG, "channelInactive");
|
||||
Logger.e(TAG, "channelInactive");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -94,7 +93,7 @@ public class NettyClientHandler extends SimpleChannelInboundHandler<MogoProtocol
|
||||
*/
|
||||
@Override
|
||||
protected void channelRead0(ChannelHandlerContext ctx, MogoProtocolMsg msg) throws Exception {
|
||||
Log.d(TAG, "Client channelRead0:" + msg.toString());
|
||||
Logger.d(TAG, "Client channelRead0:" + msg.toString());
|
||||
if (msg.getProtocolType() == MogoProtocolMsg.IDENTITY_REGIST) {
|
||||
String sn = new String(msg.getBody());
|
||||
NettyTcpClient.sSERVER_SN = sn;
|
||||
@@ -111,7 +110,7 @@ public class NettyClientHandler extends SimpleChannelInboundHandler<MogoProtocol
|
||||
*/
|
||||
@Override
|
||||
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
|
||||
Log.e(TAG, "exceptionCaught");
|
||||
Logger.e(TAG, "exceptionCaught");
|
||||
listener.onClientStatusConnectChanged(ConnectState.STATUS_CONNECT_ERROR, mSign);
|
||||
cause.printStackTrace();
|
||||
ctx.close();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.mogo.telematic.client.handler
|
||||
|
||||
import android.util.Log
|
||||
import com.elegant.log.simplelog.Logger
|
||||
import com.mogo.telematic.client.NettyTcpClient
|
||||
import io.netty.channel.ChannelInboundHandlerAdapter
|
||||
import io.netty.channel.ChannelHandlerContext
|
||||
@@ -32,13 +32,13 @@ class ReconnectHandler(private val mNettyClient: NettyTcpClient) : ChannelInboun
|
||||
|
||||
@Throws(Exception::class)
|
||||
override fun exceptionCaught(ctx: ChannelHandlerContext, cause: Throwable) {
|
||||
Log.e(TAG, "exceptionCaught channelId is:${ctx.channel().id()}, cause message is:${cause.message}")
|
||||
Logger.e(TAG, "exceptionCaught channelId is:${ctx.channel().id()}, cause message is:${cause.message}")
|
||||
ctx.close()
|
||||
}
|
||||
|
||||
@Throws(Exception::class)
|
||||
override fun channelInactive(ctx: ChannelHandlerContext) {
|
||||
Log.d(TAG, "ReconnectHandler channelInactive ...")
|
||||
Logger.d(TAG, "ReconnectHandler channelInactive ...")
|
||||
// TODO:(策略暂时耦合在这里,后面使用策略模式)
|
||||
var allowRetry = false
|
||||
if (retries < maxRetries) {
|
||||
@@ -54,15 +54,15 @@ class ReconnectHandler(private val mNettyClient: NettyTcpClient) : ChannelInboun
|
||||
if (sleepTimeMs > maxSleepMs) {
|
||||
sleepTimeMs = maxSleepMs.toLong()
|
||||
}
|
||||
Log.d(TAG, "${sleepTimeMs}ms后执行重连操作!")
|
||||
Logger.d(TAG, "${sleepTimeMs}ms后执行重连操作!")
|
||||
scheduledThreadPool.schedule({
|
||||
Log.d(TAG, "Reconnecting server ...")
|
||||
Logger.d(TAG, "Reconnecting server ...")
|
||||
// 异步重连或单独线程池中同步重连,不要阻塞netty的io线程,同时也不要关闭EventLoopGroup
|
||||
mNettyClient.reconnectServer()
|
||||
}, sleepTimeMs, TimeUnit.MILLISECONDS)
|
||||
++retries
|
||||
} else {
|
||||
Log.d(TAG, "Try to reconnect to the server Over Retry count:${retries + 1}")
|
||||
Logger.d(TAG, "Try to reconnect to the server Over Retry count:${retries + 1}")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,8 @@ package com.mogo.telematic.server;
|
||||
import android.content.Context;
|
||||
import android.net.nsd.NsdManager;
|
||||
import android.net.nsd.NsdServiceInfo;
|
||||
import android.util.Log;
|
||||
|
||||
import com.elegant.log.simplelog.Logger;
|
||||
|
||||
public class NSDServer {
|
||||
public static final String TAG = "NSDServer";
|
||||
@@ -25,7 +26,7 @@ public class NSDServer {
|
||||
mRegistrationListener = new NsdManager.RegistrationListener() {
|
||||
@Override
|
||||
public void onRegistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
|
||||
Log.e(TAG, "NsdServiceInfo onRegistrationFailed");
|
||||
Logger.e(TAG, "NsdServiceInfo onRegistrationFailed");
|
||||
if (registerState != null) {
|
||||
registerState.onRegistrationFailed(serviceInfo, errorCode);
|
||||
}
|
||||
@@ -33,7 +34,7 @@ public class NSDServer {
|
||||
|
||||
@Override
|
||||
public void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
|
||||
Log.i(TAG, "onUnregistrationFailed serviceInfo: " + serviceInfo + " ,errorCode:" + errorCode);
|
||||
Logger.i(TAG, "onUnregistrationFailed serviceInfo: " + serviceInfo + " ,errorCode:" + errorCode);
|
||||
if (registerState != null) {
|
||||
registerState.onUnRegistrationFailed(serviceInfo, errorCode);
|
||||
}
|
||||
@@ -42,8 +43,8 @@ public class NSDServer {
|
||||
@Override
|
||||
public void onServiceRegistered(NsdServiceInfo serviceInfo) {
|
||||
mServerName = serviceInfo.getServiceName();
|
||||
Log.i(TAG, "onServiceRegistered: " + serviceInfo.toString());
|
||||
Log.i(TAG, "mServerName onServiceRegistered: " + mServerName);
|
||||
Logger.i(TAG, "onServiceRegistered: " + serviceInfo.toString());
|
||||
Logger.i(TAG, "mServerName onServiceRegistered: " + mServerName);
|
||||
if (registerState != null) {
|
||||
registerState.onServiceRegistered(serviceInfo);
|
||||
}
|
||||
@@ -51,7 +52,7 @@ public class NSDServer {
|
||||
|
||||
@Override
|
||||
public void onServiceUnregistered(NsdServiceInfo serviceInfo) {
|
||||
Log.i(TAG, "onServiceUnregistered serviceInfo: " + serviceInfo);
|
||||
Logger.i(TAG, "onServiceUnregistered serviceInfo: " + serviceInfo);
|
||||
if (registerState != null) {
|
||||
registerState.onServiceUnregistered(serviceInfo);
|
||||
}
|
||||
|
||||
@@ -3,8 +3,7 @@ package com.mogo.telematic.server.netty;
|
||||
import static com.mogo.telematic.MogoProtocolMsg.IDENTITY_REGIST;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.elegant.log.simplelog.Logger;
|
||||
import com.mogo.telematic.MogoProtocolMsg;
|
||||
|
||||
import io.netty.channel.ChannelHandler;
|
||||
@@ -32,8 +31,8 @@ public class MogoProtocolServerHandler extends SimpleChannelInboundHandler<MogoP
|
||||
|
||||
@Override
|
||||
protected void channelRead0(ChannelHandlerContext ctx, MogoProtocolMsg msg) throws Exception {
|
||||
Log.d(TAG, "server$channelRead0():" + msg.toString());
|
||||
if (msg.getProtocolType() == IDENTITY_REGIST) {
|
||||
Logger.d(TAG, "server$channelRead0():" + msg.toString());
|
||||
if (msg.getProtocolType() == MogoProtocolMsg.IDENTITY_REGIST) {
|
||||
String sn = new String(msg.getBody());
|
||||
NettyTcpServer.getInstance().putChannelSN(ctx.channel().id(), sn);
|
||||
} else {
|
||||
@@ -51,7 +50,7 @@ public class MogoProtocolServerHandler extends SimpleChannelInboundHandler<MogoP
|
||||
*/
|
||||
@Override
|
||||
public void channelActive(ChannelHandlerContext ctx) throws Exception {
|
||||
Log.e(TAG, "channelActive");
|
||||
Logger.e(TAG, "channelActive");
|
||||
if (mListener != null) {
|
||||
mListener.onChannelConnect(ctx.channel());
|
||||
}
|
||||
@@ -72,7 +71,7 @@ public class MogoProtocolServerHandler extends SimpleChannelInboundHandler<MogoP
|
||||
|
||||
@Override
|
||||
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
|
||||
Log.e(TAG, "channelInactive");
|
||||
Logger.e(TAG, "channelInactive");
|
||||
// NettyTcpServer.getInstance().setConnectStatus(false);
|
||||
NettyTcpServer.getInstance().removeChannelSN(ctx.channel().id());
|
||||
if (mListener != null) {
|
||||
|
||||
@@ -4,8 +4,7 @@ import static com.mogo.telematic.MogoLengthFrameDecoder.LENGTH_FIELD_OFFSET;
|
||||
import static com.mogo.telematic.MogoLengthFrameDecoder.LENGTH_FIELD_SIZE;
|
||||
import static com.mogo.telematic.MogoLengthFrameDecoder.MAX_FRAME_LENGTH;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.elegant.log.simplelog.Logger;
|
||||
import com.mogo.telematic.MogoLengthFrameDecoder;
|
||||
import com.mogo.telematic.MogoMessageEncoder;
|
||||
import com.mogo.telematic.MogoProtocolMsg;
|
||||
@@ -104,7 +103,7 @@ public class NettyTcpServer {
|
||||
|
||||
// Bind and start to accept incoming connections.
|
||||
ChannelFuture f = b.bind().sync();
|
||||
Log.e(TAG, NettyTcpServer.class.getName() + " started and listen on " + f.channel().localAddress());
|
||||
Logger.e(TAG, NettyTcpServer.class.getName() + " started and listen on " + f.channel().localAddress());
|
||||
isServerStart = true;
|
||||
if (mListener != null) {
|
||||
mListener.onStartServer();
|
||||
@@ -114,7 +113,7 @@ public class NettyTcpServer {
|
||||
// shut down your server.
|
||||
f.channel().closeFuture().sync();
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, e.getLocalizedMessage());
|
||||
Logger.e(TAG, e.getLocalizedMessage());
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
isServerStart = false;
|
||||
@@ -163,11 +162,11 @@ public class NettyTcpServer {
|
||||
}
|
||||
}
|
||||
|
||||
private ChannelFutureListener mProxyListener = channelFuture -> {
|
||||
private final ChannelFutureListener mProxyListener = channelFuture -> {
|
||||
if (channelFuture.isSuccess()) {
|
||||
Log.d(TAG, "SendMsgToAllClients result was successful");
|
||||
Logger.d(TAG, "SendMsgToAllClients result was successful");
|
||||
} else {
|
||||
Log.d(TAG, "SendMsgToAllClients result was unsuccessful");
|
||||
Logger.d(TAG, "SendMsgToAllClients result was unsuccessful");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user