public void Start <T, U>(string _path, int _port, int _maxConnections) where T : SuperUserService <U>, new() where U : UserData, new() { getUserService = delegate() { return(new T()); }; getUserData = delegate() { return(new U()); }; Action <SuperUserServiceBase, BaseProto> callBack = delegate(SuperUserServiceBase _service, BaseProto _data) { _service.SendUserData(_data as UserDataProto); }; SuperUserServiceBase.SetDataHandle <UserDataProto>(callBack); socket = new Socket(SocketType.Stream, ProtocolType.Tcp); socket.Bind(new IPEndPoint(IPAddress.Parse(_path), _port)); socket.Listen(_maxConnections); BeginAccept(); }
internal void GetLoginResult(UserData _userData, ServerUnit _serverUnit) { if (_userData != null) { SuperUserServiceBase userService = Server.getUserService(); userService.SetUserData(_userData); userService.SetServerUnit(_serverUnit); dic.Add(_userData.userName, userService); _serverUnit.GetLoginResult(userService); } else { _serverUnit.GetLoginResult(null); } }
internal void GetLoginResult(SuperUserServiceBase _userService) { LoginResultProto proto = new LoginResultProto(); if (_userService != null) { userService = _userService; proto.result = true; } else { proto.result = false; } Console.WriteLine("LoginResult:{0}", proto.result); SendData(proto); }
internal void Login(string _userName, string _password, ServerUnit _serverUnit) { if (dic.ContainsKey(_userName)) { SuperUserServiceBase userService = dic[_userName]; Action <SuperUserServiceBase> callBack = delegate(SuperUserServiceBase _service) { _service.Login(_userName, _password, _serverUnit); }; userService.Process(callBack); } else { Action <Redis> callBack = delegate(Redis _service) { _service.Login(_userName, _password, _serverUnit); }; Redis.Instance.Process(callBack); } }
public void Kick() { userService = null; }