anchor.diff:               MessageId:?UINT,
                UserTime:?USHORT,
                UserId:?UINT,
  -             Message/binary>> = Data,
  +             Message/binary>>,
              UdpSocket, Ip, Port) ->
     MessageType = get_message_type(Flags band 7),
  -  Metadata = #metadata{messageId = MessageId,
  -                       userTime = UserTime,
  -                       userId = UserId,
  +  Metadata = #metadata{message_id = MessageId,
  +                       user_time = UserTime,
  +                       user_id = UserId,
                          socket = UdpSocket,
                          ip = Ip,
                          port = Port},
  
positive.code:   ok.
  
  %% PING
  handle_message(ping, _Ignored, Metadata = #metadata{messageId = MessageId,
                                                      userTime  = UserTime}) ->
    Flags = set_flags([ping, success]),
    send(<<Flags:?UCHAR,
           MessageId:?UINT,
           UserTime:?USHORT>>,
         Metadata);
  %% INFO REQUESTS
  handle_message(info, <<>>, Metadata = #metadata{messageId = MessageId,
                                                  userTime  = UserTime}) ->
    AllGames =
      [spts_games:to_binary(Game, reduced) || Game <- spts_core:all_games()],
  
  
negative.code: -record(state, {socket :: port()}).
  -type state() :: #state{}.
  
  -record(metadata, {message_id     = 0 :: integer(),
                     user_time      = 0 :: integer(),
                     user_id        = 0 :: integer(),
                     socket = undefined :: port() | undefined,
                     ip     = undefined :: inet:ip_address() | undefined,
                     port   = undefined :: integer() | undefined}).
  