コード例 #1
0
ファイル: ACSClient.cs プロジェクト: chaeyk/acsRankingPlugin
        /*
         * protected byte[] Receive()
         * {
         *  var ep = new IPEndPoint(IPAddress.Any, 0);
         *  return _udpClient.Receive(ref ep);
         * }
         */

        protected async Task <int> SendAsync(ACSProtocolWriter writer)
        {
            using (await _lock.LockAsync())
            {
                return(await _udpClient.SendAsync(writer.Buffer, (int)writer.Length, _remoteEndpoint));
            }
        }
コード例 #2
0
ファイル: ACSClient.cs プロジェクト: chaeyk/acsRankingPlugin
        public Task EnableRealtimeReportAsync(TimeSpan interval)
        {
            var writer = new ACSProtocolWriter();

            writer.Write(ACSProtocol.ACSP_REALTIMEPOS_INTERVAL);
            writer.Write((UInt16)interval.TotalMilliseconds);

            return(SendAsync(writer));
        }
コード例 #3
0
ファイル: ACSClient.cs プロジェクト: chaeyk/acsRankingPlugin
        public Task GetCarInfoAsync(byte carId)
        {
            var writer = new ACSProtocolWriter();

            writer.Write(ACSProtocol.ACSP_GET_CAR_INFO);
            writer.Write(carId);

            return(SendAsync(writer));
        }
コード例 #4
0
ファイル: ACSClient.cs プロジェクト: chaeyk/acsRankingPlugin
        public Task GetSessionInfoAsync(Int16 sessionIndex = -1 /* current index */)
        {
            var writer = new ACSProtocolWriter();

            writer.Write(ACSProtocol.ACSP_GET_SESSION_INFO);
            writer.Write(sessionIndex);

            return(SendAsync(writer));
        }
コード例 #5
0
ファイル: ACSClient.cs プロジェクト: chaeyk/acsRankingPlugin
        public Task SendAdminMessageAsync(string message)
        {
            var writer = new ACSProtocolWriter();

            writer.Write(ACSProtocol.ACSP_ADMIN_COMMAND);
            writer.WriteStringW(message);

            return(SendAsync(writer));
        }
コード例 #6
0
ファイル: ACSClient.cs プロジェクト: chaeyk/acsRankingPlugin
        public Task KickAsync(byte userId)
        {
            var writer = new ACSProtocolWriter();

            writer.Write(ACSProtocol.ACSP_KICK_USER);
            writer.Write(userId);

            return(SendAsync(writer));
        }
コード例 #7
0
ファイル: ACSClient.cs プロジェクト: chaeyk/acsRankingPlugin
        public Task SetSessionInfoAsync(byte sessionIndex, string sessionName, byte type, uint laps, TimeSpan time, TimeSpan waitTime)
        {
            var writer = new ACSProtocolWriter();

            writer.Write(ACSProtocol.ACSP_SET_SESSION_INFO);
            writer.Write(sessionIndex);
            writer.WriteStringW(sessionName);
            writer.Write(type);
            writer.Write(laps);
            writer.Write((uint)time.TotalSeconds);
            writer.Write((uint)waitTime.TotalSeconds);

            return(SendAsync(writer));
        }
コード例 #8
0
ファイル: ACSClient.cs プロジェクト: chaeyk/acsRankingPlugin
        public async Task BroadcastChatAsync(string message)
        {
            var lines = SplitMessage(message, 62);

            foreach (var line in lines)
            {
                var writer = new ACSProtocolWriter();

                writer.Write(ACSProtocol.ACSP_BROADCAST_CHAT);
                writer.WriteStringW(line);

                await SendAsync(writer);
            }
        }
コード例 #9
0
ファイル: ACSClient.cs プロジェクト: chaeyk/acsRankingPlugin
        // 여러 줄로 된 메시지는 줄 단위로 쪼개서 보낸다
        public async Task SendChatAsync(byte carId, string message)
        {
            var lines = SplitMessage(message, 62);

            foreach (var line in lines)
            {
                var writer = new ACSProtocolWriter();

                writer.Write(ACSProtocol.ACSP_SEND_CHAT);
                writer.Write(carId);
                writer.WriteStringW(line);

                await SendAsync(writer);
            }
        }