Module: Rubcask::Protocol

Included in:
Server::AbstractServer, Server::Client, Server::Pipeline, Server::Threaded
Defined in:
lib/rubcask/protocol.rb

Overview

Rubcask protocol is inspired by Redis, but is even simpler implementation-wise The format of response is

"#{message.byte_size}"\r\n#{message}
eg: "2\r\nOK"

The format of request it is

"#{message.byte_size}\r\n#{method}\r\n#{first_argument.byte_size}\r\n#{first_argument}
eg: "13\r\nget\r\n5\r\nlorem"

Constant Summary collapse

OK =

Success

"ok"
NIL =

Repesents no data

"nil"
ERROR =

Error message

"error"
PING =
"ping"
PONG =
"pong"
SEPARATOR =
"\r\n"

Class Method Summary collapse

Class Method Details

.create_call_message(method, *args) ⇒ String

Parameters:

  • method (String)

    Name of the method

  • args (Array<String>)

    method arguments

Returns:

  • (String)


42
43
44
45
46
47
48
49
50
51
# File 'lib/rubcask/protocol.rb', line 42

def create_call_message(method, *args)
  buffer = (+"").b
  buffer << method
  buffer << SEPARATOR
  args.each do |arg|
    buffer << encode_message(arg)
  end

  encode_message(buffer)
end

.encode_message(message) ⇒ String

Returns the provided message with the header of the start

Parameters:

  • message (String)

    Message to encode

Returns:

  • (String)


31
32
33
34
35
36
37
# File 'lib/rubcask/protocol.rb', line 31

def encode_message(message)
  buffer = (+"").b
  buffer << message.bytesize.to_s
  buffer << SEPARATOR
  buffer << message
  buffer
end

.error_messageString

Note:

This method is autogenerated

Returns Encoded “error” messege.

Returns:

  • (String)

    Encoded “error” messege.



70
# File 'lib/rubcask/protocol.rb', line 70

generate_cached_message "error"

.nil_messageString

Note:

This method is autogenerated

Returns Encoded “nil” messege.

Returns:

  • (String)

    Encoded “nil” messege.



69
# File 'lib/rubcask/protocol.rb', line 69

generate_cached_message "nil"

.ok_messageString

Note:

This method is autogenerated

Returns Encoded “ok” messege.

Returns:

  • (String)

    Encoded “ok” messege.



68
# File 'lib/rubcask/protocol.rb', line 68

generate_cached_message "ok"

.ping_messageString

Note:

This method is autogenerated

Returns Encoded “ping” messege.

Returns:

  • (String)

    Encoded “ping” messege.



71
# File 'lib/rubcask/protocol.rb', line 71

generate_cached_message "ping"

.pong_messageString

Note:

This method is autogenerated

Returns Encoded “pong” messege.

Returns:

  • (String)

    Encoded “pong” messege.



72
# File 'lib/rubcask/protocol.rb', line 72

generate_cached_message "pong"