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



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
# 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 = {}
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object



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

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



87
88
89
90
# File 'lib/murmur/server.rb', line 87

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

#[]=(key, val) ⇒ Object



92
93
94
95
96
# File 'lib/murmur/server.rb', line 92

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

#channel(id) ⇒ Object



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

def channel(id)
    channels

    @channels[id]
end

#channelsObject



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

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

#configObject



71
72
73
# File 'lib/murmur/server.rb', line 71

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

#destroy!Object Also known as: delete



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

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

#idObject



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

def id
    @interface.id
end

#restart!Object



82
83
84
85
# File 'lib/murmur/server.rb', line 82

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

#running?Boolean



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

def running?
    @interface.isRunning
end

#setConf(key, val) ⇒ Object



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

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

#user(session) ⇒ Object



65
66
67
68
69
# File 'lib/murmur/server.rb', line 65

def user(session)
    users

    @users[:session]
end

#usersObject



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

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