File indexing completed on 2024-05-12 05:26:00
0001 /* 0002 * Copyright (C) 2015 Christian Mollekopf <chrigi_1@fastmail.fm> 0003 * 0004 * This library is free software; you can redistribute it and/or 0005 * modify it under the terms of the GNU Lesser General Public 0006 * License as published by the Free Software Foundation; either 0007 * version 2.1 of the License, or (at your option) version 3, or any 0008 * later version accepted by the membership of KDE e.V. (or its 0009 * successor approved by the membership of KDE e.V.), which shall 0010 * act as a proxy defined in Section 6 of version 3 of the license. 0011 * 0012 * This library is distributed in the hope that it will be useful, 0013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0015 * Lesser General Public License for more details. 0016 * 0017 * You should have received a copy of the GNU Lesser General Public 0018 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 0019 */ 0020 #pragma once 0021 0022 #include <QByteArray> 0023 #include <QVariant> 0024 #include "applicationdomaintype.h" 0025 0026 namespace Sink { 0027 namespace ResourceControl { 0028 0029 struct Inspection 0030 { 0031 /** 0032 * Inspect if the property of an entity has the expected value on the server. 0033 */ 0034 static Inspection PropertyInspection(const Sink::ApplicationDomain::Entity &entity, const QByteArray &property, const QVariant &expectedValue) 0035 { 0036 Inspection inspection; 0037 inspection.resourceIdentifier = entity.resourceInstanceIdentifier(); 0038 inspection.entityIdentifier = entity.identifier(); 0039 inspection.property = property; 0040 inspection.expectedValue = expectedValue; 0041 inspection.type = PropertyInspectionType; 0042 return inspection; 0043 } 0044 0045 /** 0046 * Inspect if the entity is existing on the server. 0047 */ 0048 static Inspection ExistenceInspection(const Sink::ApplicationDomain::Entity &entity, bool exists) 0049 { 0050 Inspection inspection; 0051 inspection.resourceIdentifier = entity.resourceInstanceIdentifier(); 0052 inspection.entityIdentifier = entity.identifier(); 0053 inspection.expectedValue = exists; 0054 inspection.type = ExistenceInspectionType; 0055 return inspection; 0056 } 0057 0058 /** 0059 * Inspect the integrity of the cache for entity. 0060 */ 0061 static Inspection CacheIntegrityInspection(const Sink::ApplicationDomain::Entity &entity) 0062 { 0063 Inspection inspection; 0064 inspection.resourceIdentifier = entity.resourceInstanceIdentifier(); 0065 inspection.entityIdentifier = entity.identifier(); 0066 inspection.type = CacheIntegrityInspectionType; 0067 return inspection; 0068 } 0069 0070 /** 0071 * Inspect the connection to the server to validate the resource configuration. 0072 */ 0073 static Inspection ConnectionInspection(const QByteArray &resourceIdentifier) 0074 { 0075 Inspection inspection; 0076 inspection.resourceIdentifier = resourceIdentifier; 0077 inspection.type = ConnectionInspectionType; 0078 return inspection; 0079 } 0080 0081 enum Type 0082 { 0083 PropertyInspectionType, 0084 ExistenceInspectionType, 0085 CacheIntegrityInspectionType, 0086 ConnectionInspectionType, 0087 }; 0088 QByteArray resourceIdentifier; 0089 QByteArray entityIdentifier; 0090 QByteArray property; 0091 QVariant expectedValue; 0092 int type; 0093 }; 0094 } 0095 }