Passed
Push — master ( 8a631f...a79a09 )
by Zoilo
01:53
created

MemoryTransactionPool::findFinishedAndDelete()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 15
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 7
c 0
b 0
f 0
nc 3
nop 0
dl 0
loc 15
rs 10
1
<?php
2
3
namespace ZoiloMora\ElasticAPM\Pool\Memory;
4
5
use ZoiloMora\ElasticAPM\Events\Transaction\Transaction;
6
use ZoiloMora\ElasticAPM\Pool\TransactionPool;
7
8
final class MemoryTransactionPool extends MemoryPool implements TransactionPool
9
{
10
    /**
11
     * @param Transaction $item
12
     *
13
     * @return void
14
     */
15
    public function put(Transaction $item)
16
    {
17
        $this->items[] = $item;
18
    }
19
20
    /**
21
     * @return Transaction[]
22
     */
23
    public function findFinishedAndDelete()
24
    {
25
        $result = [];
26
27
        /** @var Transaction $item */
28
        foreach ($this->items as $key => $item) {
29
            if (false === $item->isFinished()) {
30
                continue;
31
            }
32
33
            $result[] = $item;
34
            unset($this->items[$key]);
35
        }
36
37
        return $result;
38
    }
39
40
    /**
41
     * @return Transaction|null
42
     */
43
    public function findLastUnfinished()
44
    {
45
        $items = array_reverse($this->items);
46
47
        /** @var Transaction $item */
48
        foreach ($items as $item) {
49
            if (true === $item->isFinished()) {
50
                continue;
51
            }
52
53
            return $item;
54
        }
55
56
        return null;
57
    }
58
}
59