public static void KcpSetoutput(IntPtr kcp, KcpOutput output) { if (kcp == IntPtr.Zero) { throw new Exception($"kcp error, kcp point is zero"); } ikcp_setoutput(kcp, output); }
public void SetOutput() { #if ENABLE_IL2CPP Kcp.KcpSetoutput(this.kcp, KcpOutput); #else // 跟上一行一样写法,pc跟linux会出错, 保存防止被GC kcpOutput = KcpOutput; Kcp.KcpSetoutput(this.kcp, kcpOutput); #endif }
public static void KcpSetoutput(IntPtr kcp, KcpOutput output) { if (kcp == IntPtr.Zero) { throw new Exception("kcp error, kcp point is zero"); } IntPtr fn = Marshal.GetFunctionPointerForDelegate(output); ikcp_setoutput(kcp, fn); }
/** * Creates a new instance. * * @param output output for kcp */ public Ukcp(KcpOutput output, KcpListener kcpListener, IMessageExecutor iMessageExecutor, ReedSolomon reedSolomon, ChannelConfig channelConfig) { this._channelConfig = channelConfig; this.kcp = new Kcp(channelConfig.Conv, output); this.active = true; this._kcpListener = kcpListener; this._iMessageExecutor = iMessageExecutor; //默认2<<11 可以修改 _writeQueue = new MpscArrayQueue <IByteBuffer>(2 << 10); _readQueue = new MpscArrayQueue <IByteBuffer>(2 << 10); //recieveList = new SpscLinkedQueue<>(); int headerSize = 0; if (channelConfig.KcpTag) { headerSize += KCP_TAG; } //init crc32 if (channelConfig.Crc32Check) { var kcpOutput = kcp.Output; kcpOutput = new Crc32OutPut(kcpOutput, headerSize); kcp.Output = kcpOutput; headerSize += HEADER_CRC; } //init fec if (reedSolomon != null) { var kcpOutput = kcp.Output; _fecEncode = new FecEncode(headerSize, reedSolomon, channelConfig.Mtu); _fecDecode = new FecDecode(3 * reedSolomon.getTotalShardCount(), reedSolomon, channelConfig.Mtu); kcpOutput = new FecOutPut(kcpOutput, _fecEncode); kcp.Output = kcpOutput; headerSize += Fec.fecHeaderSizePlus2; } kcp.setReserved(headerSize); intKcpConfig(channelConfig); }
public void SetOutput() { // 跟上一行一样写法,pc跟linux会出错, 保存防止被GC kcpOutput = KcpOutput; Kcp.KcpSetoutput(this.kcp, kcpOutput); }
private static extern void ikcp_setoutput(IntPtr kcp, KcpOutput output);
public FecOutPut(KcpOutput output, FecEncode fecEncode) { this.output = output; this.fecEncode = fecEncode; }
public Kcp(int conv, KcpOutput output) { this.conv = conv; this.output = output; this.mss = mtu - IKCP_OVERHEAD; }
private static extern void ikcp_setoutput(KcpOutput output);
public static void KcpSetoutput(KcpOutput output) { KcpOutput = output; ikcp_setoutput(KcpOutput); }
public Crc32OutPut(KcpOutput output, int headerOffset) { _output = output; _headerOffset = headerOffset; }