From c8f6a27e6b27ed5d51cf6c8da5ec080b9952fa99 Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Sun, 12 Aug 2018 19:23:26 -0700 Subject: Enforced that upb_msg lives in an Arena only, and other simplifying. upb_msg was trying to be general enough that it could either live in an arena or be allocated with malloc()/free(). This was too much complexity for too little benefit. We should commit to just saying that upb_msg is arena-only. I also ripped out the code to glue upb_msg to the existing handlers-based encoder/decoder. upb_msg has its own, small, simple encoder/decoder. I'm trying to whittle down upb_msg to a small and simple core. I updated the Lua extension for these changes. Lua needs some more work to properly create arenas per message. For now I just created a single global arena. --- tests/bindings/lua/test_upb.pb.lua | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) (limited to 'tests') diff --git a/tests/bindings/lua/test_upb.pb.lua b/tests/bindings/lua/test_upb.pb.lua index 106dc55..752a736 100644 --- a/tests/bindings/lua/test_upb.pb.lua +++ b/tests/bindings/lua/test_upb.pb.lua @@ -27,25 +27,13 @@ local symtab = upb.SymbolTable{ local factory = upb.MessageFactory(symtab); local TestMessage = factory:get_message_class("TestMessage") -function test_decodermethod() - local decoder = pb.MakeStringToMessageDecoder(TestMessage) - - assert_error( - function() - -- Needs at least one argument to construct. - pb.MakeStringToMessageDecoder() - end) -end - function test_parse_primitive() local binary_pb = "\008\128\128\128\128\002\016\128\128\128\128\004\024\128\128" .. "\128\128\128\128\128\002\032\128\128\128\128\128\128\128\001\041\000" .. "\000\000\000\000\000\248\063\053\000\000\096\064\056\001" - local decoder = pb.MakeStringToMessageDecoder(TestMessage) - local encoder = pb.MakeMessageToStringEncoder(TestMessage) - collectgarbage() -- ensure encoder/decoder GC-anchor what they need. - local msg = decoder(binary_pb) + local msg = TestMessage() + pb.decode(msg, binary_pb) assert_equal(536870912, msg.i32) assert_equal(1073741824, msg.u32) assert_equal(1125899906842624, msg.i64) @@ -54,8 +42,9 @@ function test_parse_primitive() assert_equal(3.5, msg.flt) assert_equal(true, msg.bool) - local encoded = encoder(msg) - local msg2 = decoder(encoded) + local encoded = pb.encode(msg) + local msg2 = TestMessage() + pb.decode(msg2, encoded) assert_equal(536870912, msg.i32) assert_equal(1073741824, msg.u32) assert_equal(1125899906842624, msg.i64) @@ -77,8 +66,8 @@ function test_parse_string() local TestMessage = factory:get_message_class("TestMessage") local binary_pb = "\010\005Hello" - local decoder = pb.MakeStringToMessageDecoder(TestMessage) - msg = decoder(binary_pb) + msg = TestMessage() + pb.decode(msg, binary_pb) assert_equal("Hello", msg.str) end -- cgit v1.2.3