Beispiel #1
0
        /// <summary>
        /// Raises when a client received a completed <see cref="Package"/>.
        /// Not calling the base implementation of this methods will cause the client
        /// to malfunction.
        /// </summary>
        /// <param name="package">The package that has been received.</param>
        protected virtual void OnPackageReceived(Package package)
        {
            switch ((BaseCommand)package.Command)
            {
            case BaseCommand.Logout:
                var content = LogoutContent.Deserialize(package.Content);
                OnLoggedOut(content);
                break;

            case BaseCommand.ClientNames:
                var c = ClientNamesContent.Deserialize(package.Content);
                OnNamesReceived(c);
                break;

            case BaseCommand.Login:
                var loginContent = LoginContent.Deserialize(package.Content);
                OnLoggedIn(loginContent);
                break;
            }
        }
Beispiel #2
0
        private void OnPackageReceivedCore(ServerSideClient client, Package e)
        {
            switch ((BaseCommand)e.Command)
            {
            case BaseCommand.ClientNames: SendClientNames(client); break;

            case BaseCommand.Logout:
                clients.Remove(client);
                BroadcastPackageAsync(e, client);
                clientNames.Remove(client.Name);
                client.Dispose();
                OnClientLoggedOut(LogoutContent.Deserialize(e.Content));
                break;

            case BaseCommand.Login: ProcessLoginPackage(client, e); break;

            case BaseCommand.Sync:
                Synchronize(client);
                break;
            }

            OnPackageReceived(client, e);
        }