2 * Copyright (c) 2016 - 2017 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 namespace Tizen.System
21 internal class RuntimeInfoEventHandler
23 private RuntimeInfoKey Key;
24 private event EventHandler<RuntimeFeatureStatusChangedEventArgs> Handler;
26 internal RuntimeInfoEventHandler(RuntimeInfoKey key)
32 private static Interop.RuntimeInfo.RuntimeInformationChangedCallback __callback;
34 internal event EventHandler<RuntimeFeatureStatusChangedEventArgs> EventHandler
40 __callback = (RuntimeInfoKey num, IntPtr userData) =>
42 string strKey = "Invalid";
44 if (num > 0 && Information.EnumStringMapping.ContainsKey(num))
46 strKey = Information.EnumStringMapping[num];
49 RuntimeFeatureStatusChangedEventArgs eventArgs = new RuntimeFeatureStatusChangedEventArgs()
51 Key = Information.HttpPrefix + Information.RuntimeInfoStringKeyPrefix + strKey
54 Handler?.Invoke(null, eventArgs);
57 InformationError ret = Interop.RuntimeInfo.SetRuntimeInfoChangedCallback(Key, __callback, IntPtr.Zero);
58 if (ret != InformationError.None)
60 Log.Error(InformationErrorFactory.LogTag, "Interop failed to add event handler");
61 InformationErrorFactory.ThrowException(ret);
71 InformationError ret = Interop.RuntimeInfo.UnsetRuntimeInfoChangedCallback(Key);
72 if (ret != InformationError.None)
74 Log.Error(InformationErrorFactory.LogTag, "Interop failed to add event handler");
75 InformationErrorFactory.ThrowException(ret);