1 #ifndef __DALI_ADAPTOR_TCT_RESOURCE_COLLECTOR_H_
2 #define __DALI_ADAPTOR_TCT_RESOURCE_COLLECTOR_H_
4 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
19 #include <dali/dali.h>
20 #include <dali/integration-api/resource-cache.h>
29 class PlatformAbstraction;
36 /** Stores true for success and false for a failure for each completed
38 typedef std::map<Integration::ResourceId, bool> ResourceStatusMap;
39 /** Stores an integer counter for a resource ID, e.g., to count the number of
40 * times a load or a fail is reported.*/
41 typedef std::map<Integration::ResourceId, unsigned> ResourceCounterMap;
42 /** Used to track the order in which a sequence of requests is completed.*/
43 typedef std::vector<Integration::ResourceId> ResourceSequence;
46 * @brief Used for platform testing to record the result of resource requests
49 class ResourceCollector : public Integration::ResourceCache
54 virtual ~ResourceCollector();
56 virtual void LoadResponse(Dali::Integration::ResourceId id, Dali::Integration::ResourceTypeId type, Dali::Integration::ResourcePointer resource, Dali::Integration::LoadStatus status);
58 virtual void SaveComplete(Dali::Integration::ResourceId id, Dali::Integration::ResourceTypeId type) {}
60 virtual void LoadFailed(Dali::Integration::ResourceId id, Dali::Integration::ResourceFailure failure);
62 virtual void SaveFailed(Dali::Integration::ResourceId id, Dali::Integration::ResourceFailure failure) {}
65 /** Record of the status of each completed resource. */
66 ResourceStatusMap mCompletionStatuses;
67 /** Record of how many times each resource completed (every value should be 1,
68 * else we are broken). */
69 ResourceCounterMap mCompletionCounts;
70 /** Record of how many times each resource succeeded (every value should be 0 or
71 * 1, else we are broken). */
72 ResourceCounterMap mSuccessCounts;
73 /** Record of how many times each resource failed (every value should be 0 or 1,
74 * else we are broken).
75 * Only resource IDs that correspond to deliberately unloadable resources
76 * should have counts other than 0. */
77 ResourceCounterMap mFailureCounts;
78 /** Remember the order of request completions so request priority can be tested. */
79 ResourceSequence mCompletionSequence;
80 /** Count of all successes and failures.*/
81 unsigned mGrandTotalCompletions;
82 /** Count of all successes, failures, loading notifications and partially loaded notifications.*/
83 unsigned mGrandTotalNotifications;
88 * Helper to poll the abstraction for notifications assuming loads have been
89 * issued to it previously and are in-flight.
91 void PollForNotification( ResourceCollector& collector, Integration::PlatformAbstraction& abstraction, const unsigned maxPolls = 100 );
93 } /* namespace Platform */
94 } /* namespace Internal */
95 } /* namespace Dali */
97 #endif /* __DALI_ADAPTOR_TCT_RESOURCE_COLLECTOR_H_ */