Пример #1
0
 public void access(ErlConnect connect, ErlKVMessage message, ReceiveFun receiveFun, List<object> argus, long timeOut)
 {
     ByteBuffer data = new ByteBuffer();
     message.bytesWrite(data);
     //this._list.Add(new ErlEntry(connect, message.getPort(), receiveFun, argus, timeOut + TimeKit.getMillisTime()));
     connect.sendErl(data, 1, 1, 1, 1);
 }
Пример #2
0
 public override Connect openConnect(string localAddress, int localPort)
 {
     ErlConnect connect = new ErlConnect();
     connect.open(localAddress, localPort);
     connect.portHandler = DataAccess.getInstance();
     return connect;
 }
Пример #3
0
 public Connect openConnect(Socket _socket)
 {
     ErlConnect connect = new ErlConnect();
     connect.open(_socket);
     connect.portHandler = DataAccess.getInstance();
     return connect;
 }
Пример #4
0
    //打开指定地址的连接
    override public Connect openConnect(string localAddress, int localPort)
    {
        ErlConnect c = new ErlConnect();

        c.open(localAddress, localPort);
        c.portHandler = DataAccess.getInstance();
        return(c);
    }
Пример #5
0
    /** 指定连接是否可用 */
    public Boolean isActive(string address, int port)
    {
        ErlConnect erlConnect = factory.checkInstance(address, port) as ErlConnect;

        if (erlConnect == null)
        {
            return(false);
        }
        return(erlConnect.isActive);
    }
Пример #6
0
    /** 获取指定连接的ping延迟时间 */
    public int getPing(string address, int port)
    {
        ErlConnect erlConnect = factory.checkInstance(address, port) as ErlConnect;

        if (erlConnect == null)
        {
            return(0);
        }
        return((int)erlConnect.ping);
    }
Пример #7
0
    public void access(ErlConnect connect, ErlKVMessage message, ReceiveFun receiveFun, List <object> argus, long timeOut)
    {
        ByteBuffer data = new ByteBuffer();

        message.bytesWrite(data);
        _list.Add(new ErlEntry(connect, message.getPort(), receiveFun, argus, timeOut + TimeKit.getMillisTime()));
        connect.sendErl(data, ErlConnect.ENCRYPTION, ErlConnect.CRC, ErlConnect.COMPRESS, ErlConnect.KV);
        if (timeout == null)
        {
            timeout = TimerManager.Instance.getTimer(DELAY);
            timeout.addOnTimer(onTimer);
            timeout.start();
        }
    }
Пример #8
0
    /**
     * 向指定地址和端口的连接发送消息
     * @param address-消息发送地址
     * @param port-消息发送端口
     * @param handle-执行回调的函数
     * @param argus-执行回调的参数数组
     * @param data-消息发送数据 ErlKVMessage对象
     **/
    public void sendMessage(string address, int port, ErlKVMessage message, ReceiveFun handle, List <object> argus)
    {
//        if(!MiniConnectManager.IsRobot)
//        Debug.Log(message.Cmd + "," + message.toJsonString());

        ErlConnect connect = factory.getConnect(address, port) as ErlConnect;

        if (connect == null)
        {
            return;
        }
        if (connect.isActive)          // 在连接可用的情况下才发送数据
        {
            if (handle != null)
            {
                long time = MiniConnectManager.now;/**
                                                    * DataAccess.getInstance ().access (connect, message, (c,o)=>{
                                                    * time = MiniConnectManager.now - time;
                                                    * if(time > maxTime)
                                                    * {
                                                    * maxTime = time;
                                                    * maxCmd = message.Cmd;
                                                    * }
                                                    *
                                                    * if(MiniConnectManager.now - startTime > 1000)
                                                    * {
                                                    * startTime = MiniConnectManager.now;
                                                    * if(MiniConnectManager.IsRobot)
                                                    * Debug.LogError("max cmd use time:"+maxCmd+" : " + maxTime);
                                                    * }
                                                    * handle(c,o);
                                                    *
                                                    * }, argus, DataAccess.TIMEOUT);
                                                    */
                DataAccess.getInstance().access(connect, message, handle, argus, DataAccess.TIMEOUT);
            }
            else
            {
                DataAccess.getInstance().access(connect, message, messageHandle, argus, DataAccess.TIMEOUT);
            }
        }
        else            // 抛连接错误消息
        {
            MonoBehaviour.print("connect error!" + connect.isActive);
            if (GameManager.Instance != null)
            {
                GameManager.Instance.OnLostConnect(true);
            }
        }
    }
Пример #9
0
    /** 获得指定连接当前状态(返回0表示连接正常,1连接不存在,2连接存在但不可用) */
    public int getConnectStatus(string address, int port)
    {
        ErlConnect erlConnect = factory.checkInstance(address, port) as ErlConnect;

        if (erlConnect == null)
        {
            return(1);
        }
        if (!erlConnect.isActive)
        {
            return(2);
        }
        return(0);
    }
Пример #10
0
 public Connect beginConnect(Socket _socket)
 {
     String localAddress = (_socket.RemoteEndPoint as IPEndPoint).Address.ToString ();
     int localPort = (_socket.RemoteEndPoint as IPEndPoint).Port;
     Connect item = this.checkInstance(localAddress, localPort);
     if (item == null)
     {
         //item = this.openConnect(_socket);
         item = new ErlConnect();
         item.socket = _socket;
         this.connectArray.Add(item);
         //item.CallBack = callBack;
         //item.ConnectInvalidBack = invalidBack;
         return item;
     }
     //callBack();
     return item;
 }
Пример #11
0
 public void sendServer(ErlConnect connect , ErlKVMessage message)
 {
     DataAccess.getInstance().sendServer(connect, message, null, null, 0x4e20L);
 }
Пример #12
0
 public TransPort(ErlConnect _erlConnect)
 {
     this.erlConnect = _erlConnect;
     this.erlConnect.portHandler = this;
 }
Пример #13
0
 protected virtual void pingHandle(ErlConnect connect, ErlKVMessage erlMessage)
 {
 }
Пример #14
0
 //public readonly Logger Log = LogManager.GetLogger("ClientPort");
 //private CallBack _callBack;
 public ClientPort(ErlConnect _erlConnect)
 {
     this.erlConnect = _erlConnect;
     this.erlConnect.portHandler = this;
 }
Пример #15
0
 //执行ping通信返回消息的执行方法
 protected virtual void pingHandle(ErlConnect connect, ErlKVMessage erlMessage)
 {
 }
Пример #16
0
 public static void Main(String[] args)
 {
     ErlConnect et = new ErlConnect ();
     System.Console.Write (string.Concat (et.getPK (80543948)));
 }
Пример #17
0
 public void sendServer(ErlConnect connect, ErlKVMessage message, ReceiveFun receiveFun, List<object> argus, long timeOut)
 {
     ByteBuffer data = new ByteBuffer();
     message.bytesWrite(data);
     //Log.Info ("+++"+string.Concat (data.getArray ()));
     //this._list.Add(new ErlEntry(connect, message.getPort(), receiveFun, argus, timeOut + TimeKit.getMillisTime()));
     connect.sendErl(data, 1, 1, 1, 1);
 }
Пример #18
0
 public BaseFPort(ErlConnect _socket)
 {
     this._erlConnect = _socket;
 }