Module: SessionManagementMethods
- Included in:
- StoryTeller::IO::Session
- Defined in:
- lib/story_teller/session.rb
Overview
The SessionManagementMethods module
Defined Under Namespace
Classes: Registry
Constant Summary collapse
Instance Method Summary collapse
- #[](channel) ⇒ Object
- #[]=(channel, session) ⇒ Object
- #add_promiscuous_states(*states) ⇒ Object
- #channels ⇒ Object
- #get(channel) ⇒ Object
- #include?(channel) ⇒ Boolean
- #of(obj) ⇒ Object
- #players ⇒ Object
- #register(channel, session) ⇒ Object
- #register_player(player, session) ⇒ Object
- #release_player(player, session = nil) ⇒ Object
- #sessions_by_channel ⇒ Object
- #sessions_by_player ⇒ Object
- #unregister(channel) ⇒ Object
Instance Method Details
#[](channel) ⇒ Object
84 85 86 |
# File 'lib/story_teller/session.rb', line 84 def [](channel) sessions_by_channel[channel] end |
#[]=(channel, session) ⇒ Object
88 89 90 |
# File 'lib/story_teller/session.rb', line 88 def []=(channel, session) sessions_by_channel[channel] = session end |
#add_promiscuous_states(*states) ⇒ Object
28 29 30 |
# File 'lib/story_teller/session.rb', line 28 def add_promiscuous_states(*states) Promiscuous.merge states.flatten end |
#channels ⇒ Object
80 81 82 |
# File 'lib/story_teller/session.rb', line 80 def channels sessions_by_channel.keys end |
#get(channel) ⇒ Object
96 97 98 |
# File 'lib/story_teller/session.rb', line 96 def get(channel) sessions_by_channel[channel] ||= new(channel) end |
#include?(channel) ⇒ Boolean
92 93 94 |
# File 'lib/story_teller/session.rb', line 92 def include?(channel) sessions_by_channel.include?(channel) end |
#of(obj) ⇒ Object
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/story_teller/session.rb', line 65 def of(obj) return nil if obj.nil? return obj if obj.is_a?(self) sessions_by_channel[obj] || sessions_by_player[obj] || session_for_method(obj, :player) || session_for_method(obj, :selfobj) || session_for_ivar(obj, :@player) end |
#players ⇒ Object
76 77 78 |
# File 'lib/story_teller/session.rb', line 76 def players sessions_by_player.keys end |
#register(channel, session) ⇒ Object
40 41 42 43 44 |
# File 'lib/story_teller/session.rb', line 40 def register(channel, session) sessions_by_channel[channel] = session session.channel = channel if session.respond_to?(:channel=) session end |
#register_player(player, session) ⇒ Object
46 47 48 49 |
# File 'lib/story_teller/session.rb', line 46 def register_player(player, session) sessions_by_player[player] = session session end |
#release_player(player, session = nil) ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/story_teller/session.rb', line 57 def release_player(player, session = nil) return nil if player.nil? return sessions_by_player.delete(player) if session.nil? return sessions_by_player.delete(player) if sessions_by_player[player].equal?(session) nil end |
#sessions_by_channel ⇒ Object
32 33 34 |
# File 'lib/story_teller/session.rb', line 32 def sessions_by_channel SessionsByChannel end |
#sessions_by_player ⇒ Object
36 37 38 |
# File 'lib/story_teller/session.rb', line 36 def sessions_by_player SessionsByPlayer end |
#unregister(channel) ⇒ Object
51 52 53 54 55 |
# File 'lib/story_teller/session.rb', line 51 def unregister(channel) session = sessions_by_channel.delete(channel) sessions_by_player.delete_if { |_player, candidate| candidate.equal?(session) } session end |