Go to the latest version of this document.

# ``twisted`.`protocols`.`amp`.`Descriptor``

class documentation

`class Descriptor(Integer): (source)`

Constructor: `Descriptor(optional)`

View In Hierarchy

Encode and decode file descriptors for exchange over a UNIX domain socket.

This argument type requires an AMP connection set up over an `IUNIXTransport` provider (for example, the kind of connection created by `IReactorUNIX.connectUNIX` and `UNIXClientEndpoint`).

There is no correspondence between the integer value of the file descriptor on the sending and receiving sides, therefore an alternate approach is taken to matching up received descriptors with particular `Descriptor` parameters. The argument is encoded to an ordinal (unique per connection) for inclusion in the AMP command or response box. The descriptor itself is sent using `IUNIXTransport.sendFileDescriptor`. The receiver uses the order in which file descriptors are received and the ordinal value to come up with the received copy of the descriptor.

Method | `fromStringProto` | Take a unique identifier associated with a file descriptor which must have been received by now and use it to look up that descriptor in a dictionary where they are kept.
Method | `toStringProto` | Send `inObject`, an integer file descriptor, over `proto`'s connection and return a unique identifier which will allow the receiver to associate the file descriptor with this argument.

Inherited from `Integer`:

Method | `toString` | Convert a Python object into a string for passing over the network.

Inherited from `Argument` (via `Integer`):

Method | `__init__` | Create an Argument.
Method | `fromBox` | Populate an 'out' dictionary with mapping names to Python values decoded from an 'in' AmpBox mapping strings to string values.
Method | `fromString` | Convert a string to a Python object. Subclasses must implement this.
Method | `retrieve` | Retrieve the given key from the given dictionary, removing it if found.
Method | `toBox` | Populate an 'out' AmpBox with strings encoded from an 'in' dictionary mapping names to Python values.
Instance Variable | `optional` | Undocumented

def fromStringProto(self, inString, proto): (source)
overrides `twisted.protocols.amp.Argument.fromStringProto`

Take a unique identifier associated with a file descriptor which must have been received by now and use it to look up that descriptor in a dictionary where they are kept.

Parameters
inString:`str` | The base representation (as a byte string) of an ordinal indicating which file descriptor corresponds to this usage of this argument.
proto:`BinaryBoxProtocol` | The protocol used to receive this descriptor. This protocol must be connected via a transport providing `IUNIXTransport`.

Returns
`int` | The file descriptor represented by `inString`.

def toStringProto(self, inObject, proto): (source)
overrides `twisted.protocols.amp.Argument.toStringProto`

Send `inObject`, an integer file descriptor, over `proto`'s connection and return a unique identifier which will allow the receiver to associate the file descriptor with this argument.

Parameters
inObject:`int` | A file descriptor to duplicate over an AMP connection as the value for this argument.
proto | The protocol which will be used to send this descriptor. This protocol must be connected via a transport providing `IUNIXTransport`.

Returns
`bytes` | A byte string which can be used by the receiver to reconstruct the file descriptor.