示例#1
0
    def __setitem__(self, key, value):
        invalid = _validate_setting(key, value)
        if invalid:
            raise InvalidSettingsValueError("Setting %d has invalid value %d" %
                                            (key, value),
                                            error_code=invalid)

        try:
            items = self._settings[key]
        except KeyError:
            items = collections.deque([None])
            self._settings[key] = items

        items.append(value)
示例#2
0
 def __init__(self, client=True, initial_values=None):
     # Backing object for the settings. This is a dictionary of
     # (setting: [list of values]), where the first value in the list is the
     # current value of the setting. Strictly this doesn't use lists but
     # instead uses collections.deque to avoid repeated memory allocations.
     #
     # This contains the default values for HTTP/2.
     self._settings = {
         HEADER_TABLE_SIZE: collections.deque([4096]),
         ENABLE_PUSH: collections.deque([int(client)]),
         INITIAL_WINDOW_SIZE: collections.deque([65535]),
         MAX_FRAME_SIZE: collections.deque([16384]),
     }
     if initial_values is not None:
         for key, value in initial_values.items():
             invalid = _validate_setting(key, value)
             if invalid:
                 raise InvalidSettingsValueError(
                     "Setting %d has invalid value %d" % (key, value),
                     error_code=invalid)
             self._settings[key] = collections.deque([value])