[svn] commit: r314 - /branches/parkinglot/src/lib/cc/ruby/lib/cc/message.rb

BIND 10 source code commits bind10-changes at lists.isc.org
Fri Nov 20 14:06:43 UTC 2009


Author: jelte
Date: Fri Nov 20 14:06:42 2009
New Revision: 314

Log:
bool type in ruby cc

Modified:
    branches/parkinglot/src/lib/cc/ruby/lib/cc/message.rb

Modified: branches/parkinglot/src/lib/cc/ruby/lib/cc/message.rb
==============================================================================
--- branches/parkinglot/src/lib/cc/ruby/lib/cc/message.rb (original)
+++ branches/parkinglot/src/lib/cc/ruby/lib/cc/message.rb Fri Nov 20 14:06:42 2009
@@ -25,6 +25,7 @@
   ITEM_HASH = 0x02
   ITEM_LIST = 0x03
   ITEM_NULL = 0x04
+  ITEM_BOOL = 0x05
   ITEM_UTF8 = 0x08
   ITEM_MASK = 0x0f
 
@@ -107,6 +108,10 @@
     encode_length_and_type(str.to_s.encode('binary'), ITEM_UTF8)
   end
 
+  def self.pack_bool(bool)
+    encode_length_and_type(encode_bool(bool), ITEM_BOOL)
+  end
+
   def self.pack_blob(str)
     encode_length_and_type(str.to_s, ITEM_BLOB)
   end
@@ -145,6 +150,10 @@
       else
         ret = pack_blob(item)
       end
+    when false
+      ret = pack_bool(item)
+    when true
+      ret = pack_bool(item)
     else
       ret = pack_blob(item.to_s)
     end
@@ -163,6 +172,18 @@
     end
     buffer
   end
+
+  def self.encode_bool(msg)
+    unless msg.class == FalseClass or msg.class == TrueClass
+      raise ArgumentError, "Should be a true or false"
+    end
+    if msg
+      [0x01].pack("C")
+    else
+      [0x00].pack("C")
+    end
+  end
+    
 
   def self.encode_array(msg)
     unless msg.is_a?Array
@@ -226,6 +247,8 @@
       value = item
     when ITEM_UTF8
       value = item.encode('utf-8')
+    when ITEM_BOOL
+      value = decode_bool(item)
     when ITEM_HASH
       value = decode_hash(item)
     when ITEM_LIST
@@ -239,6 +262,10 @@
     [value, msg]
   end
 
+  def self.decode_bool(msg)
+    return msg == [0x01].pack("C")
+  end
+    
   def self.decode_hash(msg)
     ret = {}
     while msg.length > 0
@@ -269,7 +296,7 @@
     "to" => "recipient at host",
     "seq" => 1234,
     "data" => {
-      "list" => [ 1, 2, nil, "this" ],
+      "list" => [ 1, 2, nil, true, false, "this" ],
       "description" => "Fun for all",
     },
   }




More information about the bind10-changes mailing list