import xmlrpclib
import pickle
from logging import warning, debug, critical


class TDBProxy:
    def __init__(self, server):
        self.server = xmlrpclib.Server(server)

    def getTree(self, cred, base_path, _filter):
        """
        Returns tree rooted at base_path as a DataTree.
        """
        pickled = pickle.dumps( { 'cred': cred,
                                  'base_path': base_path,
                                  'filter': _filter } )
        data = self.server.getTree(pickled)
        return pickle.loads(data)
    
    def commit(self, cred, changes):
        pickled = pickle.dumps( { 'cred': cred,
                                  'changes': changes } )
        print 'commiting changes : %s' % str(changes)
        result = self.server.commit(pickled)
        if result:
            warning(result)


