Class: Murmur::API::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/murmur/server.rb

Instance Method Summary collapse

Constructor Details

#initialize(host, meta, options) ⇒ Server

Returns a new instance of Server.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/murmur/server.rb', line 8

def initialize(host, meta, options)
    @host = host
    @meta = meta

    if !options[:id] and !options[:interface]
        options.delete :id
        options.delete :interface

        server = @host.new_server_interface

        @interface = host.add_proxy_router(server)

        options.each do |key, value|
            setConf(key, value)
        end
    end

    @interface = @interface || options[:interface] || begin
    server = @meta.getServer(options[:id])
    raise ::Murmur::Ice::InvalidServerException if server.nil?
    host.add_proxy_router(server)
    end

    @channels = {}
    @users = {}
    @registered_users = {}
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object



124
125
126
127
128
# File 'lib/murmur/server.rb', line 124

def method_missing(method, *args)
    method = method.to_s
    method.gsub!(/_([a-z])/) { $1.upcase }
    ret = @interface.send method, *args
end

Instance Method Details

#[](key) ⇒ Object



104
105
106
107
# File 'lib/murmur/server.rb', line 104

def [](key)
    key = key.to_s
    config[key]
end

#[]=(key, val) ⇒ Object



109
110
111
112
113
# File 'lib/murmur/server.rb', line 109

def []=(key, val)
    key - key.to_s
    @interface.setConf(key, val.to_s)
    @config = nil
end

#channel(id) ⇒ Object



44
45
46
47
48
# File 'lib/murmur/server.rb', line 44

def channel(id)
    channels

    @channels[id]
end

#channelsObject



50
51
52
53
54
55
56
# File 'lib/murmur/server.rb', line 50

def channels
    @channels = {}
    @interface.getChannels.each do |_, channel|
        @channels[channel.id] = Channel.new(@host, @meta, self, channel)
    end
    @channels
end

#configObject



80
81
82
# File 'lib/murmur/server.rb', line 80

def config
    @config = @meta.getDefaultConf.merge(@interface.getAllConf)
end

#destroy!Object Also known as: delete



84
85
86
87
88
# File 'lib/murmur/server.rb', line 84

def destroy!
    @interface.stop if running?
    @host.uncache_server id
    @interface.delete
end

#idObject



36
37
38
# File 'lib/murmur/server.rb', line 36

def id
    @interface.id
end

#rawObject



120
121
122
# File 'lib/murmur/server.rb', line 120

def raw
    @interface
end

#registered_usersObject



66
67
68
69
70
71
72
# File 'lib/murmur/server.rb', line 66

def registered_users
    @registered_users = {}
    @interface.getRegisteredUsers.each do |_, user|
        @registered_users[user.session] = User.new(@host, @meta, self, user)
    end
    @registered_users
end

#restart!Object



99
100
101
102
# File 'lib/murmur/server.rb', line 99

def restart!
    @interface.stop if running?
    @interface.start
end

#running?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/murmur/server.rb', line 40

def running?
    @interface.isRunning
end

#setConf(key, val) ⇒ Object



115
116
117
118
# File 'lib/murmur/server.rb', line 115

def setConf(key, val)
    key = key.to_s
    self[key] = val
end

#start!Object



91
92
93
# File 'lib/murmur/server.rb', line 91

def start!
    @interface.start unless running?
end

#stop!Object



95
96
97
# File 'lib/murmur/server.rb', line 95

def stop!
    @interface.stop if running?
end

#user(session) ⇒ Object



74
75
76
77
78
# File 'lib/murmur/server.rb', line 74

def user(session)
    users

    @users[:session]
end

#usersObject



58
59
60
61
62
63
64
# File 'lib/murmur/server.rb', line 58

def users
    @users = {}
    @interface.getUsers.each do |_, user|
        @users[user.session] = User.new(@host, @meta, self, user)
    end
    @users
end