""" Get psync status from pb interfaces
"""

#!/usr/bin/python

import sys
import os


# Guess paths to adjust PYTHONPATH for later imports.
daemon_root = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")

try:
    from paytor.log import startLogging
except ImportError:
    paytor_root = daemon_root
    sys.path.append(paytor_root)
    
import cPickle    

from twisted.internet import reactor

from twisted.internet.defer import Deferred, inlineCallbacks, returnValue

from paytor.pb.clients import PPBClientFactoryNR
from paytor.protocol.decorator import timeout, TimeoutError

import pprint

from paytor.log import startLogging
from twisted.python import log
from twisted.python.log import ILogObserver
import logging

# At first, read log settings.

logopt = {}
logopt['filename'] = ''
enfile = False
enstream = True
logLevel = 'INFO'

observer = log.PythonLoggingObserver()
startLogging(logLevel=logLevel, fileoptions=logopt, enfile=enfile, enstream=enstream)
log = logging.getLogger('paytor')

def main():
    
    @inlineCallbacks
    def _main():
        pb = PPBClientFactoryNR()
        
        pb.resetUsers()
        
        pb.addUser('psyncprocess', 'psyncprocess')
        
        pb.setMaxDelay(10.0)
    
        pb.connect('127.0.0.1', 3705, "psyncd_tool")
        
        try:
            ret = yield pb.proxyCallRemote('psyncprocess', 10.0, 'getStatusLeaves')
        
            ret = cPickle.loads(ret)
        except:
            ret = None
            
        pprint.pprint(ret)
        
        pb.disconnect()
        
        yield pb.getDisconnectionCallback()    
        
        reactor.callLater(1.0, reactor.stop)
        
        returnValue(True)
    
    return _main()

reactor.callWhenRunning(main)

reactor.run()

