Guest User

Untitled

a guest
Nov 17th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.79 KB | None | 0 0
  1. defmodule EOD.Network.Packet do
  2. defstruct id: nil,
  3. size: 0,
  4. session_id: 0,
  5. parameter: 0,
  6. sequence: 0,
  7. data: "",
  8. check: 0,
  9. type: nil
  10.  
  11. @valid_types [:tcp, :udp]
  12.  
  13. @packet_ids [
  14. init_handshake: 0xF4
  15. ]
  16.  
  17. def load_tcp(packet) when is_binary(packet), do: load(:tcp, packet)
  18.  
  19. def load(type, <<size::16, seq::16, sess::16, param::16, id::16, rem::binary>>)
  20. when byte_size(rem) - 2 == size and type in @valid_types do
  21. %__MODULE__{
  22. id: id, size: size, session_id: sess, parameter: param,
  23. sequence: seq, data: binary_part(rem, 0, size),
  24. check: binary_part(rem, size, -2), type: type}
  25. end
  26.  
  27. def load(type, data) when is_binary(data) do
  28. %__MODULE__{id: :unknown, data: data, type: type}
  29. end
  30. end
Add Comment
Please, Sign In to add comment