コード例 #1
0
        protected override void OnUpdate()
        {
            var recvJob = new ReceiveJob {
                data = InitJobData()
            };

            ScheduleJobData(recvJob);
        }
コード例 #2
0
        public JobHandle ScheduleReceive <T>(T receiver, JobHandle dep) where T : struct, INetworkPacketReceiver
        {
            var job = new ReceiveJob <T> {
                receiver = receiver, socket = m_SocketHandle
            };

            return(job.Schedule(dep));
        }
コード例 #3
0
        public JobHandle ScheduleReceive(NetworkPacketReceiver receiver, JobHandle dep)
        {
            var job = new ReceiveJob {
                receiver = receiver, socket = m_UserData[0]
            };

            return(job.Schedule(dep));
        }
コード例 #4
0
    protected override JobHandle OnUpdate(JobHandle inputDeps)
    {
        var recvJob = new ReceiveJob();

        recvJob.commandData = GetBufferFromEntity <TCommandData>();
        recvJob.cmdBuffer   = GetBufferFromEntity <IncomingCommandDataStreamBufferComponent>();
        return(recvJob.ScheduleSingle(this, inputDeps));
    }
コード例 #5
0
        public JobHandle ScheduleReceive(NetworkPacketReceiver receiver, JobHandle dep)
        {
            var job = new ReceiveJob
            {
                Baselib  = m_Baselib,
                Rx       = m_PayloadsRx,
                Receiver = receiver
            };

            return(job.Schedule(dep));
        }
コード例 #6
0
        public JobHandle ScheduleReceive <T>(T receiver, JobHandle dep) where T : struct, INetworkPacketReceiver
        {
            var sendJob = new SendUpdate {
                ipcManager = IPCManager.Instance, ipcQueue = m_IPCQueue
            };
            var job = new ReceiveJob <T>
            {
                receiver = receiver, ipcManager = IPCManager.Instance, localEndPoint = m_LocalEndPoint[0]
            };

            dep = job.Schedule(JobHandle.CombineDependencies(dep, IPCManager.ManagerAccessHandle));
            dep = sendJob.Schedule(dep);
            IPCManager.ManagerAccessHandle = dep;
            return(dep);
        }
コード例 #7
0
        ///<summary>Handle messages, and update message and network state.</summary>
        void Update()
        {
            // Finish up last frame's jobs.
            receiveJobHandle.Complete();
            for (var i = 0; i < sendJobHandles.Length; ++i)
            {
                sendJobHandles[i].Complete();
                sentMessages[i].Dispose();
            }
            sentMessages.RemoveRange(0, sendJobHandles.Length);

            // Process received messages on the main thread.
            var messageCount = receivedMessages.Count;

            for (var i = 0; i < messageCount; ++i)
            {
                Handle(receivedMessages[i]);
            }
            receivedMessages.RemoveRange(0, messageCount);

            // Schedule new network event reception job.
            var receiveJob = new ReceiveJob {
                driver     = driver,
                connection = connection,
            };

            receiveJobHandle = driver.ScheduleUpdate();
            receiveJobHandle = receiveJob.Schedule(receiveJobHandle);

            // Schedule message queue sending jobs.
            sendJobHandles = new JobHandle[sentMessages.Count];
            for (var i = 0; i < sentMessages.Count; ++i)
            {
                sendJobHandles[i] = receiveJobHandle = new SendJob {
                    driver     = driver,
                    connection = connection,
                    message    = sentMessages[i]
                }.Schedule(receiveJobHandle);
            }

            JobHandle.ScheduleBatchedJobs();

            ReliableMessage.Update();
        }
コード例 #8
0
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
#if UNITY_EDITOR || DEVELOPMENT_BUILD
            if (m_NetStats[0] != 0)
            {
                m_GhostStatsCollectionSystem.AddCommandStats(m_NetStats);
                m_NetStats[0] = 0;
                m_NetStats[1] = 0;
            }
#endif
            var recvJob = new ReceiveJob();
            recvJob.commandData      = GetBufferFromEntity <TCommandData>();
            recvJob.cmdBuffer        = GetBufferFromEntity <IncomingCommandDataStreamBufferComponent>();
            recvJob.compressionModel = m_CompressionModel;
            recvJob.serverTick       = serverSimulationSystemGroup.ServerTick;
#if UNITY_EDITOR || DEVELOPMENT_BUILD
            recvJob.netStats = m_NetStats;
#endif
            return(recvJob.ScheduleSingle(this, inputDeps));
        }
コード例 #9
0
        public void ReceiveInJobWorks()
        {
            var serverDriver = new LocalNetworkDriver(new NetworkDataStreamParameter {
                size = 64
            });

            serverDriver.Bind(IPCManager.Instance.CreateEndPoint());
            serverDriver.Listen();
            var clientDriver = new LocalNetworkDriver(new NetworkDataStreamParameter {
                size = 64
            });
            var clientToServer = clientDriver.Connect(serverDriver.LocalEndPoint());

            WaitForConnected(clientDriver, serverDriver, clientToServer);
            var strmWriter = new DataStreamWriter(4, Allocator.Temp);

            strmWriter.Write(42);
            clientToServer.Send(clientDriver, strmWriter);
            strmWriter.Dispose();
            clientDriver.ScheduleUpdate().Complete();

            var serverToClient = new NativeArray <NetworkConnection>(1, Allocator.TempJob);
            var result         = new NativeArray <int>(1, Allocator.TempJob);
            var recvJob        = new ReceiveJob {
                driver = serverDriver, connections = serverToClient, result = result
            };

            Assert.AreNotEqual(42, result[0]);
            var acceptJob = new AcceptJob {
                driver = serverDriver, connections = serverToClient
            };

            recvJob.Schedule(serverDriver.ScheduleUpdate(acceptJob.Schedule())).Complete();
            Assert.AreEqual(42, result[0]);

            result.Dispose();
            serverToClient.Dispose();
            clientDriver.Dispose();
            serverDriver.Dispose();
        }
コード例 #10
0
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            //
            using (var commandBuffer = new EntityCommandBuffer(Allocator.TempJob))
                using (var endCommandBuffer = new SampleCommandBuffer <NetworkDisconnectedMessage>(Allocator.TempJob))
                {
                    inputDeps = new ReceiveJob()
                    {
                        NetworkConnectedMessage = typeof(NetworkConnectedMessage),
                        driver           = networkStreamSystem.concurrentDriver,
                        commandBuffer    = commandBuffer.ToConcurrent(),
                        endCommandBuffer = endCommandBuffer.ToConcurrent(),
                    }
                    .Schedule(this, inputDeps);

                    inputDeps.Complete();
                    commandBuffer.Playback(EntityManager);
                    endCommandBuffer.Playback(endBarrier);
                }

            //endBarrier.AddJobHandleForProducer(inputDeps);
            return(inputDeps);
        }