Message-class {RProtoBuf} | R Documentation |
Class "Message"
Description
R representation of protocol buffer messages. This is a thin wrapper
around the Message
c++ class that holds the actual message
as an external pointer.
Objects from the Class
Objects are typically created by the new
function invoked
on a Descriptor object.
Slots
pointer
:external pointer to the c++
Message
objecttype
:fully qualified name of the message type
Methods
- as.character
signature(x = "Message")
: returns the debug string of the message. This is built from a call to theDebugString
method of theMessage
object- toString
signature(x = "Message")
: same asas.character
- toTextFormat
signature(x = "Message")
: returns the TextFormat of the message. This is built from a call toTextFormat::PrintToString
with theMessage
object- toDebugString
signature(x = "Message")
: same asas.character
- toJSON
signature(x = "Message")
: returns the JSON representation of the message. This is built from a call to thegoogle::protobuf::util::MessageToJsonString
method and accepts two argumentspreserve_proto_field_names
- if FALSE (the default) convert field names to camelCasealways_print_primitive_fields
- whether to return the default value for missing primitive fields (default false)- $<-
signature(x = "Message")
: set the value of a field of the message.- $
signature(x = "Message")
: gets the value of a field. Primitive types are brought back to R as R objects of the closest matching R type. Messages are brought back as instances of theMessage
class.- [[
signature(x = "Message")
: extracts a field identified by its name or declared tag number- [[<-
signature(x = "Message")
: replace the value of a field identified by its name or declared tag number- serialize
signature(object = "Message")
: serialize a message. If the "connection" argument isNULL
, the payload of the message is returned as a raw vector, if the "connection" argument is a binary writable connection, the payload is written into the connection. If "connection" is a character vector, the message is sent to the file (in binary format).- show
signature(object = "Message")
: displays a short text about the message- update
signature(object = "Message")
: set several fields of the message at once- length
signature(x = "Message")
: The number of fields actually contained in the message. A field counts in these two situations: the field is repeated and the field size is greater than 0, the field is not repeated and the message has the field.- setExtension
signature(object = "Message")
: set an extension field of the Message.- getExtension
signature(object = "Message")
: get the value of an extension field of the Message.- str
signature(object = "Message")
: displays the structure of the message- identical
signature(x = "Message", y = "Message")
: Test if two messages are exactly identical- ==
signature(e1 = "Message", e2 = "Message")
: Same asidentical
- !=
signature(e1 = "Message", e2 = "Message")
: Negation ofidentical
- all.equal
signature(e1 = "Message", e2 = "Message")
: Test near equality- names
signature(x = "Message")
: extracts the names of the message.
Author(s)
Romain Francois <francoisromain@free.fr>
References
The Message
class from the C++ proto library.
See Also
P
creates objects of class Descriptor that
can be used to create messages.
Examples
## Not run:
# example proto file supplied with this package
proto.file <- system.file( "proto", "addressbook.proto", package = "RProtoBuf" )
# reading a proto file and creating the descriptor
Person <- P( "tutorial.Person", file = proto.file )
## End(Not run)
PhoneNumber <- P( "tutorial.Person.PhoneNumber" )
# creating a prototype message from the descriptor
p <- new( Person )
p$email # not set, returns default value
p$id # not set, returns default value
as.character( p ) # empty
has( p, "email" ) # is the "email" field set
has( p, "phone" ) # is the "email" field set
length( p ) # number of fields actually set
# update several fields at once
romain <- update( new( Person ),
email = "francoisromain@free.fr",
id = 1,
name = "Romain Francois",
phone = new( PhoneNumber , number = "+33(0)...", type = "MOBILE" )
)
# supply parameters to the constructor
dirk <- new( Person,
email = "edd@debian.org",
id = 2,
name = "Dirk Eddelbuettel" )
# update the phone repeated field with a list of PhoneNumber messages
dirk$phone <- list(
new( PhoneNumber , number = "+01...", type = "MOBILE" ),
new( PhoneNumber , number = "+01...", type = "HOME" ) )
# with/within style
saptarshi <- within( new(Person), {
id <- 3
name <- "Saptarshi Guha"
email <- "saptarshi.guha@gmail.com"
} )
# make an addressbook
book <- new( tutorial.AddressBook, person = list( romain, dirk, saptarshi ) )
# serialize the message to a file
tf <- tempfile( )
serialize( book, tf )
# the payload of the message
serialize( book, NULL )
# read the file into a new message
m <- tutorial.AddressBook$read( tf )
writeLines( as.character( m ) )
sapply( m$person, function(p) p$name )