private void OnAcceptFriendlyBattleMessageReceived(AcceptFriendlyBattleMessage message)
        {
            if (this.m_session.Alliance != null)
            {
                Alliance  alliance = this.m_session.Alliance;
                LogicLong streamId = message.GetStreamId();

                if (alliance.StreamEntryList.IndexOf(streamId) != -1)
                {
                    StreamEntry streamEntry = StreamManager.GetAllianceStream(message.GetStreamId());

                    if (streamEntry.GetStreamEntryType() == StreamEntryType.CHALLENGE)
                    {
                        ChallengeStreamEntry challengeStreamEntry = (ChallengeStreamEntry)streamEntry;

                        if (challengeStreamEntry.IsStarted())
                        {
                            ChallengeFailedMessage challengeFailedMessage = new ChallengeFailedMessage();
                            challengeFailedMessage.SetReason(ChallengeFailedMessage.Reason.ALREADY_CLOSED);
                            this.m_session.SendPiranhaMessage(challengeFailedMessage, 1);
                            return;
                        }

                        this.m_session.SendMessage(new ChangeGameStateMessage
                        {
                            StateType           = GameStateType.CHALLENGE_ATTACK,
                            ChallengeAllianceId = alliance.Id,
                            ChallengeHomeId     = challengeStreamEntry.GetSenderAvatarId(),
                            ChallengeStreamId   = challengeStreamEntry.GetId(),
                            ChallengeHomeJSON   = challengeStreamEntry.GetSnapshotHomeJSON(),
                            ChallengeMapId      = challengeStreamEntry.IsWarLayout() ? 1 : 0
                        }, 9);

                        challengeStreamEntry.SetStarted(true);
                        alliance.UpdateStreamEntry(challengeStreamEntry);

                        return;
                    }
                }
            }

            ChallengeFailedMessage challengeFailedMessageGeneric = new ChallengeFailedMessage();

            challengeFailedMessageGeneric.SetReason(ChallengeFailedMessage.Reason.GENERIC);
            this.m_session.SendPiranhaMessage(challengeFailedMessageGeneric, 1);
        }