//package com.sunyard.ssp.server;
//
//import com.google.protobuf.Any;
//import com.google.protobuf.InvalidProtocolBufferException;
//import com.google.protobuf.UInt64Value;
//import com.sunyard.ssp.proto.control.Control;
//import lombok.NoArgsConstructor;
//import lombok.Setter;
//import lombok.extern.slf4j.Slf4j;
//import lombok.val;
//import redis.clients.jedis.BinaryJedisPubSub;
//
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//
///**
// * @author:tsz
// * @date:2020/3/19
// * @description:
// */
//@Slf4j
//public class ServerTest {
//
//    /**
//    *@author ：tsz
//     *@date   ：2020/03/19 15:56
//     *@description : 测试是否联通渠道
//     */
//    public static void connect() {
//        try {
//
//            // 准备消息
//            val req = Control.Req.newBuilder()
//                    .setId(Messenger.genId())
//                    .setOrigin(Control.Req.Origin.MANAGER)
//                    .setFrom("CLUSTER")
//                    .setCmd("test.ping")
//                    .build();
//            //Manager 监听通道 MANAGER_CLUSTER
//            // SERVER_CLUSTER
//            val res = Messenger.soloSyncCmd("SERVER_CLUSTER", req);
//            if (null == res) {
//                System.err.println("接收命令响应超时！");
//            } else {
////                Control.CMD_ping p = res.getData().unpack(Control.CMD_ping.class);
//
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//    }
//
//    /**
//    *@author ：tsz
//     *@date   ：2020/3/19 16:06
//     *@param  : 传递渠道id？
//     *@return :
//     *@description : 渠道更新
//     */
//    public static void channelUpdate(String channelId) {
//        try {
//
//            // 准备消息
//            val req = Control.Req.newBuilder()
//                    .setId(Messenger.genId())
//                    .setOrigin(Control.Req.Origin.MANAGER)
//                    .setFrom("CLUSTER")
//                    .setCmd("channel.update.enable")
//                    .setData(Any.pack(UInt64Value.of(Long.valueOf(channelId))))
//                    .build();
//            //Manager 监听通道 MANAGER_CLUSTER
//            // SERVER_CLUSTER
//            val res = Messenger.soloSyncCmd("SERVER_CLUSTER", req);
//            if (null == res) {
//                System.err.println("接收命令响应超时！");
//            } else {
//
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    /**
//    *@author ：tsz
//     *@date   ：2020/3/19 16:44
//     *@param  :
//     *@return :
//     *@description :  列出所有渠道
//     */
//    public static void channelList() {
//        try {
//
//            // 准备消息
//            val req = Control.Req.newBuilder()
//                    .setId(Messenger.genId())
//                    .setOrigin(Control.Req.Origin.MANAGER)
//                    .setFrom("CLUSTER")
//                    .setCmd("channel.list")
//                    .build();
//            //Manager 监听通道 MANAGER_CLUSTER
//            // SERVER_CLUSTER
//            val res = Messenger.soloSyncCmd("SERVER_CLUSTER", req);
//            if (null == res) {
//                System.err.println("接收命令响应超时！");
//            } else {
//                val list = res.getData().unpack( Control.VOChannelList.class );
//
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//    }
//
//    /**
//    *@author ：tsz
//    *@date   ：2020/3/19 16:49
//    *@param  :
//    *@return :
//    *@description : 列出所有服务器
//    */
//    public static void serverList(){
//        try {
//
//            // 准备消息
//            val req = Control.Req.newBuilder()
//                    .setId(Messenger.genId())
//                    .setOrigin(Control.Req.Origin.MANAGER)
//                    .setFrom("CLUSTER")
//                    .setCmd("server.list")
//                    .build();
//            //Manager 监听通道 MANAGER_CLUSTER
//            // SERVER_CLUSTER
//            val res = Messenger.soloSyncCmd("SERVER_CLUSTER", req);
//            if (null == res) {
//                System.err.println("接收命令响应超时！");
//            } else {
//                val list = res.getData().unpack( Control.VOChannelList.class );
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    /**
//    *@author ：tsz
//    *@date   ：2020/03/24 15:38
//    *@description : 渠道验证
//    */
//    public static void VOChannelCheck(Long channelId,String checkId) {
//
//
//        val buff = new HashMap<String, List<Control.VOChannelCheckRes>>();
//
//
//
//        @NoArgsConstructor
//        @Setter
//        class Msg extends BinaryJedisPubSub {
//
//            private Thread t;
//
//
//            @Override
//            public void onMessage(byte[] channel, byte[] message) {
//
//
//                // 将 message 解析为 Res 对象
//                try {
//                    val res = Control.VOChannelCheckRes.parseFrom( message );
//                    if ( !buff.containsKey(checkId)){
//                        buff.put(checkId,new ArrayList<>());
//                    }
//
//                    val list = buff.get(checkId);
//
//
//
//                    list.add(res);
//                    if ( res.getType().equals("end") ){
//                        t.stop();
//                    }
//
//
//                } catch (InvalidProtocolBufferException e) {
//                    e.printStackTrace();
//                }
//
//            }
//        }
//
//        //
//        val msg = new Msg();
//        Thread t = Messenger.subscribe(msg, checkId );
//        msg.setT( t );
//        t.start();
//
//
//        try {
//            // 准备消息
//            val req = Control.Req.newBuilder()
//                    .setId(Messenger.genId())
//                    .setOrigin(Control.Req.Origin.MANAGER)
//                    .setFrom("CLUSTER")
//                    .setCmd("channel.check")
//                    .setData(Any.pack(Control.VOChannelCheck.newBuilder().setChannelId(channelId).setCheckId(checkId).build()))
//                    .build();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//    }
//
//
//    public static void main(String[] args) {
//        VOChannelCheck(11L,"111");
//    }
//
//
//}
