# (C) Copyright 2005 Nuxeo SARL <http://nuxeo.com>
# Author: Florent Guillaume <fg@nuxeo.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as published
# by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
#
# $Id: __init__.py,v 1.1 2005/02/23 15:35:21 fguillaume Exp $

"""Debug running threads

This adds a ZServer hook so that if a special URL is called, a full dump
with tracebacks of the running python threads will be made.

You MUST configure zope.conf before use.
"""

from zLOG import LOG, INFO, ERROR
from App.config import getConfiguration

try:
    import threadframe
except ImportError:
    LOG('DeadlockDebugger', ERROR, "Incorrectly installed threadframe module")
else:
    config = getConfiguration()
    if getattr(config, 'product_config', None) is not None:
        deadlockdebugger = config.product_config.get('deadlockdebugger')
        dump_url = ''
        secret = ''
        if deadlockdebugger is None:
            LOG('DeadlockDebugger', ERROR, 'Missing configuration statement '
              '<product-config deadlockdebugger>, not activated')
        else:
            if not 'dump_url' in deadlockdebugger:
                LOG('DeadlockDebugger', ERROR, 'Please configure dump_url and '
                    'optionally secret in <product-config deadlockdebugger>, not '
                    'activated')
            else:
                import dumper
                LOG('DeadlockDebugger', INFO, "Installed")