* updating message_factory to account for new pb message type

This commit is contained in:
Seth Call 2012-08-26 06:35:13 -05:00
parent 5ee5b765c4
commit f83edca840
2 changed files with 35 additions and 6 deletions

View File

@ -9,6 +9,8 @@ require "jam_ruby/models/jam_session_member"
require "jam_ruby/models/user"
require "jam_ruby/models/jam_session"
include Jampb
module JamRuby
end

View File

@ -7,11 +7,22 @@ module JamRuby
SESSION_TARGET_PREFIX = "session:"
USER_TARGET_PREFIX = "user:"
def initialize()
@type_values = {}
Jampb::ClientMessage::Type.constants.each do |constant|
@type_values[Jampb::ClientMessage::Type.const_get(constant)] = constant
end
end
# given a string (bytes) payload, return a client message
def parse_client_msg(payload)
return Jampb::ClientMessage.parse(payload)
end
# create a login message using user/pass
def login_with_user_pass(username, password)
login = Jampb::Login.new(:username => username, :password => password)
@ -33,7 +44,7 @@ module JamRuby
# create a jam session login message
def login_jam_session(jam_session)
login_jam_session = Jampb::LoginJamSession.new(:jam_session => jam_session)
return Jampb::ClientMessage.new(:type => ClientMessage::Type::LOGIN_JAM_SESSION, :target => SESSION_TARGET_PREFIX + jam_session, :login_jam_session => login_jam_session)
return Jampb::ClientMessage.new(:type => ClientMessage::Type::LOGIN_JAM_SESSION, :target => SERVER_TARGET, :login_jam_session => login_jam_session)
end
# create a jam session login message ack (success or on failure)
@ -54,16 +65,28 @@ module JamRuby
return Jampb::ClientMessage.new(:type => ClientMessage::Type::LEAVE_JAM_SESSION_ACK, :target => CLIENT_TARGET, :leave_jam_session_ack => leave_jam_session_ack)
end
# create a server error
# create a server error
def server_generic_error(error_msg)
error = Jampb::ServerGenericError.new(:error_msg => error_msg)
return Jampb::ClientMessage.new(:type => ClientMessage::Type::SERVER_GENERIC_ERROR, :target => CLIENT_TARGET, :server_generic_error => error)
end
# create a user-joined session message
# create a server rejection error
def server_rejection_error(error_msg)
error = Jampb::ServerRejectionError.new(:error_msg => error_msg)
return Jampb::ClientMessage.new(:type => ClientMessage::Type::SERVER_REJECTION_ERROR, :target => CLIENT_TARGET, :server_rejection_error => error)
end
# create a user-joined session messag
def user_joined_jam_session(user_id, username)
error = Jampb::UserJoinedJamSession.new(:user_id => user_id, :username => username)
return Jampb::ClientMessage.new(:type => ClientMessage::Type::USER_JOINED_JAM_SESSION, :target => CLIENT_TARGET, :server_generic_error => error)
joined = Jampb::UserJoinedJamSession.new(:user_id => user_id, :username => username)
return Jampb::ClientMessage.new(:type => ClientMessage::Type::USER_JOINED_JAM_SESSION, :target => CLIENT_TARGET, :user_joined_jam_session => joined)
end
# create a heartbeat
def heartbeat()
heartbeat = Jampb::Heartbeat.new
return Jampb::ClientMessage.new(:type => ClientMessage::Type::HEARTBEAT, :target => SERVER_TARGET, :heartbeat => heartbeat)
end
# is this message directed to the server?
@ -83,11 +106,15 @@ module JamRuby
# is this message directed to a user?
def user_directed? msg
return msg.target.start_with? MessageFactory::USER_PREFIX_TARGET
return msg.target.start_with? MessageFactory::USER_TARGET_PREFIX
end
def extract_session(msg)
return msg.target[MessageFactory::SESSION_TARGET_PREFIX..-1]
end
def get_message_type msg
return @type_values[msg.type]
end
end
end