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); }
public ErlEntry(Connect connect, int number, ReceiveFun receiveFun, List <Object> argus, long timeOut) { this.connect = connect; this.number = number; this.receiveFun = receiveFun; this.argus = argus; this.timeOut = timeOut; }
/** * 向指定地址和端口的连接发送消息 * @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); } } }
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(); } }
/** 添加通讯端口 */ public void addPort(string portName, ReceiveFun receiveFun) { int index = _portNameArray.IndexOf(portName); if (index >= 0) { _receiveFunArray [index] = receiveFun; } else { _portNameArray.Add(portName); _receiveFunArray.Add(receiveFun); } }
public override void receive(Connect connect, ByteBuffer data) { String portName = data.readUTF(); int index = _portNameArray.IndexOf(portName); if (index >= 0) { ReceiveFun rf = _receiveFunArray [index]; rf(connect, data); // var fun:Function=_receiveFunArray[index] as Function; // fun(connect,data); } else { //trace(connect+",is not portName="+portName); } }
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); }