X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=pdm%2Fcli.py;h=effe3c91056b177b0cf8835a55e4d22383e0b6bc;hb=b4cc75dc41c7b1a0a6e0c4fb5abf3ddeb8ba5ac9;hp=81246b7fd439fed65bbb9ca8f2adf0b42f3a0786;hpb=73c1ef8bb613a660f37fbe0cfe50b74fc5925229;p=pdm.git diff --git a/pdm/cli.py b/pdm/cli.py index 81246b7..effe3c9 100644 --- a/pdm/cli.py +++ b/pdm/cli.py @@ -1,7 +1,9 @@ -"""Management for daemon processes +"""Python Daemon Management -- Client functions -This module provides some client support for the daemon management -provided in the pdm.srv module. +This module implements the client part of the PDM protocols. The +primary objects of interest are the replclient and perfclient classes, +which implement support for their respective protocols. See their +documentation for details. """ import socket, pickle, struct, select, threading @@ -49,12 +51,12 @@ class client(object): """Create a client object connected to the specified server. `sk' can either be a socket object, which is used as it is, or a string specification very similar to the - specification for pdm.srv.listen, so see its documentation for - details. The differences are only that this function does not - take arguments specific to socket creation, like the mode and - group arguments for Unix sockets. If `proto' is given, that - subprotocol will negotiated with the server (by calling the - select() method). + specification for L{pdm.srv.listen}, so see its documentation + for details. The differences are only that this function does + not take arguments specific to socket creation, like the mode + and group arguments for Unix sockets. If `proto' is given, + that subprotocol will negotiated with the server (by calling + the select() method). """ self.sk = resolve(sk) self.buf = "" @@ -104,8 +106,8 @@ class client(object): class replclient(client): """REPL protocol client - Implements the client side of the REPL protocol; see pdm.srv.repl - for details on the protocol and its functionality. + Implements the client side of the REPL protocol; see + L{pdm.srv.repl} for details on the protocol and its functionality. """ def __init__(self, sk): """Create a connected client as documented in the `client' class.""" @@ -113,8 +115,8 @@ class replclient(client): def run(self, code): """Run a single block of Python code on the server. Returns - the output of the command (as documented in pdm.srv.repl) as a - string. + the output of the command (as documented in L{pdm.srv.repl}) + as a string. """ while True: ncode = code.replace("\n\n", "\n") @@ -205,8 +207,8 @@ class perfproxy(object): class perfclient(client): """PERF protocol client - Implements the client side of the PERF protocol; see pdm.srv.perf - for details on the protocol and its functionality. + Implements the client side of the PERF protocol; see + L{pdm.srv.perf} for details on the protocol and its functionality. This client class implements functions for finding PERF objects on the server, and returns, for each server-side object looked up, a @@ -216,8 +218,8 @@ class perfclient(client): they implement a close() method for that purpose, and can also be used in `with' statements. - See pdm.srv.perf for details on the various PERF interfaces that - the proxy objects might implement. + See L{pdm.srv.perf} for details on the various PERF interfaces + that the proxy objects might implement. """ def __init__(self, sk): """Create a connected client as documented in the `client' class.""" @@ -313,6 +315,11 @@ class perfclient(client): of the slash. For instance, find("pdm.perf.sysres/cputime") will return the built-in attribute for reading the CPU time used by the server process. + + The proxy objects returned by this function are cached and the + same object are returned the next time the same name is + requested, which means that they are kept live until the + client connection is closed. """ ret = self.names.get(name) if ret is None: