module Google::Protobuf

Constants

Any
Api
BoolValue
BytesValue
DoubleValue
Duration
Empty
Enum
EnumValue
Field
FieldMask
FloatValue
Int32Value
Int64Value
ListValue
Method
Mixin
NullValue
Option
SourceContext
StringValue
Struct
Syntax
Timestamp
Type
UInt32Value
UInt64Value
Value

Public Class Methods

decode(klass, proto, options = {}) click to toggle source
# File lib/google/protobuf.rb, line 70
def self.decode(klass, proto, options = {})
  klass.decode(proto, options)
end
decode_json(klass, json, options = {}) click to toggle source
# File lib/google/protobuf.rb, line 74
def self.decode_json(klass, json, options = {})
  klass.decode_json(json, options)
end
Google::Protobuf.deep_copy(obj) → copy_of_obj click to toggle source

Performs a deep copy of a RepeatedField instance, a Map instance, or a message object, recursively copying its members.

VALUE Google_Protobuf_deep_copy(VALUE self, VALUE obj) {
  VALUE klass = CLASS_OF(obj);
  if (klass == cRepeatedField) {
    return RepeatedField_deep_copy(obj);
  } else if (klass == cMap) {
    return Map_deep_copy(obj);
  } else {
    VALUE new_arena_rb = Arena_new();
    upb_Arena *new_arena = Arena_get(new_arena_rb);
    const upb_MessageDef *m;
    const upb_Message *msg = Message_Get(obj, &m);
    upb_Message *new_msg = Message_deep_copy(msg, m, new_arena);
    return Message_GetRubyWrapper(new_msg, m, new_arena_rb);
  }
}
Google::Protobuf.discard_unknown(msg) click to toggle source

Discard unknown fields in the given message object and recursively discard unknown fields in submessages.

static VALUE Google_Protobuf_discard_unknown(VALUE self, VALUE msg_rb) {
  const upb_MessageDef *m;
  upb_Message *msg = Message_GetMutable(msg_rb, &m);
  if (!upb_Message_DiscardUnknown(msg, m, 128)) {
    rb_raise(rb_eRuntimeError, "Messages nested too deeply.");
  }

  return Qnil;
}
encode(msg, options = {}) click to toggle source
# File lib/google/protobuf.rb, line 62
def self.encode(msg, options = {})
  msg.to_proto(options)
end
encode_json(msg, options = {}) click to toggle source
# File lib/google/protobuf.rb, line 66
def self.encode_json(msg, options = {})
  msg.to_json(options)
end
from_a(arr) click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 233
def self.from_a(arr)
  ret = ListValue.new
  arr.each { |val| ret << val }
  ret
end
from_hash(hash) click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 193
def self.from_hash(hash)
  ret = Struct.new
  hash.each { |key, val| ret[key] = val }
  ret
end
from_ruby(value) click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 140
def self.from_ruby(value)
  self.new.from_ruby(value)
end
from_time(time) click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 85
def self.from_time(time)
  new.from_time(time)
end
pack(msg, type_url_prefix='type.googleapis.com/') click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 42
def self.pack(msg, type_url_prefix='type.googleapis.com/')
  any = self.new
  any.pack(msg, type_url_prefix)
  any
end

Public Instance Methods

<<(value) click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 219
def <<(value)
  wrapper = Google::Protobuf::Value.new
  wrapper.from_ruby(value)
  self.values << wrapper
end
[](key) click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 173
def [](key)
  self.fields[key].to_ruby
rescue NoMethodError
  nil
end
[]=(key, value) click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 179
def []=(key, value)
  unless key.is_a?(String)
    raise UnexpectedStructType, "Struct keys must be strings."
  end
  self.fields[key] ||= Google::Protobuf::Value.new
  self.fields[key].from_ruby(value)
end
each() { |to_ruby| ... } click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 225
def each
  self.values.each { |x| yield(x.to_ruby) }
end
from_ruby(value) click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 144
def from_ruby(value)
  case value
  when NilClass
    self.null_value = :NULL_VALUE
  when Numeric
    self.number_value = value
  when String
    self.string_value = value
  when TrueClass
    self.bool_value = true
  when FalseClass
    self.bool_value = false
  when Struct
    self.struct_value = value
  when Hash
    self.struct_value = Struct.from_hash(value)
  when ListValue
    self.list_value = value
  when Array
    self.list_value = ListValue.from_a(value)
  else
    raise UnexpectedStructType
  end

  self
end
from_time(time) click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 89
def from_time(time)
  self.seconds = time.to_i
  self.nanos = time.nsec
  self
end
has_key?(key) click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 199
def has_key?(key)
  self.fields.has_key?(key)
end
is(klass) click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 69
def is(klass)
  return self.type_name == klass.descriptor.name
end
length() click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 207
def length
  self.values.length
end
pack(msg, type_url_prefix='type.googleapis.com/') click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 48
def pack(msg, type_url_prefix='type.googleapis.com/')
  if type_url_prefix.empty? or type_url_prefix[-1] != '/' then
    self.type_url = "#{type_url_prefix}/#{msg.class.descriptor.name}"
  else
    self.type_url = "#{type_url_prefix}#{msg.class.descriptor.name}"
  end
  self.value = msg.to_proto
end
to_a() click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 229
def to_a
  self.values.map { |x| x.to_ruby(true) }
end
to_f() click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 99
def to_f
  self.seconds + (self.nanos.quo(1_000_000_000))
end
to_h() click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 187
def to_h
  ret = {}
  self.fields.each { |key, val| ret[key] = val.to_ruby(true) }
  ret
end
to_i() click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 95
def to_i
  self.seconds
end
to_ruby(recursive = false) click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 113
def to_ruby(recursive = false)
  case self.kind
  when :struct_value
    if recursive
      self.struct_value.to_h
    else
      self.struct_value
    end
  when :list_value
    if recursive
      self.list_value.to_a
    else
      self.list_value
    end
  when :null_value
    nil
  when :number_value
    self.number_value
  when :string_value
    self.string_value
  when :bool_value
    self.bool_value
  else
    raise UnexpectedStructType
  end
end
to_time() click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 76
def to_time
  Time.at(self.to_f)
end
type_name() click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 65
def type_name
  return self.type_url.split("/")[-1]
end
unpack(klass) click to toggle source
# File lib/google/protobuf/well_known_types.rb, line 57
def unpack(klass)
  if self.is(klass) then
    klass.decode(self.value)
  else
    nil
  end
end