// ----------------------------------------------------------------------------- // RMediatorServer::RaiseEventL // Raise event to Mediator Server. // ----------------------------------------------------------------------------- // TInt RMediatorServer::RaiseEvent( TUid aDomain, TUid aCategory, TInt aEventId, TVersion aVersion, const TDesC8& aData ) { TRACE(Print(_L("[Mediator Server]\t RMediatorServer::RaiseEvent\n"))); // Check that session is open. __ASSERT_DEBUG( Handle(), User::Panic( KMediatorServerPanic, EMediatorClientNoSessionActive )); // Create a structures for event data TMediatorCategory category; category.iDomain = aDomain; category.iCategory = aCategory; TMediatorCategoryBuffer categoryBuffer( category ); TEvent event; event.iEventId = aEventId; event.iVersion = aVersion; TEventBuffer eventBuffer( event ); // Send the command to server return SendReceive( ERaiseEvent, TIpcArgs( &categoryBuffer, &eventBuffer, &aData ) ); }
bool QmlProfilerFileReader::loadQzt(QIODevice *device) { QDataStream stream(device); stream.setVersion(QDataStream::Qt_5_5); QByteArray magic; stream >> magic; if (magic != QByteArray("QMLPROFILER")) { emit error(tr("Invalid magic: %1").arg(QLatin1String(magic))); return false; } qint32 dataStreamVersion; stream >> dataStreamVersion; if (dataStreamVersion > QDataStream::Qt_DefaultCompiledVersion) { emit error(tr("Unknown data stream version: %1").arg(dataStreamVersion)); return false; } stream.setVersion(dataStreamVersion); stream >> m_traceStart >> m_traceEnd; QBuffer buffer; QDataStream bufferStream(&buffer); bufferStream.setVersion(dataStreamVersion); QByteArray data; updateProgress(device); stream >> data; buffer.setData(qUncompress(data)); buffer.open(QIODevice::ReadOnly); bufferStream >> m_eventTypes; buffer.close(); emit typesLoaded(m_eventTypes); updateProgress(device); stream >> data; buffer.setData(qUncompress(data)); buffer.open(QIODevice::ReadOnly); bufferStream >> m_notes; buffer.close(); emit notesLoaded(m_notes); updateProgress(device); const int eventBufferLength = 1024; QVector<QmlEvent> eventBuffer(eventBufferLength); int eventBufferIndex = 0; while (!stream.atEnd()) { stream >> data; buffer.setData(qUncompress(data)); buffer.open(QIODevice::ReadOnly); while (!buffer.atEnd()) { if (isCanceled()) return false; QmlEvent &event = eventBuffer[eventBufferIndex]; bufferStream >> event; if (bufferStream.status() == QDataStream::Ok) { if (event.typeIndex() >= m_eventTypes.length()) { emit error(tr("Invalid type index %1").arg(event.typeIndex())); return false; } m_loadedFeatures |= (1ULL << m_eventTypes[event.typeIndex()].feature()); } else if (bufferStream.status() == QDataStream::ReadPastEnd) { break; // Apparently EOF is a character so we end up here after the last event. } else if (bufferStream.status() == QDataStream::ReadCorruptData) { emit error(tr("Corrupt data before position %1.").arg(device->pos())); return false; } else { Q_UNREACHABLE(); } if (++eventBufferIndex == eventBufferLength) { emit qmlEventsLoaded(eventBuffer); eventBufferIndex = 0; } } buffer.close(); updateProgress(device); } eventBuffer.resize(eventBufferIndex); emit qmlEventsLoaded(eventBuffer); emit success(); return true; }