Beispiel #1
0
 def body(self):
     Template.body(self)
     message = self._message
     self.add(
         TSimple("serialize_message(Msg) when is_record(Msg, %s) ->" %
                 make_erlang_atom(message.get_name())))
     self.add(
         TSimple(""" lists:concat(["{ \\"%s\\" :  {", """ %
                 message.get_name()))
     self.add(TSimple("string:join(["))
     first = True
     #serialize fields
     for field in message.get_fields():
         if (not first):
             self.add(TSimple(","))
         first = False
         # serialize field
         self.add(
             TSimple("""lists:concat(["\\"%s\\" :", """ %
                     field.get_var_name()))
         self.add(FieldSerializersFactory().get_field_serializer(
             field, "Msg#%s.%s" % (make_erlang_atom(message.get_name()),
                                   make_erlang_atom(field.get_var_name()))))
         self.add(TSimple("])"))
     self.add(TSimple("""], ",") """))
     self.add(TSimple(""" , "}}" ]); """))
Beispiel #2
0
    def body(self):
        Template.body(self)
        for message in self._protocol.get_messages().as_list():
            logger.debug("adding template for serializating %s message" %
                         message.get_name())
            self.add(MessageSerializer(message))
        self.add(TSimple("serialize_message(Msg) -> unknown_message."))
        # helper functions
        self.add(
            TSimple("""
serialize_int(Val) -> lists:concat(['"', Val, '"']).
serialize_float(Val) -> lists:concat(['"', lists:flatten(io_lib:format("~p",[Val])), '"']).
serialize_string(Val) ->lists:concat(['"', Val, '"']).
serialize_list(Fun, Value) -> lists:concat(["[", string:join(lists:map(Fun, Value), ","), "]"]).
        """))
Beispiel #3
0
    def body(self):
        Template.body(self)
        for message in self._protocol.get_messages().as_list():
            logger.debug("adding template for deserializng message %s" %
                         message.get_name())
            self.add(MessageDeserializer(message))
        self.add(
            TSimple(
                'inner_deserialize_message(_UnknownMsgName, _MsgBody) -> unknown_message.'
            ))
        self.add(
            TSimple("""
deserialize_message(JsonMsgBody) ->
    {struct, DecodedJson} = mochijson2:decode(JsonMsgBody),
    inner_deserialize_message(DecodedJson).
inner_deserialize_message(DecodedJson) ->
    [MessageName] = proplists:get_keys(DecodedJson),
    {struct, DecodedMsgBody} = proplists:get_value(MessageName, DecodedJson),
    inner_deserialize_message(MessageName, DecodedMsgBody).

%% helper functions
deserialize_int(Data) ->
    bstring_to_int(Data).

deserialize_float(Data) ->
    bstring_to_float(Data).

deserialize_string(Data) ->
    binary_to_list(Data).

deserialize_list(Fun, List) ->
    lists:map(Fun, List).

bstring_to_int(Bstring) ->
    {Int, _Rest} = string:to_integer(binary_to_list(Bstring)),
    Int.

bstring_to_float(Bstring) ->
    {Float, _Rest} = string:to_float(binary_to_list(Bstring)),
    Float.
        """))
Beispiel #4
0
 def __init__(self, messages):
     Template.__init__(self)
     self._messages = messages
Beispiel #5
0
 def __init__(self, protocol):
     Template.__init__(self)
     self._protocol = protocol
Beispiel #6
0
 def __init__(self, field, valueName):
     Template.__init__(self)
     self._valueName = valueName
Beispiel #7
0
 def __init__(self, messages, format):
     Template.__init__(self)
     self._messages = messages
     self._format = format
     self._templates = {'json': TJsonDeserializers}
Beispiel #8
0
 def __init__(self, field, indent):
     Template.__init__(self)
     self._field = field
     self._indent = indent
Beispiel #9
0
    def runTest(self):
        tmp = Template("root")
#        tmp.add(Template("one"))
        tmp.add(Template("two"))
        tmp.generate()
Beispiel #10
0
 def __init__(self, protocol, format):
     Template.__init__(self)
     self._protocol = protocol
     self._format = format
Beispiel #11
0
 def __init__(self, proto):
     Template.__init__(self)
     self._proto = proto
Beispiel #12
0
 def __init__(self, message, indent):
     Template.__init__(self)
     self._message = message
     self._indent = indent
Beispiel #13
0
 def __init__(self, message, field):
     Template.__init__(self)
     self._message = message
     self._field = field
Beispiel #14
0
 def __init__(self, msg):
     Template.__init__(self, msg.get_name())
     self._msg = msg