/** * @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); } }
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; }
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) ; } }
/* 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(); }