Ejemplo n.º 1
0
void
tfrc_sender_no_feedback_timer_expired (TfrcSender *sender, guint64 now)
{
  guint receive_rate = get_max_receive_rate (sender, FALSE);
  guint recover_rate = compute_initial_rate (sender->mss, sender->averaged_rtt);

  if (sender->averaged_rtt == 0 && sender->sent_packet) {
    /* We do not have X_Bps or recover_rate yet.
     * Halve the allowed sending rate.
     */

    sender->rate = MAX ( sender->rate / 2,
        sender_get_segment_size (sender) / T_MBI);
    DEBUG_SENDER (sender, "no_fb: no p, initial, halve rate: %u", sender->rate);
    tfrc_sender_update_inst_rate (sender);
  } else if (((sender->last_loss_event_rate > 0 &&
              receive_rate < recover_rate) ||
          (sender->last_loss_event_rate == 0 &&
              sender->rate < 2 * recover_rate)) &&
      !sender->sent_packet) {
    /* Don't halve the allowed sending rate. */
    /* do nothing */
    DEBUG_SENDER (sender, "no_fb: idle, do nothing recv: %u recover: %u",
        receive_rate, recover_rate);
  } else if (sender->last_loss_event_rate == 0) {
    /* We do not have X_Bps yet.
     * Halve the allowed sending rate.
     */
    sender->rate = MAX ( sender->rate / 2,
        sender_get_segment_size (sender) / T_MBI);
    DEBUG_SENDER (sender, "no_fb: no p, halve rate: %u recover: %u, sent: %u", sender->rate,
        recover_rate, sender->sent_packet);
    tfrc_sender_update_inst_rate (sender);
  } else if (sender->computed_rate / 2 > receive_rate) {
    /* 2 * X_recv was already limiting the sending rate.
     * Halve the allowed sending rate.
   */
    DEBUG_SENDER (sender, "no_fb: computed rate %u > 2 * recv_rate %u",
        sender->computed_rate, receive_rate);
    update_limits(sender, receive_rate, now);
  } else {
    DEBUG_SENDER (sender, "no_fb: ELSE computed: %u", sender->computed_rate);
    update_limits(sender, sender->computed_rate / 2, now);
  }

  g_assert (sender->rate != 0);

  sender->nofeedback_timer_expiry = now + MAX (MAX ( 4 * sender->averaged_rtt,
          SECOND * 2 * sender_get_segment_size (sender) / sender->rate),
      MIN_NOFEEDBACK_TIMER);
  sender->sent_packet = FALSE;
}
Ejemplo n.º 2
0
void UmlCanvas::resize(CanvasFormat f) {
  Q3Canvas::resize((int) (formatSize[f].w * zoom_value),
		  (int) (formatSize[f].h * zoom_value));
  width100percent = formatSize[f].w;
  height100percent = formatSize[f].h;
  update_limits();
  
  // force redisplay else phantoms may appears
  setBackgroundColor(::Qt::lightGray);
  update();
  setBackgroundColor(::Qt::white);
  update();
}
Ejemplo n.º 3
0
void UmlCanvas::set_view(DiagramView * v) {
  view = v;
  
  // add limits
  vlimit = new Q3CanvasLine(this);
  hlimit = new Q3CanvasLine(this);
  vlimit->setZ(TOP_Z);	// alien
  hlimit->setZ(TOP_Z);	// alien
  vlimit->setPen(::Qt::DotLine);
  hlimit->setPen(::Qt::DotLine);
  update_limits();
  vlimit->show();
  hlimit->show();
}
Ejemplo n.º 4
0
void UmlCanvas::set_view(DiagramView * v)
{
    view = v;
    // add limits
    vlimit = new QGraphicsLineItem(/*this*/);
    hlimit = new QGraphicsLineItem(/*this*/);
    vlimit->setZValue(TOP_Z);	// alien
    hlimit->setZValue(TOP_Z);	// alien
    vlimit->setPen(::Qt::DotLine);
    hlimit->setPen(::Qt::DotLine);
    update_limits();
    vlimit->show();
    hlimit->show();
    this->addItem(vlimit);
    this->addItem(hlimit);
}
Ejemplo n.º 5
0
void UmlCanvas::set_zoom(double zm)
{
    do_scale = TRUE;
    zoom_value = zm;

    float ps = (float)(NormalFont.pointSize() * zm);
    float ps_small = 2 * ps / 3;
    float ps_large = 2 * ps;

    the_fonts[UmlNormalFont] = NormalFont;
    the_fonts[UmlNormalFont].setPointSizeFloat(ps);
    the_fonts[UmlNormalBoldFont] = BoldFont;
    the_fonts[UmlNormalBoldFont].setPointSizeFloat(ps);
    the_fonts[UmlNormalItalicFont] = ItalicFont;
    the_fonts[UmlNormalItalicFont].setPointSizeFloat(ps);
    the_fonts[UmlNormalBoldItalicFont] = BoldItalicFont;
    the_fonts[UmlNormalBoldItalicFont].setPointSizeFloat(ps);
    the_fonts[UmlNormalUnderlinedFont] = UnderlineFont;
    the_fonts[UmlNormalUnderlinedFont].setPointSizeFloat(ps);
    the_fonts[UmlNormalStrikeOutFont] = StrikeOutFont;
    the_fonts[UmlNormalStrikeOutFont].setPointSizeFloat(ps);

    the_fonts[UmlSmallFont] = NormalFont;
    the_fonts[UmlSmallFont].setPointSizeFloat(ps_small);
    the_fonts[UmlSmallBoldFont] = BoldFont;
    the_fonts[UmlSmallBoldFont].setPointSizeFloat(ps_small);
    the_fonts[UmlSmallItalicFont] = ItalicFont;
    the_fonts[UmlSmallItalicFont].setPointSizeFloat(ps_small);
    the_fonts[UmlSmallBoldItalicFont] = BoldItalicFont;
    the_fonts[UmlSmallBoldItalicFont].setPointSizeFloat(ps_small);

    the_fonts[UmlLargeFont] = NormalFont;
    the_fonts[UmlLargeFont].setPointSizeFloat(ps_large);
    the_fonts[UmlLargeBoldFont] = BoldFont;
    the_fonts[UmlLargeBoldFont].setPointSizeFloat(ps_large);
    the_fonts[UmlLargeItalicFont] = ItalicFont;
    the_fonts[UmlLargeItalicFont].setPointSizeFloat(ps_large);
    the_fonts[UmlLargeBoldItalicFont] = BoldItalicFont;
    the_fonts[UmlLargeBoldItalicFont].setPointSizeFloat(ps_large);

    Q3Canvas::resize((int)(width100percent * zm),
                     (int)(height100percent * zm));

    update_limits();
}
Ejemplo n.º 6
0
void UmlCanvas::resize(CanvasFormat f)
{

    setSceneRect(0, 0,(int)(formatSize[f].w * zoom_value),
                     (int)(formatSize[f].h * zoom_value));
    width100percent = formatSize[f].w;
    height100percent = formatSize[f].h;
    update_limits();

    // force redisplay else phantoms may appears
    QBrush bBrush = backgroundBrush();
    bBrush.setColor(::Qt::lightGray);
    setBackgroundBrush(bBrush);
    //setBackgroundColor(::Qt::lightGray);
    update();
    bBrush.setColor(::Qt::white);
    //setBackgroundColor(::Qt::white);
    setBackgroundBrush(bBrush);
    update();
}