コード例 #1
0
        internal NetworkLinker(NetworkLinkerHandle handle, UdpCNetworkDriver driver, NetworkConnection connection, int targetPacketSize)
        {
            this.handle           = handle;
            this.driver           = driver;
            this.connection       = connection;
            this.targetPacketSize = targetPacketSize;

            seqNumbers = new NativeArray <ushort> (5, Allocator.Persistent);
            flags      = new NativeArray <byte> (3, Allocator.Persistent);
            latencyLog = new NativeArray <ushort> (16, Allocator.Persistent);

            uncheckedSelfReliablePackets = new List <UncheckedReliablePacket> (16);

            uncheckedRecieveReliableDataStream = new DataStreamWriter(ushort.MaxValue, Allocator.Persistent);
            tempRecieveReliableDataStream      = new DataStreamWriter(ushort.MaxValue, Allocator.Persistent);
            dataStreams = new NativeList <DataStreamReader> (32, Allocator.Persistent);
            uncheckedreliableStreams = new NativeList <DataStreamReader> (32, Allocator.Persistent);

            packetChunksQosTable  = new DataStreamWriter[(int)QosType.ChunkEnd - 1];
            packetLengthsQosTable = new NativeList <ushort> [(int)QosType.ChunkEnd - 1];

            for (int i = 0; i < (int)QosType.ChunkEnd - 1; i++)
            {
                packetChunksQosTable[i]  = new DataStreamWriter(ushort.MaxValue, Allocator.Persistent);
                packetLengthsQosTable[i] = new NativeList <ushort> (4, Allocator.Persistent);
                packetLengthsQosTable[i].Add(default);
コード例 #2
0
        // サーバーから切断されたらLinkerを破棄して停止
        public override void StopComplete()
        {
            playerId = 0;
            state    = State.Offline;
            jobHandle.Complete();

            //var linker = NetworkLinkerPool.GetLinker (networkLinkerHandle);
            //driver.Disconnect (linker.connection);    //ここはserverからDisconnectされたら行う処理

            NetworkLinkerPool.ReleaseLinker(networkLinkerHandle);
            networkLinkerHandle = default;
            Debug.Log("StopComplete");
        }
コード例 #3
0
        public static bool ReleaseLinker(NetworkLinkerHandle linkerHandle)
        {
            int handle = linkerHandle.m_linkerId - 1;

            if (0 <= handle && handle < networkLinkers.Count && networkLinkers[handle] != null)
            {
                networkLinkers[handle].Dispose();
                networkLinkers[handle] = null;
                return(true);
            }
            else
            {
                Debug.LogError("Handle=" + linkerHandle.m_linkerId + "は存在しないか、解放済みのLinekerです");
                return(false);
            }
        }
コード例 #4
0
        public static NetworkLinkerHandle CreateLinkerHandle(UdpCNetworkDriver driver, NetworkConnection connection)
        {
            NetworkLinkerHandle handle;

            for (int i = 0; i < networkLinkers.Count; i++)
            {
                if (networkLinkers[i] == null)
                {
                    handle            = new NetworkLinkerHandle(i + 1);
                    networkLinkers[i] = new NetworkLinker(handle, driver, connection, MTU);
                    return(handle);
                }
            }

            handle = new NetworkLinkerHandle(networkLinkers.Count + 1);
            networkLinkers.Add(new NetworkLinker(handle, driver, connection, MTU));
            return(handle);
        }
コード例 #5
0
        /// <summary>
        /// クライアント接続開始
        /// </summary>
        public void Start(IPAddress adress, int port)
        {
            serverAdress = adress;
            serverPort   = port;

            if (!driver.IsCreated)
            {
                var parm = new NetworkConfigParameter()
                {
                    connectTimeoutMS    = 1000 * 5,
                    disconnectTimeoutMS = 1000 * 5,
                };
                driver = new UdpCNetworkDriver(new INetworkParameter[] { parm });
            }

            var endpoint = new IPEndPoint(serverAdress, port);

            state = State.Connecting;

            networkLinkerHandle = NetworkLinkerPool.CreateLinkerHandle(driver, driver.Connect(endpoint));

            Debug.Log("StartClient");
        }
コード例 #6
0
 public static NetworkLinker GetLinker(NetworkLinkerHandle linkerHandle)
 {
     return(networkLinkers[linkerHandle.m_linkerId - 1]);
 }