Passed
Push — master ( eae794...0c0002 )
by Dave
01:18
created

backend.doflow_handlemessages.is_queue_match()   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 2
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
'''handles messages in a loop'''
2
from helpers.queuehelper import QueueName
3
from backend.when_discovered import dodiscovered
4
from backend.when_alert import doalert
5
from backend.when_provision import doprovision
6
from backend.when_monitorminer import domonitorminer
7
from backend.when_runrules import dorules
8
from backend.when_offline import dooffline
9
from backend.when_online import doonline
10
from backend.when_restart import dorestart
11
12
#def is_queue_match(queue_name, queue_enum):
13
#    return queue_name == queue_enum or queue_name == QueueName.value(queue_enum)
14
15
def dispatchmessages(mainapp, entries):
16
    '''process the messages'''
17
    if entries is None:
18
        return
19
20
    dispatch_table = {
21
        QueueName.value(QueueName.Q_DISCOVERED): run_discovered,
22
        QueueName.value(QueueName.Q_ALERT): run_alert,
23
        QueueName.value(QueueName.Q_PROVISION): run_provision,
24
        QueueName.value(QueueName.Q_MONITORMINER): run_monitorminer,
25
        QueueName.value(QueueName.Q_STATISTICSUPDATED): run_statsupdated,
26
        QueueName.value(QueueName.Q_OFFLINE): run_offline,
27
        QueueName.value(QueueName.Q_ONLINE): run_online,
28
        QueueName.value(QueueName.Q_RESTART): run_restart,
29
        }
30
31
    for entry in entries.entries:
32
        run_method = dispatch_table[QueueName.value(entry.queuename)]
33
        if run_method:
34
            run_method(mainapp, entry)
35
        else:
36
            print('{0} is not handled'.format(entry.queuename))
37
38
def run_alert(mainapp, entry):
39
    doalert(entry.message)
40
41
def run_discovered(mainapp, entry):
42
    miner = mainapp.messagedecodeminer(entry.message)
43
    more = dodiscovered(miner)
44
    dispatchmessages(mainapp, more)
45
46
def run_provision(mainapp, entry):
47
    miner = mainapp.messagedecodeminer(entry.message)
48
    more = doprovision(miner)
49
    dispatchmessages(mainapp, more)
50
51
def run_monitorminer(mainapp, entry):
52
    miner = mainapp.messagedecodeminer(entry.message)
53
    more = domonitorminer(miner)
54
    dispatchmessages(mainapp, more)
55
56
def run_statsupdated(mainapp, entry):
57
    msg = mainapp.messagedecodeminerstats(entry.message)
58
    more = dorules(msg.miner, msg.minerstats, msg.minerpool)
59
    dispatchmessages(mainapp, more)
60
61
def run_offline(mainapp, entry):
62
    miner = mainapp.messagedecodeminer(entry.message)
63
    more = dooffline(miner)
64
    dispatchmessages(mainapp, more)
65
66
def run_online(mainapp, entry):
67
    miner = mainapp.messagedecodeminer(entry.message)
68
    more = doonline(miner)
69
    dispatchmessages(mainapp, more)
70
71
def run_restart(mainapp, entry):
72
    minermsg = mainapp.messagedecodeminercommand(entry.message)
73
    dorestart(minermsg.miner, minermsg.command)
74