Beispiel #1
0
 def f(*args):
     connection = make_client_connection(server=None)
     postBody = connection.dump_request(data=(shared_name, args))
     response, t = direct_call(self.server, postBody, connection.server)
     isError, answer = connection.load_response(response)
     if isError:
         raise NimbleException.load(answer)
     return answer, t, postBody
Beispiel #2
0
    @returns: decorated function
     @errors: PermissionDenied
    """
    @functools.wraps(func)
    def f(self, connection, *args, **kwargs):
        try:
            return func(self, connection, *args, **kwargs)
        except NimbleException, ex:
            traceback.print_exc()
            return connection.ERROR(ex.dump())
        except Exception, ex:
            traceback.print_exc()
            return connection.ERROR(ServerError(ex).dump())
        except:
            traceback.print_exc()
            return connection.ERROR(NimbleException.dump_unhandled())
    return f

def shared(func):
    setattr(func, SHARED_AS_PROPERTY, func.__name__)
    return process_exceptions(func)

def shared_as(alias):
    def decorator(func):
        setattr(func, SHARED_AS_PROPERTY, alias)
        return process_exceptions(func)
    return decorator

def get_shared(server_instance):
    predicate = lambda m: inspect.ismethod(m) and hasattr(m, SHARED_AS_PROPERTY)
    shared = inspect.getmembers(server_instance, predicate)
Beispiel #3
0
 def __init__(self, connection, message):
     if connection is None and message is None:
         value = None
     else:
         value = '%s: %s'%(object_type_string(connection), message)
     NimbleException.__init__(self, value)