public override void HandleMessage(ClientStructure client, IClientMessageBase message)
        {
            var data = (LockBaseMsgData)message.Data;

            switch (data.LockMessageType)
            {
            case LockMessageType.ListRequest:
                LockSystemSender.SendAllLocks(client);
                //We don't use this message anymore so we can recycle it
                message.Recycle();
                break;

            case LockMessageType.Acquire:
                var acquireData = (LockAcquireMsgData)data;
                if (acquireData.Lock.PlayerName == client.PlayerName)
                {
                    LockSystemSender.SendLockAcquireMessage(client, acquireData.Lock, acquireData.Force);
                }
                break;

            case LockMessageType.Release:
                var releaseData = (LockReleaseMsgData)data;
                if (releaseData.Lock.PlayerName == client.PlayerName)
                {
                    LockSystemSender.ReleaseAndSendLockReleaseMessage(client, releaseData.Lock);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        public override void HandleMessage(ClientStructure client, IMessageData message)
        {
            var data = (LockBaseMsgData)message;

            switch (data.LockMessageType)
            {
            case LockMessageType.ListRequest:
                LockSystemSender.SendAllLocks(client);
                break;

            case LockMessageType.Acquire:
                var acquireData = (LockAcquireMsgData)message;
                if (acquireData.PlayerName == client.PlayerName)
                {
                    LockSystemSender.SendLockAquireMessage(acquireData.LockName, acquireData.PlayerName,
                                                           acquireData.Force);
                }
                break;

            case LockMessageType.Release:
                var releaseData = (LockReleaseMsgData)message;
                if (releaseData.PlayerName == client.PlayerName)
                {
                    LockSystemSender.SendLockReleaseMessage(releaseData.LockName, releaseData.PlayerName);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }