TInt CDatabaseManagerServerSession::SetInterfaceDefault2L(const RMessage2& aMessage) { TInt ret; HBufC8* interfaceBuf = HBufC8::New(aMessage.GetDesLength(0)); if (!interfaceBuf) return KErrNoMemory; TPtr8 ptrToBuf(interfaceBuf->Des()); TRAP(ret, aMessage.ReadL(0, ptrToBuf)); if (ret != KErrNone) { iDb->lastError().setError(DBError::UnknownError); aMessage.Write(1, LastErrorCode()); delete interfaceBuf; return ret; } QByteArray interfaceDescriptorByteArray((const char*)ptrToBuf.Ptr(), ptrToBuf.Length()); QDataStream out(interfaceDescriptorByteArray); QServiceInterfaceDescriptor interfaceDescriptor; out >> interfaceDescriptor; iDb->setInterfaceDefault(interfaceDescriptor); aMessage.Write(1, LastErrorCode()); delete interfaceBuf; return ret; }
TInt CDatabaseManagerServerSession::InterfaceDefaultSize(const RMessage2& aMessage) { TInt ret; HBufC* defaultInterfaceBuf = HBufC::New(aMessage.GetDesLength(0)); if (!defaultInterfaceBuf) return KErrNoMemory; TPtr ptrToBuf(defaultInterfaceBuf->Des()); TRAP(ret, aMessage.ReadL(0, ptrToBuf)); QString interfaceName = QString::fromUtf16(ptrToBuf.Ptr(), ptrToBuf.Length()); QServiceInterfaceDescriptor descriptor; descriptor = iDb->interfaceDefault(interfaceName); iByteArray = new QByteArray(); QDataStream in(iByteArray, QIODevice::WriteOnly); in.setVersion(QDataStream::Qt_4_6); in << descriptor; TPckgBuf<TInt> size(iByteArray->size()); aMessage.Write(1, size); aMessage.Write(2, LastErrorCode()); delete defaultInterfaceBuf; return ret; }
TInt CDatabaseManagerServerSession::SetInterfaceDefaultL(const RMessage2& aMessage) { TInt ret; HBufC* serviceNameBuf = HBufC::New(aMessage.GetDesLength(0)); HBufC* interfaceNameBuf = HBufC::New(aMessage.GetDesLength(1)); if (!serviceNameBuf || !interfaceNameBuf) return KErrNoMemory; TPtr ptrToBuf(serviceNameBuf->Des()); TPtr ptrToBuf2(interfaceNameBuf->Des()); TRAP(ret, aMessage.ReadL(0, ptrToBuf)); TRAPD(ret2, aMessage.ReadL(1, ptrToBuf2)); if (ret != KErrNone || ret2 != KErrNone) { iDb->lastError().setError(DBError::UnknownError); aMessage.Write(2, LastErrorCode()); delete serviceNameBuf; delete interfaceNameBuf; return (ret == KErrNone) ? ret2 : ret; } QString serviceName = QString::fromUtf16(ptrToBuf.Ptr(), ptrToBuf.Length()); QString interfaceName = QString::fromUtf16(ptrToBuf2.Ptr(), ptrToBuf2.Length()); QList<QServiceInterfaceDescriptor> descriptors; QServiceFilter filter; filter.setServiceName(serviceName); filter.setInterface(interfaceName); // Nothing should be returned, because we are checking on nonexistent service descriptors = iDb->getInterfaces(filter); //find the descriptor with the latest version int latestIndex = 0; for (int i = 1; i < descriptors.count(); ++i) { if (lessThan(descriptors[latestIndex], descriptors[i])) latestIndex = i; } if (!descriptors.isEmpty()) { iDb->setInterfaceDefault(descriptors[latestIndex]); } else { aMessage.Write(2, TError(DBError::NotFound)); delete serviceNameBuf; delete interfaceNameBuf; return KErrNotFound; } aMessage.Write(2, LastErrorCode()); delete serviceNameBuf; delete interfaceNameBuf; return ret; }
TInt CDatabaseManagerServerSession::RegisterServiceL(const RMessage2& aMessage) { QString securityToken; TVendorId vendorId = aMessage.VendorId(); if (vendorId != 0) { securityToken = QString::number(vendorId); } else { securityToken = QString::number(aMessage.SecureId().iId); } TInt ret; HBufC8* serviceMetaDataBuf8 = HBufC8::New(aMessage.GetDesLength(0)); if (!serviceMetaDataBuf8) return KErrNoMemory; TPtr8 ptrToBuf(serviceMetaDataBuf8->Des()); TRAP(ret, aMessage.ReadL(0, ptrToBuf)); if (ret != KErrNone) { iDb->lastError().setError(DBError::UnknownError); aMessage.Write(1, LastErrorCode()); delete serviceMetaDataBuf8; return ret; } QByteArray byteArray((const char*)ptrToBuf.Ptr(), ptrToBuf.Length()); QDataStream out(byteArray); ServiceMetaDataResults results; out >> results; iDb->registerService(results, securityToken); aMessage.Write(1, LastErrorCode()); delete serviceMetaDataBuf8; return ret; }
TInt CDatabaseManagerServerSession::ServiceInitializedL(const RMessage2& aMessage) { QString securityToken; TVendorId vendorId = aMessage.VendorId(); if (vendorId != 0) { securityToken = QString::number(vendorId); } else { securityToken = QString::number(aMessage.SecureId().iId); } TInt ret; HBufC* serviceNameBuf = HBufC::New(aMessage.GetDesLength(0)); if (!serviceNameBuf) return KErrNoMemory; TPtr ptrToBuf(serviceNameBuf->Des()); TRAP(ret, aMessage.ReadL(0, ptrToBuf)); if (ret != KErrNone) { iDb->lastError().setError(DBError::UnknownError); aMessage.Write(1, LastErrorCode()); delete serviceNameBuf; return ret; } QString serviceName = QString::fromUtf16(ptrToBuf.Ptr(), ptrToBuf.Length()); iDb->serviceInitialized(serviceName, securityToken); aMessage.Write(1, LastErrorCode()); delete serviceNameBuf; return ret; }
TInt CDatabaseManagerServerSession::InterfacesSizeL(const RMessage2& aMessage) { TInt ret; HBufC8* buf = HBufC8::New(aMessage.GetDesLength(0)); if (!buf) return KErrNoMemory; TPtr8 ptrToBuf(buf->Des()); TRAP(ret, aMessage.ReadL(0, ptrToBuf)); if (ret != KErrNone) { iDb->lastError().setError(DBError::UnknownError); aMessage.Write(2, LastErrorCode()); delete buf; return ret; } QByteArray byteArray((const char*)ptrToBuf.Ptr(), ptrToBuf.Length()); QDataStream out(byteArray); QServiceFilter filter; out >> filter; QList<QServiceInterfaceDescriptor> interfaces = iDb->getInterfaces(filter); iByteArray = new QByteArray(); QDataStream in(iByteArray, QIODevice::WriteOnly); in.setVersion(QDataStream::Qt_4_6); in << interfaces; TPckgBuf<TInt> size(iByteArray->size()); aMessage.Write(1, size); aMessage.Write(2, LastErrorCode()); delete buf; return ret; }
TInt CCommDbTest044_02::executeStepL() { CStoreableOverrideSettings* overSet=CStoreableOverrideSettings::NewL(CStoreableOverrideSettings::EParamListPartial); CleanupStack::PushL(overSet); TUint32 setUint = 5000; User::LeaveIfError(overSet->SetIntOverride(TPtrC(DIAL_OUT_ISP), TPtrC(ISP_IWF_TO_MS), setUint)); TBool setBool = ETrue; User::LeaveIfError(overSet->SetBoolOverride(TPtrC(DIAL_OUT_ISP), TPtrC(SERVICE_IF_CALLBACK_ENABLED), setBool)); TBuf8<KCommsDbSvrMaxFieldLength> set8String(_L8("Hi There!!")); User::LeaveIfError(overSet->SetDesOverride(TPtrC(DIAL_OUT_ISP), TPtrC(ISP_IF_CALLBACK_INFO), set8String)); TBuf<KCommsDbSvrMaxFieldLength> set16String(_L("Hi There!!")); User::LeaveIfError(overSet->SetDesOverride(TPtrC(DIAL_OUT_ISP), TPtrC(ISP_DEFAULT_TEL_NUM), set16String)); TBuf<KCommsDbSvrMaxFieldLength> setLongString(_L("SEND \"hello\"\nWAIT 20\n{\n\"hello back\"\n")); //Lots of stuff, nothing important User::LeaveIfError(overSet->SetLongDesOverride(TPtrC(DIAL_OUT_ISP), TPtrC(ISP_LOGIN_SCRIPT), setLongString)); //We've made an override object, now store it... CBufFlat* store = overSet->StoreLC(); TPtr8 ptrToStore=store->Ptr(0); //Now restore into a new CStoreableOverrideSettings object CStoreableOverrideSettings* restoreOverSet=CStoreableOverrideSettings::NewL(CStoreableOverrideSettings::EParamListPartial); CleanupStack::PushL(restoreOverSet); HBufC8* restoredBuf=HBufC8::NewLC(ptrToStore.Length()); TPtr8 ptrToBuf(restoredBuf->Des()); ptrToBuf.Copy(ptrToStore); restoreOverSet->RestoreL(restoredBuf); //Check we've got the same stuff in the restored object as in the original TUint32 restoredUint; TBool restoredBool; TBuf8<KCommsDbSvrMaxFieldLength> restored8String; TBuf<KCommsDbSvrMaxFieldLength> restored16String; TBuf<KCommsDbSvrMaxFieldLength> restoredLongString; User::LeaveIfError(restoreOverSet->GetIntOverride(TPtrC(DIAL_OUT_ISP), TPtrC(ISP_IWF_TO_MS), restoredUint)); User::LeaveIfError(restoreOverSet->GetBoolOverride(TPtrC(DIAL_OUT_ISP), TPtrC(SERVICE_IF_CALLBACK_ENABLED), restoredBool)); User::LeaveIfError(restoreOverSet->GetDesOverride(TPtrC(DIAL_OUT_ISP), TPtrC(ISP_IF_CALLBACK_INFO), restored8String)); User::LeaveIfError(restoreOverSet->GetDesOverride(TPtrC(DIAL_OUT_ISP), TPtrC(ISP_DEFAULT_TEL_NUM), restored16String)); User::LeaveIfError(restoreOverSet->GetLongDesOverride(TPtrC(DIAL_OUT_ISP), TPtrC(ISP_LOGIN_SCRIPT), restoredLongString)); CleanupStack::PopAndDestroy(restoredBuf); CleanupStack::PopAndDestroy(restoreOverSet); CleanupStack::PopAndDestroy(store); CleanupStack::PopAndDestroy(overSet); //Now do a comparison if(restoredUint!=setUint ||restoredBool!=setBool ||restored8String!=set8String ||restored16String!=set16String ||restoredLongString!=setLongString) return KErrGeneral; return KErrNone; }