cengal.io.asock_io.versions.v_1.recv_buff_size_computer.recv_buff_size_computer__python

Module Docstring Docstrings: http://www.python.org/dev/peps/pep-0257/

 1#!/usr/bin/env python
 2# coding=utf-8
 3
 4# Copyright © 2012-2024 ButenkoMS. All rights reserved. Contacts: <gtalk@butenkoms.space>
 5# 
 6# Licensed under the Apache License, Version 2.0 (the "License");
 7# you may not use this file except in compliance with the License.
 8# You may obtain a copy of the License at
 9# 
10#     http://www.apache.org/licenses/LICENSE-2.0
11# 
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS,
14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15# See the License for the specific language governing permissions and
16# limitations under the License.
17
18"""
19Module Docstring
20Docstrings: http://www.python.org/dev/peps/pep-0257/
21"""
22
23__author__ = "ButenkoMS <gtalk@butenkoms.space>"
24__copyright__ = "Copyright © 2012-2024 ButenkoMS. All rights reserved. Contacts: <gtalk@butenkoms.space>"
25__credits__ = ["ButenkoMS <gtalk@butenkoms.space>", ]
26__license__ = "Apache License, Version 2.0"
27__version__ = "4.4.1"
28__maintainer__ = "ButenkoMS <gtalk@butenkoms.space>"
29__email__ = "gtalk@butenkoms.space"
30# __status__ = "Prototype"
31__status__ = "Development"
32# __status__ = "Production"
33
34
35class RecvBuffSizeComputer:
36    def __init__(self):
37        self.min_recv_buff_size = 1024
38        self.max_recv_buff_size = 1024 * 1024 * 10
39        self.recv_buff_size = self.min_recv_buff_size
40        self._last_recv_amount = 0
41        self._previous_recv_amount = 0
42
43    def calc_new_recv_buff_size(self, last_recv_amount):
44        biggest_recv_amount = 0
45        new_amount = 0
46
47        # moving resv amounts on list
48        self._previous_recv_amount = self._last_recv_amount
49        self._last_recv_amount = last_recv_amount
50
51        new_amount = self.recv_buff_size
52        if (self._last_recv_amount >= self.recv_buff_size) \
53                and (self._previous_recv_amount >= self.recv_buff_size):
54            new_amount = self.recv_buff_size << 2
55        elif (self._last_recv_amount >= self.recv_buff_size) \
56                and (self._previous_recv_amount < self.recv_buff_size):
57            new_amount = self.recv_buff_size << 1
58        elif (self._last_recv_amount < self.recv_buff_size) \
59                and (self._previous_recv_amount >= self.recv_buff_size):
60            new_amount = self.recv_buff_size
61        elif (self._last_recv_amount < self.recv_buff_size) \
62                and (self._previous_recv_amount < self.recv_buff_size):
63            # new_amount = max(self._last_recv_amounts_list) * 1.5
64            if self._last_recv_amount > self._previous_recv_amount:
65                biggest_recv_amount = self._last_recv_amount
66            else:
67                biggest_recv_amount = self._previous_recv_amount
68            new_amount = biggest_recv_amount + (biggest_recv_amount >> 1)
69
70        if new_amount < self.min_recv_buff_size:
71            self.recv_buff_size = self.min_recv_buff_size
72        elif new_amount > self.max_recv_buff_size:
73            self.recv_buff_size = self.max_recv_buff_size
74        else:
75            self.recv_buff_size = new_amount
76
77        return self.recv_buff_size
class RecvBuffSizeComputer:
36class RecvBuffSizeComputer:
37    def __init__(self):
38        self.min_recv_buff_size = 1024
39        self.max_recv_buff_size = 1024 * 1024 * 10
40        self.recv_buff_size = self.min_recv_buff_size
41        self._last_recv_amount = 0
42        self._previous_recv_amount = 0
43
44    def calc_new_recv_buff_size(self, last_recv_amount):
45        biggest_recv_amount = 0
46        new_amount = 0
47
48        # moving resv amounts on list
49        self._previous_recv_amount = self._last_recv_amount
50        self._last_recv_amount = last_recv_amount
51
52        new_amount = self.recv_buff_size
53        if (self._last_recv_amount >= self.recv_buff_size) \
54                and (self._previous_recv_amount >= self.recv_buff_size):
55            new_amount = self.recv_buff_size << 2
56        elif (self._last_recv_amount >= self.recv_buff_size) \
57                and (self._previous_recv_amount < self.recv_buff_size):
58            new_amount = self.recv_buff_size << 1
59        elif (self._last_recv_amount < self.recv_buff_size) \
60                and (self._previous_recv_amount >= self.recv_buff_size):
61            new_amount = self.recv_buff_size
62        elif (self._last_recv_amount < self.recv_buff_size) \
63                and (self._previous_recv_amount < self.recv_buff_size):
64            # new_amount = max(self._last_recv_amounts_list) * 1.5
65            if self._last_recv_amount > self._previous_recv_amount:
66                biggest_recv_amount = self._last_recv_amount
67            else:
68                biggest_recv_amount = self._previous_recv_amount
69            new_amount = biggest_recv_amount + (biggest_recv_amount >> 1)
70
71        if new_amount < self.min_recv_buff_size:
72            self.recv_buff_size = self.min_recv_buff_size
73        elif new_amount > self.max_recv_buff_size:
74            self.recv_buff_size = self.max_recv_buff_size
75        else:
76            self.recv_buff_size = new_amount
77
78        return self.recv_buff_size
min_recv_buff_size
max_recv_buff_size
recv_buff_size
def calc_new_recv_buff_size(self, last_recv_amount):
44    def calc_new_recv_buff_size(self, last_recv_amount):
45        biggest_recv_amount = 0
46        new_amount = 0
47
48        # moving resv amounts on list
49        self._previous_recv_amount = self._last_recv_amount
50        self._last_recv_amount = last_recv_amount
51
52        new_amount = self.recv_buff_size
53        if (self._last_recv_amount >= self.recv_buff_size) \
54                and (self._previous_recv_amount >= self.recv_buff_size):
55            new_amount = self.recv_buff_size << 2
56        elif (self._last_recv_amount >= self.recv_buff_size) \
57                and (self._previous_recv_amount < self.recv_buff_size):
58            new_amount = self.recv_buff_size << 1
59        elif (self._last_recv_amount < self.recv_buff_size) \
60                and (self._previous_recv_amount >= self.recv_buff_size):
61            new_amount = self.recv_buff_size
62        elif (self._last_recv_amount < self.recv_buff_size) \
63                and (self._previous_recv_amount < self.recv_buff_size):
64            # new_amount = max(self._last_recv_amounts_list) * 1.5
65            if self._last_recv_amount > self._previous_recv_amount:
66                biggest_recv_amount = self._last_recv_amount
67            else:
68                biggest_recv_amount = self._previous_recv_amount
69            new_amount = biggest_recv_amount + (biggest_recv_amount >> 1)
70
71        if new_amount < self.min_recv_buff_size:
72            self.recv_buff_size = self.min_recv_buff_size
73        elif new_amount > self.max_recv_buff_size:
74            self.recv_buff_size = self.max_recv_buff_size
75        else:
76            self.recv_buff_size = new_amount
77
78        return self.recv_buff_size