/**
 * @param row :: Section row to remove
 */
void ALCBaselineModellingPresenter::removeSection(int row) {
  // The view should make sure the row is valid
  assert(row >= 0);
  assert(row < m_view->noOfSectionRows());

  // Delete all section selectors
  for (int i = 0; i < m_view->noOfSectionRows(); ++i) {
    m_view->deleteSectionSelector(i);
  }

  std::vector<IALCBaselineModellingView::SectionRow> allRows;

  for (int i = 0; i < m_view->noOfSectionRows(); ++i) {
    allRows.push_back(m_view->sectionRow(i));
  }

  allRows.erase(allRows.begin() + row);

  // Shrink sections table
  m_view->setNoOfSectionRows(static_cast<int>(allRows.size()));

  // Update row values and add sections selectors
  for (size_t i = 0; i < allRows.size(); ++i) {
    m_view->setSectionRow(static_cast<int>(i), allRows[i]);

    double startX = allRows[i].first.toDouble();
    double endX = allRows[i].second.toDouble();

    IALCBaselineModellingView::SectionSelector newSelector(startX, endX);
    m_view->addSectionSelector(static_cast<int>(i), newSelector);
  }
}
예제 #2
0
    bool BalancingSelector::add(SocketSerialized* s)
    {
        unsigned int min_charge = -1;
        SelectManager* min_selector;

        for(SelectManager& selector : selectors)
        {
            unsigned int s = selector.size();
            if(s <min_charge)
            {
                min_charge = s;
                min_selector = &selector;
            } 
        }

        if(min_charge < max_per_selector)
        {
            min_selector->add(s);
        }
        else
        {
            if(nb_selector_max == 0 or selectors.size() < nb_selector_max)
            {
                SelectManager& selector = newSelector();
                selector.add(s);
            }
            else
                return false;
        }
        return true;
    }
예제 #3
0
 BalancingSelector::BalancingSelector(bool read, bool write, bool except,void (*onSel)(SelectManager&,void*,SocketSerialized&),void* _data, unsigned int _min,unsigned int _max,unsigned int max_selector,float timeout): 
 nb_selector_max(max_selector),
 max_per_selector(_max),
 min_per_selector(_min),
 timeout(timeout),
 readfds(read),
 writefds(write),
 exceptfds(except),
 onSelect(onSel),
 data(_data),
 do_delete(false),
 _run(false)
 {
     SelectManager& s = newSelector();
     s.setArgs(readfds,writefds,exceptfds,timeout);
     s.onSelect = onSelect;
     s.data = _data;
 }
void atenderJobs(char *puerto)
{
	SocketEscucha *listener = newSocketEscucha("localhost", puerto);
	escucharConexiones(listener);

	Selector *selector = newSelector(listener);

	while (1)
	{
		esperarEventos(selector);

		if(hayNuevaConexion(selector))
		{
			SocketConecta *nuevaConexion = obtenerNuevaConexion(selector);
			atenderNuevoJob(nuevaConexion);
		}

		if (hayMensajesEntrantes(selector))
		{
			t_list *listaConexionesConMensajes = obtenerConexionesConMensajesEntrantes(selector);
			int i; for (i = 0; i < list_size(listaConexionesConMensajes); i++)
			{
				SocketConecta *conexionConMensaje = list_get(listaConexionesConMensajes, i);
				atenderConexionConMensaje(conexionConMensaje);
			}
		}

		if (hayConexionesCaidas(selector))
		{
			t_list *conexionesCaidas = obtenerConexionesCaidas(selector);
			int i; for (i = 0; i < list_size(conexionesCaidas); i++)
			{
				SocketConecta *conexionCaida = list_get(conexionesCaidas, i);
				atenderConexionCaida(conexionCaida);
			}
		}

		while(planificadorObtenerSiguienteTareaYComunicarlaAJob() != NULL)
			;
	}
}
예제 #5
0
파일: ucnvsel.cpp 프로젝트: JoeDoyle23/node
/* open a selector. If converterListSize is 0, build for all converters.
   If excludedCodePoints is NULL, don't exclude any codepoints */
U_CAPI UConverterSelector* U_EXPORT2
ucnvsel_open(const char* const*  converterList, int32_t converterListSize,
             const USet* excludedCodePoints,
             const UConverterUnicodeSet whichSet, UErrorCode* status) {
  // check if already failed
  if (U_FAILURE(*status)) {
    return NULL;
  }
  // ensure args make sense!
  if (converterListSize < 0 || (converterList == NULL && converterListSize != 0)) {
    *status = U_ILLEGAL_ARGUMENT_ERROR;
    return NULL;
  }

  // allocate a new converter
  LocalUConverterSelectorPointer newSelector(
    (UConverterSelector*)uprv_malloc(sizeof(UConverterSelector)));
  if (newSelector.isNull()) {
    *status = U_MEMORY_ALLOCATION_ERROR;
    return NULL;
  }
  uprv_memset(newSelector.getAlias(), 0, sizeof(UConverterSelector));

  if (converterListSize == 0) {
    converterList = NULL;
    converterListSize = ucnv_countAvailable();
  }
  newSelector->encodings =
    (char**)uprv_malloc(converterListSize * sizeof(char*));
  if (!newSelector->encodings) {
    *status = U_MEMORY_ALLOCATION_ERROR;
    return NULL;
  }
  newSelector->encodings[0] = NULL;  // now we can call ucnvsel_close()

  // make a backup copy of the list of converters
  int32_t totalSize = 0;
  int32_t i;
  for (i = 0; i < converterListSize; i++) {
    totalSize +=
      (int32_t)uprv_strlen(converterList != NULL ? converterList[i] : ucnv_getAvailableName(i)) + 1;
  }
  // 4-align the totalSize to 4-align the size of the serialized form
  int32_t encodingStrPadding = totalSize & 3;
  if (encodingStrPadding != 0) {
    encodingStrPadding = 4 - encodingStrPadding;
  }
  newSelector->encodingStrLength = totalSize += encodingStrPadding;
  char* allStrings = (char*) uprv_malloc(totalSize);
  if (!allStrings) {
    *status = U_MEMORY_ALLOCATION_ERROR;
    return NULL;
  }

  for (i = 0; i < converterListSize; i++) {
    newSelector->encodings[i] = allStrings;
    uprv_strcpy(newSelector->encodings[i],
                converterList != NULL ? converterList[i] : ucnv_getAvailableName(i));
    allStrings += uprv_strlen(newSelector->encodings[i]) + 1;
  }
  while (encodingStrPadding > 0) {
    *allStrings++ = 0;
    --encodingStrPadding;
  }

  newSelector->ownEncodingStrings = TRUE;
  newSelector->encodingsCount = converterListSize;
  UPropsVectors *upvec = upvec_open((converterListSize+31)/32, status);
  generateSelectorData(newSelector.getAlias(), upvec, excludedCodePoints, whichSet, status);
  upvec_close(upvec);

  if (U_FAILURE(*status)) {
    return NULL;
  }

  return newSelector.orphan();
}