예제 #1
0
        private static void ConnectUser(ITcpUser user)
        {
            var descrip = new DescriptorData(9999, 9999, 9999)
            {
                User = user
            };

            db.DESCRIPTORS.Add(descrip);
        }
예제 #2
0
        /// <summary>
        /// Handles connections
        /// </summary>
        /// <param name="tcpUser"></param>
        private void ConnectUser(ITcpUser tcpUser)
        {
            if (_pendingRepository.Contains(tcpUser.IpAddress) || _userRepository.Contains(tcpUser.IpAddress))
            {
                Log.InfoFormat("User {0} already exists.", tcpUser.IpAddress);
                return;
            }

            var gameUser = new GameUser(tcpUser.IpAddress, tcpUser, _initAtom);

            _pendingRepository.Add(tcpUser.IpAddress, gameUser);

            gameUser.SendMenu("MainMenu");
        }
예제 #3
0
        ///  <summary>
        ///
        ///  </summary>
        ///  <param name="ipAddress"></param>
        ///  <param name="tcpClient"></param>
        /// <param name="initAtom"></param>
        public GameUser(string ipAddress, ITcpUser tcpClient, DictionaryAtom initAtom)
            : base(0, "NewUser")
        {
            var kernel = (IKernel)initAtom.GetObject("Ninject.Kernel");

            IpAddress      = ipAddress;
            TcpClient      = tcpClient;
            TcpServer      = kernel.Get <ITcpServer>();
            MenuRepository = new MenuHandlerRepository();
            MenuRepository.Add("MainMenu",
                               kernel.Get <IMenuHandler>("MainMenu", new Parameter("initAtom", initAtom, false)));

            TcpServer.OnNetworkMessageReceived += Server_OnNetworkMessageReceived;
        }
예제 #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="tcpUser"></param>
        /// <param name="clientStream"></param>
        public void Enable(ITcpUser tcpUser, NetworkStream clientStream)
        {
            Validation.IsNotNull(tcpUser, "tcpUser");
            Validation.IsNotNull(clientStream, "clientStream");
            Validation.Validate(clientStream.CanWrite);

            ////IAC, SB, TELOPT_MXP, IAC, SE
            var buffer = new byte[6];

            buffer[0] = (byte)MxpExtensions.IAC;           //// Command
            buffer[1] = (byte)MxpExtensions.SB;            //// Subnegotiation Start
            buffer[2] = (byte)MxpExtensions.TELOPT_MXP;    //// Passed in telnet option
            buffer[3] = (byte)MxpExtensions.IAC;
            buffer[4] = (byte)MxpExtensions.SE;
            buffer[5] = (byte)'\0';
            clientStream.Write(buffer, 0, buffer.Length);

            //// MXPMODE \x1B[6z
            var encoder    = new ASCIIEncoding();
            var byteBuffer = encoder.GetBytes(MxpExtensions.ESC + "[6z\0");

            clientStream.Write(byteBuffer, 0, byteBuffer.Length);
            clientStream.Flush();
        }
예제 #5
0
 public void Enable(ITcpUser tcpUser, NetworkStream clientStream)
 {
     // do nothing
 }