summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSenthil Kumar G S <senthil.gs@samsung.com>2019-11-18 16:17:41 +0530
committerDoHyun Pyun <dh79.pyun@samsung.com>2019-11-28 16:22:06 +0900
commit1a99d46b8047455d7046e03af32334e634da0aa0 (patch)
tree346f8863c74adfec808ca214568b9069feb7427a
parent719f7ec27d9333259468d9067e24284d7f5b9b95 (diff)
downloadiotivity-1a99d46b8047455d7046e03af32334e634da0aa0.tar.gz
iotivity-1a99d46b8047455d7046e03af32334e634da0aa0.tar.bz2
iotivity-1a99d46b8047455d7046e03af32334e634da0aa0.zip
Avoid CA IP NW monitor code duplications.
Code duplications in CA IP Network Monitor reported by Sonarqube has been addressed in this patch. https://github.sec.samsung.net/RS7-IOTIVITY/IoTivity/commit/983a7d1076abb25b82321bed2fb5c4fa07da8389 (cherry-picked from 983a7d1076abb25b82321bed2fb5c4fa07da8389) Change-Id: I801c5bb382f6beb05164d98653b2d309c6282d7c Signed-off-by: Senthil Kumar G S <senthil.gs@samsung.com> Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
-rw-r--r--resource/csdk/connectivity/src/ip_adapter/SConscript5
-rw-r--r--resource/csdk/connectivity/src/ip_adapter/android/caipnwmonitor.c58
-rw-r--r--resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.c105
-rw-r--r--resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.h61
-rw-r--r--resource/csdk/connectivity/src/ip_adapter/linux/caipnwmonitor.c59
-rw-r--r--resource/csdk/connectivity/src/ip_adapter/tizen/caipnwmonitor.c58
-rw-r--r--resource/csdk/connectivity/src/ip_adapter/windows/caipnwmonitor.c10
7 files changed, 182 insertions, 174 deletions
diff --git a/resource/csdk/connectivity/src/ip_adapter/SConscript b/resource/csdk/connectivity/src/ip_adapter/SConscript
index 8cb1cbb9b..0864b31f7 100644
--- a/resource/csdk/connectivity/src/ip_adapter/SConscript
+++ b/resource/csdk/connectivity/src/ip_adapter/SConscript
@@ -21,7 +21,10 @@ if target_os == 'arduino':
else:
common_files = [
os.path.join(src_dir, 'caipadapter.c'),
- os.path.join(src_dir, 'caipserver.c') ]
+ os.path.join(src_dir, 'caipserver.c'),
+ os.path.join(src_dir, 'caipnwmonitor_common.c') ]
+
+env.AppendUnique(CPPPATH = [ src_dir ])
# Get list of target-specific source file base names, i.e. no parent
# directories prepended to the path.
diff --git a/resource/csdk/connectivity/src/ip_adapter/android/caipnwmonitor.c b/resource/csdk/connectivity/src/ip_adapter/android/caipnwmonitor.c
index 2c451f6f9..05cddc7bd 100644
--- a/resource/csdk/connectivity/src/ip_adapter/android/caipnwmonitor.c
+++ b/resource/csdk/connectivity/src/ip_adapter/android/caipnwmonitor.c
@@ -36,6 +36,7 @@
#include "caadapterutils.h"
#include "caipnwmonitor.h"
+#include "caipnwmonitor_common.h"
#include "logger.h"
#include "oic_malloc.h"
#include "oic_string.h"
@@ -127,71 +128,20 @@ CAResult_t CAIPStopNetworkMonitor(CATransportAdapter_t adapter)
return CA_STATUS_OK;
}
-int CAGetPollingInterval(int interval)
-{
- return interval;
-}
-
static void CAIPPassNetworkChangesToAdapter(CANetworkStatus_t status)
{
- CAIPCBData_t *cbitem = NULL;
- LL_FOREACH(g_adapterCallbackList, cbitem)
- {
- if (cbitem && cbitem->adapter)
- {
- cbitem->callback(cbitem->adapter, status);
- }
- }
+ CAIPPassNetworkChangesToAdapterInternal(status, g_adapterCallbackList, CA_IP_NW_COMMON_ANDROID);
}
CAResult_t CAIPSetNetworkMonitorCallback(CAIPAdapterStateChangeCallback callback,
CATransportAdapter_t adapter)
{
- if (!callback)
- {
- OIC_LOG(ERROR, TAG, "callback is null");
- return CA_STATUS_INVALID_PARAM;
- }
-
- CAIPCBData_t *cbitem = NULL;
- LL_FOREACH(g_adapterCallbackList, cbitem)
- {
- if (cbitem && adapter == cbitem->adapter && callback == cbitem->callback)
- {
- OIC_LOG(DEBUG, TAG, "this callback is already added");
- return CA_STATUS_OK;
- }
- }
-
- cbitem = (CAIPCBData_t *)OICCalloc(1, sizeof(*cbitem));
- if (!cbitem)
- {
- OIC_LOG(ERROR, TAG, "Malloc failed");
- return CA_STATUS_FAILED;
- }
-
- cbitem->adapter = adapter;
- cbitem->callback = callback;
- LL_APPEND(g_adapterCallbackList, cbitem);
-
- return CA_STATUS_OK;
+ return CAIPSetNetworkMonitorCallbackInternal(callback, adapter, g_adapterCallbackList);
}
CAResult_t CAIPUnSetNetworkMonitorCallback(CATransportAdapter_t adapter)
{
- CAIPCBData_t *cbitem = NULL;
- CAIPCBData_t *tmpCbitem = NULL;
- LL_FOREACH_SAFE(g_adapterCallbackList, cbitem, tmpCbitem)
- {
- if (cbitem && adapter == cbitem->adapter)
- {
- OIC_LOG(DEBUG, TAG, "remove specific callback");
- LL_DELETE(g_adapterCallbackList, cbitem);
- OICFree(cbitem);
- return CA_STATUS_OK;
- }
- }
- return CA_STATUS_OK;
+ return CAIPUnSetNetworkMonitorCallbackInternal(adapter, g_adapterCallbackList);
}
u_arraylist_t *CAFindInterfaceChange()
diff --git a/resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.c b/resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.c
new file mode 100644
index 000000000..1fcb957bf
--- /dev/null
+++ b/resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.c
@@ -0,0 +1,105 @@
+/******************************************************************
+*
+* Copyright 2019 Samsung Electronics All Rights Reserved.
+*
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+******************************************************************/
+
+#include "caipnwmonitor.h"
+#include "caipnwmonitor_common.h"
+
+#include "utlist.h"
+#include "logger.h"
+
+#define TAG "OIC_CA_IP_MONITOR_COMMON"
+
+/**
+ * @todo For Windows platform: Implement network interface monitoring.
+ * Not used in win32, but caipserver currently requires this function
+ * be defined. not critical.
+ */
+int CAGetPollingInterval(int interval)
+{
+ return interval;
+}
+
+void CAIPPassNetworkChangesToAdapterInternal(CANetworkStatus_t status,
+ CAIPCBData_t *adapterCallbackList, CAIPAdapterPlatform_t platform)
+{
+ CAIPCBData_t *cbitem = NULL;
+ LL_FOREACH(adapterCallbackList, cbitem)
+ {
+ if (cbitem && cbitem->adapter)
+ {
+ cbitem->callback(cbitem->adapter, status);
+ if (platform == CA_IP_NW_COMMON_LINUX)
+ {
+ CALogAdapterStateInfo(cbitem->adapter, status);
+ }
+ }
+ }
+}
+
+CAResult_t CAIPSetNetworkMonitorCallbackInternal(CAIPAdapterStateChangeCallback callback,
+ CATransportAdapter_t adapter, CAIPCBData_t *adapterCallbackList)
+{
+ if (!callback)
+ {
+ OIC_LOG(ERROR, TAG, "callback is null");
+ return CA_STATUS_INVALID_PARAM;
+ }
+
+ CAIPCBData_t *cbitem = NULL;
+ LL_FOREACH(adapterCallbackList, cbitem)
+ {
+ if (cbitem && adapter == cbitem->adapter && callback == cbitem->callback)
+ {
+ OIC_LOG(DEBUG, TAG, "this callback is already added");
+ return CA_STATUS_OK;
+ }
+ }
+
+ cbitem = (CAIPCBData_t *)OICCalloc(1, sizeof(*cbitem));
+ if (!cbitem)
+ {
+ OIC_LOG(ERROR, TAG, "Malloc failed");
+ return CA_STATUS_FAILED;
+ }
+
+ cbitem->adapter = adapter;
+ cbitem->callback = callback;
+ LL_APPEND(adapterCallbackList, cbitem);
+
+ return CA_STATUS_OK;
+}
+
+CAResult_t CAIPUnSetNetworkMonitorCallbackInternal(CATransportAdapter_t adapter,
+ CAIPCBData_t *adapterCallbackList)
+{
+ CAIPCBData_t *cbitem = NULL;
+ CAIPCBData_t *tmpCbitem = NULL;
+ LL_FOREACH_SAFE(adapterCallbackList, cbitem, tmpCbitem)
+ {
+ if (cbitem && adapter == cbitem->adapter)
+ {
+ OIC_LOG(DEBUG, TAG, "remove specific callback");
+ LL_DELETE(adapterCallbackList, cbitem);
+ OICFree(cbitem);
+ return CA_STATUS_OK;
+ }
+ }
+ return CA_STATUS_OK;
+}
diff --git a/resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.h b/resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.h
new file mode 100644
index 000000000..949d0fa92
--- /dev/null
+++ b/resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.h
@@ -0,0 +1,61 @@
+/******************************************************************
+ *
+ * Copyright 2019 Samsung Electronics All Rights Reserved.
+ *
+ *
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************/
+
+/**
+ * @file caipnwmonitor_common.h
+ * This file provides common APIs of IP network monitor modules.
+ */
+
+#ifndef CA_IP_NW_INTERFACE_COMMON_H_
+#define CA_IP_NW_INTERFACE_COMMON_H_
+
+#include "cacommon.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/**
+ * Enum for defining different platforms for internal usage.
+ */
+typedef enum
+{
+ CA_IP_NW_COMMON_ANDROID = 0,
+ CA_IP_NW_COMMON_LINUX,
+ CA_IP_NW_COMMON_TIZEN,
+ CA_IP_NW_COMMON_TIZENRT,
+ CA_IP_NW_COMMON_WINDOWS
+} CAIPAdapterPlatform_t;
+
+void CAIPPassNetworkChangesToAdapterInternal(CANetworkStatus_t status,
+ CAIPCBData_t *adapterCallbackList, CAIPAdapterPlatform_t platform);
+
+CAResult_t CAIPSetNetworkMonitorCallbackInternal(CAIPAdapterStateChangeCallback callback,
+ CATransportAdapter_t adapter, CAIPCBData_t *adapterCallbackList);
+
+CAResult_t CAIPUnSetNetworkMonitorCallbackInternal(CATransportAdapter_t adapter,
+ CAIPCBData_t *adapterCallbackList);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* CA_IP_NW_INTERFACE_COMMON_H_ */
diff --git a/resource/csdk/connectivity/src/ip_adapter/linux/caipnwmonitor.c b/resource/csdk/connectivity/src/ip_adapter/linux/caipnwmonitor.c
index 1dcd8512b..39fc25772 100644
--- a/resource/csdk/connectivity/src/ip_adapter/linux/caipnwmonitor.c
+++ b/resource/csdk/connectivity/src/ip_adapter/linux/caipnwmonitor.c
@@ -41,6 +41,7 @@
#include "octhread.h"
#include "caipnwmonitor.h"
+#include "caipnwmonitor_common.h"
#include "caadapterutils.h"
#include "logger.h"
#include "oic_malloc.h"
@@ -225,72 +226,20 @@ CAResult_t CAIPStopNetworkMonitor(CATransportAdapter_t adapter)
return CAIPUnSetNetworkMonitorCallback(adapter);
}
-int CAGetPollingInterval(int interval)
-{
- return interval;
-}
-
static void CAIPPassNetworkChangesToAdapter(CANetworkStatus_t status)
{
- CAIPCBData_t *cbitem = NULL;
- LL_FOREACH(g_adapterCallbackList, cbitem)
- {
- if (cbitem && cbitem->adapter)
- {
- cbitem->callback(cbitem->adapter, status);
- CALogAdapterStateInfo(cbitem->adapter, status);
- }
- }
+ CAIPPassNetworkChangesToAdapterInternal(status, g_adapterCallbackList, CA_IP_NW_COMMON_LINUX);
}
CAResult_t CAIPSetNetworkMonitorCallback(CAIPAdapterStateChangeCallback callback,
CATransportAdapter_t adapter)
{
- if (!callback)
- {
- OIC_LOG(ERROR, TAG, "callback is null");
- return CA_STATUS_INVALID_PARAM;
- }
-
- CAIPCBData_t *cbitem = NULL;
- LL_FOREACH(g_adapterCallbackList, cbitem)
- {
- if (cbitem && adapter == cbitem->adapter && callback == cbitem->callback)
- {
- OIC_LOG(DEBUG, TAG, "this callback is already added");
- return CA_STATUS_OK;
- }
- }
-
- cbitem = (CAIPCBData_t *)OICCalloc(1, sizeof(*cbitem));
- if (!cbitem)
- {
- OIC_LOG(ERROR, TAG, "Malloc failed");
- return CA_STATUS_FAILED;
- }
-
- cbitem->adapter = adapter;
- cbitem->callback = callback;
- LL_APPEND(g_adapterCallbackList, cbitem);
-
- return CA_STATUS_OK;
+ return CAIPSetNetworkMonitorCallbackInternal(callback, adapter, g_adapterCallbackList);
}
CAResult_t CAIPUnSetNetworkMonitorCallback(CATransportAdapter_t adapter)
{
- CAIPCBData_t *cbitem = NULL;
- CAIPCBData_t *tmpCbitem = NULL;
- LL_FOREACH_SAFE(g_adapterCallbackList, cbitem, tmpCbitem)
- {
- if (cbitem && adapter == cbitem->adapter)
- {
- OIC_LOG(DEBUG, TAG, "remove specific callback");
- LL_DELETE(g_adapterCallbackList, cbitem);
- OICFree(cbitem);
- return CA_STATUS_OK;
- }
- }
- return CA_STATUS_OK;
+ return CAIPUnSetNetworkMonitorCallbackInternal(adapter, g_adapterCallbackList);
}
static CAInterface_t *CANewInterfaceItem(int index, const char *name, int family,
diff --git a/resource/csdk/connectivity/src/ip_adapter/tizen/caipnwmonitor.c b/resource/csdk/connectivity/src/ip_adapter/tizen/caipnwmonitor.c
index 079ecd53d..036b0f18c 100644
--- a/resource/csdk/connectivity/src/ip_adapter/tizen/caipnwmonitor.c
+++ b/resource/csdk/connectivity/src/ip_adapter/tizen/caipnwmonitor.c
@@ -35,6 +35,7 @@
#include "caipinterface.h"
#include "caipnwmonitor.h"
+#include "caipnwmonitor_common.h"
#include "caadapterutils.h"
#include "logger.h"
#include "oic_malloc.h"
@@ -80,71 +81,20 @@ static void CAIPPassNetworkChangesToAdapter(CANetworkStatus_t status);
*/
static void CAIPConnectionStateChangedCb(connection_type_e type, void* userData);
-int CAGetPollingInterval(int interval)
-{
- return interval;
-}
-
static void CAIPPassNetworkChangesToAdapter(CANetworkStatus_t status)
{
- CAIPCBData_t *cbitem = NULL;
- LL_FOREACH(g_adapterCallbackList, cbitem)
- {
- if (cbitem && cbitem->adapter)
- {
- cbitem->callback(cbitem->adapter, status);
- }
- }
+ CAIPPassNetworkChangesToAdapterInternal(status, g_adapterCallbackList, CA_IP_NW_COMMON_TIZEN);
}
CAResult_t CAIPSetNetworkMonitorCallback(CAIPAdapterStateChangeCallback callback,
CATransportAdapter_t adapter)
{
- if (!callback)
- {
- OIC_LOG(ERROR, TAG, "callback is null");
- return CA_STATUS_INVALID_PARAM;
- }
-
- CAIPCBData_t *cbitem = NULL;
- LL_FOREACH(g_adapterCallbackList, cbitem)
- {
- if (cbitem && adapter == cbitem->adapter && callback == cbitem->callback)
- {
- OIC_LOG(DEBUG, TAG, "this callback is already added");
- return CA_STATUS_OK;
- }
- }
-
- cbitem = (CAIPCBData_t *)OICCalloc(1, sizeof(*cbitem));
- if (!cbitem)
- {
- OIC_LOG(ERROR, TAG, "Malloc failed");
- return CA_STATUS_FAILED;
- }
-
- cbitem->adapter = adapter;
- cbitem->callback = callback;
- LL_APPEND(g_adapterCallbackList, cbitem);
-
- return CA_STATUS_OK;
+ return CAIPSetNetworkMonitorCallbackInternal(callback, adapter, g_adapterCallbackList);
}
CAResult_t CAIPUnSetNetworkMonitorCallback(CATransportAdapter_t adapter)
{
- CAIPCBData_t *cbitem = NULL;
- CAIPCBData_t *tmpCbitem = NULL;
- LL_FOREACH_SAFE(g_adapterCallbackList, cbitem, tmpCbitem)
- {
- if (cbitem && adapter == cbitem->adapter)
- {
- OIC_LOG(DEBUG, TAG, "remove specific callback");
- LL_DELETE(g_adapterCallbackList, cbitem);
- OICFree(cbitem);
- return CA_STATUS_OK;
- }
- }
- return CA_STATUS_OK;
+ return CAIPUnSetNetworkMonitorCallbackInternal(adapter, g_adapterCallbackList);
}
u_arraylist_t *CAFindInterfaceChange()
diff --git a/resource/csdk/connectivity/src/ip_adapter/windows/caipnwmonitor.c b/resource/csdk/connectivity/src/ip_adapter/windows/caipnwmonitor.c
index e1902ecb7..18813d4df 100644
--- a/resource/csdk/connectivity/src/ip_adapter/windows/caipnwmonitor.c
+++ b/resource/csdk/connectivity/src/ip_adapter/windows/caipnwmonitor.c
@@ -61,16 +61,6 @@ CAResult_t CAIPStopNetworkMonitor(CATransportAdapter_t adapter)
* Not used in win32, but caipserver currently requires this function
* be defined. not critical.
*/
-int CAGetPollingInterval(int interval)
-{
- return interval;
-}
-
-/**
- * @todo Implement network interface monitoring.
- * Not used in win32, but caipserver currently requires this function
- * be defined. not critical.
- */
u_arraylist_t *CAFindInterfaceChange()
{
u_arraylist_t *iflist = NULL;