Exemple #1
0
gboolean
rg_table_iter_next (RgTableIter *iter)
{
  RgTablePrivate *priv;
  RgTableIterImpl *impl = (RgTableIterImpl *)iter;

  g_return_val_if_fail (iter != NULL, FALSE);
  g_return_val_if_fail (impl != NULL, FALSE);
  g_return_val_if_fail (RG_IS_TABLE (impl->table), FALSE);

  priv = rg_table_get_instance_private (impl->table);

  if (impl->index == priv->last_index)
    {
      impl->table = NULL;
      impl->index = 0;
      impl->timestamp = 0;
      return FALSE;
    }

  do
    {
      impl->index = (impl->index + 1) % priv->max_samples;

      impl->timestamp = 0;
      _rg_column_get (priv->timestamps, impl->index, &impl->timestamp);

      if (impl->timestamp > 0)
        break;
    }
  while (impl->index < priv->last_index);

  return (impl->timestamp > 0);
}
Exemple #2
0
void
rg_table_push (RgTable     *self,
               RgTableIter *iter,
               gint64       timestamp)
{
  RgTablePrivate *priv = rg_table_get_instance_private (self);
  RgTableIterImpl *impl = (RgTableIterImpl *)iter;
  guint pos;
  gsize i;

  g_return_if_fail (RG_IS_TABLE (self));
  g_return_if_fail (iter != NULL);
  g_return_if_fail (timestamp > 0);

  for (i = 0; i < priv->columns->len; i++)
    {
      RgColumn *column;

      column = g_ptr_array_index (priv->columns, i);
      _rg_column_push (column);
    }

  pos = _rg_column_push (priv->timestamps);
  _rg_column_set (priv->timestamps, pos, timestamp);

  impl->table = self;
  impl->timestamp = timestamp;
  impl->index = pos;

  priv->last_index = pos;

  g_signal_emit (self, gSignals [CHANGED], 0);
}
Exemple #3
0
gboolean
rg_table_get_iter_first (RgTable     *self,
                         RgTableIter *iter)
{
  RgTablePrivate *priv = rg_table_get_instance_private (self);
  RgTableIterImpl *impl = (RgTableIterImpl *)iter;

  g_return_val_if_fail (RG_IS_TABLE (self), FALSE);
  g_return_val_if_fail (iter != NULL, FALSE);
  g_return_val_if_fail (impl != NULL, FALSE);

  impl->table = self;
  impl->index = (priv->last_index + 1) % priv->max_samples;
  impl->timestamp = 0;

  _rg_column_get (priv->timestamps, impl->index, &impl->timestamp);

  /*
   * Maybe this is our first time around the ring, and we can just
   * assume the 0 index is the real first entry.
   */
  if (impl->timestamp == 0)
    {
      impl->index = 0;
      _rg_column_get (priv->timestamps, impl->index, &impl->timestamp);
    }

  return (impl->timestamp != 0);
}
Exemple #4
0
void
rg_table_set_max_samples (RgTable *self,
                          guint    max_samples)
{
  RgTablePrivate *priv = rg_table_get_instance_private (self);
  gsize i;

  g_return_if_fail (RG_IS_TABLE (self));
  g_return_if_fail (max_samples > 0);

  if (max_samples == priv->max_samples)
    return;

  for (i = 0; i < priv->columns->len; i++)
    {
      RgColumn *column;

      column = g_ptr_array_index (priv->columns, i);
      _rg_column_set_n_rows (column, max_samples);
    }

  _rg_column_set_n_rows (priv->timestamps, max_samples);

  priv->max_samples = max_samples;

  g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_MAX_SAMPLES]);
}
static void
rg_graph__table_changed (RgGraph *self,
                         RgTable *table)
{
  g_assert (RG_IS_GRAPH (self));
  g_assert (RG_IS_TABLE (table));

  rg_graph_clear_surface (self);
}
Exemple #6
0
gint64
rg_table_get_timespan (RgTable *self)
{
  RgTablePrivate *priv = rg_table_get_instance_private (self);

  g_return_val_if_fail (RG_IS_TABLE (self), 0);

  return priv->timespan;
}
Exemple #7
0
guint
rg_table_get_max_samples (RgTable *self)
{
  RgTablePrivate *priv = rg_table_get_instance_private (self);

  g_return_val_if_fail (RG_IS_TABLE (self), 0);

  return priv->max_samples;
}
Exemple #8
0
gint64
rg_table_get_end_time (RgTable *self)
{
  RgTableIter iter;

  g_return_val_if_fail (RG_IS_TABLE (self), 0);

  if (rg_table_get_iter_last (self, &iter))
    return rg_table_iter_get_timestamp (&iter);

  return g_get_monotonic_time ();
}
Exemple #9
0
static void
rg_table_set_value_max (RgTable *self,
                        gdouble  value_max)
{
  RgTablePrivate *priv = rg_table_get_instance_private (self);

  g_return_if_fail (RG_IS_TABLE (self));

  if (priv->value_max != value_max)
    {
      priv->value_max = value_max;
      g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_VALUE_MAX]);
    }
}
Exemple #10
0
void
rg_table_set_timespan (RgTable   *self,
                       GTimeSpan  timespan)
{
  RgTablePrivate *priv = rg_table_get_instance_private (self);

  g_return_if_fail (RG_IS_TABLE (self));

  if (timespan != priv->timespan)
    {
      priv->timespan = timespan;
      g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_TIMESPAN]);
    }
}
Exemple #11
0
guint
rg_table_add_column (RgTable  *self,
                     RgColumn *column)
{
  RgTablePrivate *priv = rg_table_get_instance_private (self);

  g_return_val_if_fail (RG_IS_TABLE (self), 0);
  g_return_val_if_fail (RG_IS_COLUMN (column), 0);

  _rg_column_set_n_rows (column, priv->max_samples);

  g_ptr_array_add (priv->columns, g_object_ref (column));

  return priv->columns->len - 1;
}
Exemple #12
0
void
rg_graph_set_table (RgGraph *self,
                    RgTable *table)
{
  RgGraphPrivate *priv = rg_graph_get_instance_private (self);

  g_return_if_fail (RG_IS_GRAPH (self));
  g_return_if_fail (!table || RG_IS_TABLE (table));

  if (g_set_object (&priv->table, table))
    {
      egg_signal_group_set_target (priv->table_signals, table);
      gtk_widget_queue_resize (GTK_WIDGET (self));
      g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_TABLE]);
    }
}
Exemple #13
0
void
rg_table_iter_get_value (RgTableIter *iter,
                         guint        column,
                         GValue      *value)
{
  RgTableIterImpl *impl = (RgTableIterImpl *)iter;
  RgTablePrivate *priv;
  RgColumn *col;

  g_return_if_fail (iter != NULL);
  g_return_if_fail (impl != NULL);
  g_return_if_fail (RG_IS_TABLE (impl->table));
  priv = rg_table_get_instance_private (impl->table);
  g_return_if_fail (column < priv->columns->len);

  col = g_ptr_array_index (priv->columns, column);
  _rg_column_get_value (col, impl->index, value);
}
Exemple #14
0
gboolean
rg_table_get_iter_last (RgTable     *self,
                        RgTableIter *iter)
{
  RgTablePrivate *priv = rg_table_get_instance_private (self);
  RgTableIterImpl *impl = (RgTableIterImpl *)iter;

  g_return_val_if_fail (RG_IS_TABLE (self), FALSE);
  g_return_val_if_fail (iter != NULL, FALSE);
  g_return_val_if_fail (impl != NULL, FALSE);

  impl->table = self;
  impl->index = priv->last_index;
  impl->timestamp = 0;

  _rg_column_get (priv->timestamps, impl->index, &impl->timestamp);

  return (impl->timestamp != 0);
}
Exemple #15
0
void
rg_table_iter_get (RgTableIter *iter,
                   gint         first_column,
                   ...)
{
  RgTableIterImpl *impl = (RgTableIterImpl *)iter;
  RgTablePrivate *priv;
  gint column_id = first_column;
  va_list args;

  g_return_if_fail (iter != NULL);
  g_return_if_fail (impl != NULL);
  g_return_if_fail (RG_IS_TABLE (impl->table));

  priv = rg_table_get_instance_private (impl->table);

  va_start (args, first_column);

  while (column_id >= 0)
    {
      RgColumn *column;

      if (column_id >= priv->columns->len)
        {
          g_critical ("No such column %d", column_id);
          return;
        }

      column = g_ptr_array_index (priv->columns, column_id);

      _rg_column_lcopy (column, impl->index, args);

      column_id = va_arg (args, gint);
    }

  if (column_id != -1)
    g_critical ("Invalid column sentinal: %d", column_id);

  va_end (args);
}