Exemple #1
0
int cutstock::processRequest(vector<int> & requests, pipeStock & state) {
	
	cout << "processing remaining requests\n";
	printvec(requests);
	
	cout << "at state\n";
	printdvec(state);
	
	// static int memHit=0;
	
	if (requests.empty()) return state.size();
	
	
	
	int nextReq=requests.back();
	requests.pop_back();
	
	set<int> numPipes;
	
	for (int i=0; i<state.size()+1; i++) {
		
		if (i == state.size() || checkPipe(state[i], nextReq)) {
			pipeStock newState=state;
			vector<int> newReq=requests;
			
			if (i == state.size()) {
				pipe p;
				newState.push_back(p);
			}
			newState[i].push_back(nextReq);
			int stocks;
			//search memory
			if (m.find(mapIndex(newState)) != m.end()) {
				stocks=m.find(mapIndex(newState))->second;
				memHit++;
			}
			else {
			//if not found in memory, go through recursion
				stocks=processRequest(newReq, newState);
			//record it in memory
				m[mapIndex(newState)]=stocks;
			}
			
			numPipes.insert(stocks);
			
			
// 			numPipes.insert(processRequest(newReq, newState));
		}
	}
	
	set<int>::iterator it=numPipes.begin();
	return *it;
		
}
void MainWindow::down()
{
	QModelIndex index = mapIndex(_ui->listView->currentIndex());
	QString name = _objectModel->data(index).toString();
	if (_objectModel->enter(index.row()))
		_history.push_back(qMakePair(name, _objectModel->parentObjectId()));
	updateActionsState();
}
void MainWindow::onActivated ( const QModelIndex & proxyIndex )
{
	QModelIndex index = mapIndex(proxyIndex);
	QString name = _objectModel->data(index).toString();
	if (_objectModel->enter(index.row()))
		_history.push_back(qMakePair(name, _objectModel->parentObjectId()));
	updateActionsState();
}
void MainWindow::downloadFiles()
{
	QItemSelectionModel *selection =_ui->listView->selectionModel();
	QModelIndexList rows = selection->selectedRows();

	QVector<mtp::ObjectId> objects;
	for(QModelIndex row : rows)
	{
		row = mapIndex(row);
		objects.push_back(_objectModel->objectIdAt(row.row()));
	}
	downloadFiles(objects);
}
Exemple #5
0
	virtual const wchar_t* getLabel(uint32 index)
	{
		index = mapIndex(index);

		if (index == 0)
			return Managers::GetString(L"#PM_VIEWPROFILE");
		else if (index == 1)
			return Managers::GetString(L"#IF_PRELOADLAUNCH_INSTALLDEMO");
		else if (index == 2)
			return Managers::GetString(L"#IF_PRELOADLAUNCH_INSTALLOTHER");

		return nullptr;
	}
void MainWindow::renameFile()
{
	QItemSelectionModel *selection =_ui->listView->selectionModel();
	QModelIndexList rows = selection->selectedRows();
	if (rows.empty())
		return;

	QModelIndex row = mapIndex(rows.at(0));
	RenameDialog d(_objectModel->data(row).toString(), this);
	restoreGeometry("rename-dialog", d);
	if (d.exec())
		_objectModel->rename(row.row(), d.name());
	saveGeometry("rename-dialog", d);
}
void MainWindow::deleteFiles()
{
	QItemSelectionModel *selection =_ui->listView->selectionModel();
	QModelIndexList rows = selection->selectedRows();
	int r = QMessageBox::question(this,
		tr("Deleting file(s)"),
		tr("Are you sure?"),
		QMessageBox::Yes | QMessageBox::No,
		QMessageBox::No
	);
	if (r != QMessageBox::Yes)
		return;

	MtpObjectList objects;
	for(QModelIndex row : rows)
	{
		row = mapIndex(row);
		objects.push_back(_objectModel->objectIdAt(row.row()));
	}
	_objectModel->deleteObjects(objects);
}
Exemple #8
0
	virtual void performAction(uint32 index)
	{
		index = mapIndex(index);

		if (index == 0)
		{
			g_pMainApp->handleInternalLink(m_Id, ACTION_PROFILE);
		}
		else if (index == 1)
		{
			std::vector<std::string> argsList;
			argsList.push_back(gcString("branch={0}", (uint32)m_DemoBranch));

			g_pMainApp->handleInternalLink(m_Id, ACTION_INSTALL, argsList);
		}
		else if (index == 2)
		{
			std::vector<std::string> argsList;
			argsList.push_back("skippreorder");
			g_pMainApp->handleInternalLink(m_Id, ACTION_INSTALL, argsList);
		}
	}
        /**
         * Receiver::handle_event()
         *
         *   Description:
         *     Processes an event that arrived through the MC-Channel
         *
         *   Parameters:
         *     _eventData: header of IP/MC Event packet
         *     _iov:       Complete packet
         */
        int Receiver::handle_event(EventData &_eventData, iovec *_iov) {
            ACE_INET_Addr from;

            /* Drop the packet if data doesn't fit */
            if ((_eventData.requestSize    <  _eventData.fragmentSize) ||
                (_eventData.fragmentOffset >= _eventData.requestSize)  ||
                (_eventData.fragmentId     >= _eventData.fragmentCount)) {

                PRINT_DBG(DBG_INFO, "Dropping packet");

                return 0;
            }
            /* Index the incomplete (due to fragmentation) requests */
            RequestIndex     mapIndex(from, _eventData.requestId);
            RequestMapEntry *entry;

            if (this->requestMap_.find(mapIndex, entry) == -1) {

                /* Create an entry and insert it... */
                RequestEntry *requestEntry = new RequestEntry(_eventData.byteOrder,
                                                              _eventData.requestId,
                                                              _eventData.requestSize,
                                                              _eventData.fragmentCount);

                /* Drop the packet if impossible to bind entry to map */
                if ((requestEntry == 0) || (this->requestMap_.bind(mapIndex, requestEntry, entry) == -1)) {
                    PRINT_DBG(DBG_VERBOSE, "Unable to index, dropping");

                    return 0;
                }
            }
            /* Validate the message... */
            if (entry->int_id_->validateFragment(_eventData.byteOrder,
                                                 _eventData.requestSize,
                                                 _eventData.fragmentSize,
                                                 _eventData.fragmentOffset,
                                                 _eventData.fragmentId,
                                                 _eventData.fragmentCount) == 0) {
                PRINT_DBG(DBG_VERBOSE, "Fragment rejected");

                return 0;
            }
            /* Already received this fragment */
            if (entry->int_id_->testReceived(_eventData.fragmentId) == 1) {
                PRINT_DBG(DBG_VERBOSE, "Duplicate Fragment, dropping");

                return 0;
            }
            /* Copy the payload into the fragment buffer */
            char *buffer = (char *)_iov[0].iov_base + HEADER_SIZE;
            int   bufferLen = _iov[0].iov_len - HEADER_SIZE;
            memcpy(entry->int_id_->fragmentBuffer(_eventData.fragmentOffset),
                   buffer,
                   bufferLen);
            /* Mark datagram fragment as received */
            entry->int_id_->markReceived(_eventData.fragmentId);
            /* If the message is not complete we must return... */
            if (!entry->int_id_->complete())
                return 0;
            /* Demarshal datagram payload */
            ACE_DECLARE_NEW_CORBA_ENV;
            ACE_TRY {
                CosNotification::StructuredEvent event;

                /* Decode datagram */
                entry->int_id_->decode(event ACE_ENV_ARG_PARAMETER);
                ACE_TRY_CHECK;

                /* Drop packet if it's too old */
                if (ACE_OS::gettimeofday().msec() - _eventData.timestamp > configuration_->getEventMaxAge()) {
                    PRINT_DBG(DBG_VERBOSE, "Packet " << _eventData.requestId << " dropped because it was too old");
                    return 0;
                }

                /* Send event to event channel */
                sendEvent(event ACE_ENV_ARG_PARAMETER);
                ACE_TRY_CHECK;

            } ACE_CATCHANY {
                ACE_PRINT_EXCEPTION(ACE_ANY_EXCEPTION, "NotifyMulticastReceiver::handle_input");
            }
            ACE_ENDTRY;

            return 0;
        }