def get_iterdata(self, *args, **kwargs): """ Return a generator for the combined stream of outputs from each source object """ threshold = timedelta(seconds=1) if 'time_thresh' in kwargs: threshold = kwargs['time_thresh'] del kwargs['time_thresh'] template = [None] * len(self._legend) iters = [s.output.get_iterdata(*args, **kwargs) for s in self._sources] inputs = [next(i, None) for i in iters] # XXX infinity = datetime(year=9999, month=12, day=31, tzinfo=tzutc()) def get_sample_time(s): if s is None: return infinity return s.t def min_sample(): return min(inputs, key=get_sample_time) ms = min_sample() sample_time = ms.t vals = list(template) while ms is not None: i = inputs.index(ms) inputs[i] = next(iters[i], None) delta = ms.t - sample_time if delta >= threshold: yield DictObject.create_from_dict(dict(t=sample_time, vals=[vals], processed_pkts=None, unprocessed_pkts=None)) sample_time = ms.t vals = list(template) assert len(ms.vals) == 1 V = ms.vals[0] off = self._sources[i].offset for j in range(len(V)): vals[off + j] = V[j] ms = min_sample() yield DictObject.create_from_dict(dict(t=sample_time, processed_pkts=None, unprocessed_pkts=None, vals=[vals]))
def __init__(self, host, port=None, auth=None): """Establishes a connection to a Profiler appliance. `host` is the name or IP address of the Profiler to connect to `port` is the TCP port on which the Profiler appliance listens. if this parameter is not specified, the function will try to automatically determine the port. `auth` defines the authentication method and credentials to use to access the Profiler. It should be an instance of rvbd.common.UserAuth or rvbd.common.OAuth. `force_version` is the API version to use when communicating. if unspecified, this will use the latest version supported by both this implementation and the Profiler appliance. See the base [Service](common.html#service) class for more information about additional functionality supported. """ super(Profiler, self).__init__("profiler", host, port, auth=auth, versions=[APIVersion("1.0")]) self.api = _api1.Handler(self) self.groupbys = DictObject.create_from_dict(_constants.groupbys) self.realms = _constants.realms self.centricities = _constants.centricities self._info = None self._load_file_caches() self.columns = ColumnContainer(self._unique_columns()) self.areas = AreaContainer(self._areas_dict.iteritems())
def update(self, data): """Update the data of the current object with new data from the server """ assert self.id == data['id'] self.data = DictObject.create_from_dict(data)
def __init__(self, shark, data): self.shark = shark self.id = data['id'] self.data = DictObject.create_from_dict(data)