Clase MessageField

La clase MessageField se usa para definir mensajes que se transmiten de forma eficiente a través de una red o un espacio de proceso. Los mensajes se definen mediante clases de campo.

MessageField se proporciona mediante el módulo protorpc.messages.

Constructor

El constructor de la clase MessageField se define del siguiente modo:

class MessageField(message_type, number, [required=False | repeated=False])

Define campos para valores de submensaje.

Argumentos
message_type
Tipo de mensaje del campo. Debe ser una subclase de Message.
number
Número del campo. Debe ser exclusivo en cada clase de mensaje.
required=False
Indica si este campo es obligatorio o no. Es mutuamente exclusivo con el argumento repeated. No especifiques repeated=True si usas required=True.
repeated=False
Indica si este campo se repite o no. Es mutuamente exclusivo con el argumento required. No especifiques required=True si usas repeated=True.

Genera un error FieldDefinitionError si message_type no es válido.

Clase Property

La clase MessageField proporciona las siguientes propiedades:

type
El tipo de Python que se usa para los valores de este campo. Por ejemplo, en el caso de DateTimeField, type es datetime.datetime. En el caso de los MessageFields definidos por el usuario, type es el tipo de mensaje especificado.
message_type
Tipo de mensaje subyacente utilizado para la serialización. En concreto, es el tipo que puedes almacenar en una instancia de una clase Message. Por ejemplo, en el caso de DateTimeField, el tipo será message_types.DateTimeMessage. En el caso de los campos de mensajes normales, será la subclase de mensaje protorpc. Por ejemplo:
class Sub(messages.Message):
  x = messages.IntegerField(1)

class M(messages.Message):
  sub = messages.MessageField(Sub, 1)
  dt = message_types.DateTimeField(2)

print 'M.sub.type         =', M.sub.type
print 'M.sub.message_type =', M.sub.message_type
print 'M.dt.type          =', M.dt.type
print 'M.dt.message_type  =', M.dt.message_type


=== output ===
M.sub.type                 = <class '__main__.Sub>
M.sub.message_type = <class '__main__.Sub'>
M.dt.type                   = <type 'datetime.datetime'>
M.dt.message_type   = <class 'protorpc.message_types.DateTimeMessage'>