GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

EventQueueEmptyEventHandler.__queue_handler()   C
last analyzed

Complexity

Conditions 7

Size

Total Lines 35

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 56

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 7
c 1
b 0
f 0
dl 0
loc 35
ccs 0
cts 18
cp 0
crap 56
rs 5.5
1
"""
2
Enarksh
3
4
Copyright 2013-2016 Set Based IT Consultancy
5
6
Licence MIT
7
"""
8
import functools
9
10
from enarksh.DataLayer import DataLayer
11
12
13
class EventQueueEmptyEventHandler:
14
    """
15
    An event handler for an empty event queue.
16
    """
17
18
    # ------------------------------------------------------------------------------------------------------------------
19
    @staticmethod
20
    def queue_compare(schedule1, schedule2):
21
        """
22
        Compares two schedules for sorting queued nodes.
23
24
        :param enarksh.controller.Schedule.Schedule schedule1: Schedule 1.
25
        :param enarksh.controller.Schedule.Schedule schedule2: Schedule 2.
26
27
        :rtype:
28
        """
29
        return schedule1.get_schedule_load() - schedule2.get_schedule_load()
30
31
    # ------------------------------------------------------------------------------------------------------------------
32
    @staticmethod
33
    def __queue_handler(controller):
34
        """
35
        Starts a node that is queued and for which there are enough resources available.
36
37
        :param enarksh.controller.Controller.Controller controller: The controller.
38
        """
39
        # Return immediately if there are no loaded schedules.
40
        if not controller.schedules:
41
            return
42
43
        start = False
44
        schedules = sorted(controller.schedules.values(),
45
                           key=functools.cmp_to_key(EventQueueEmptyEventHandler.queue_compare))
46
        for schedule in schedules:
47
            queue = schedule.get_queue()
48
            for node in queue:
49
                # Inquire if there are enough resources available for the node.
50
                start = node.inquire_resources()
51
                if start:
52
                    span_job = node.start()
53
54
                    # If required send a message to the spanner.
55
                    if span_job:
56
                        message = node.get_start_message(schedule.sch_id)
57
                        controller.message_controller.send_message('spawner', message)
58
                    else:
59
                        node.stop(0)
60
61
                    # If a node has been started leave inner loop.
62
                    break
63
64
            # If a node has been started leave the outer loop.
65
            if start:
66
                break
67
68
    # ------------------------------------------------------------------------------------------------------------------
69
    @staticmethod
70
    def handle(_event, _event_data, controller):
71
        """
72
        Handles an empty event queue event.
73
74
        :param  _event: The event.
75
        :param * _event_data: Not used.
76
        :param enarksh.controller.Controller.Controller controller: The controller.
77
        """
78
        del _event, _event_data
79
80
        # Try the start nodes.
81
        EventQueueEmptyEventHandler.__queue_handler(controller)
82
83
        DataLayer.commit()
84
        DataLayer.disconnect()
85
86
        # If event queue is empty listen for new messages.
87
        if controller.event_controller.queue_size() == 0:
88
            controller.message_controller.receive_message(None, None, None)
89
90
        DataLayer.connect()
91
        DataLayer.start_transaction()
92
93
# ----------------------------------------------------------------------------------------------------------------------
94