From: chleun-moon <32117100+chleun-moon@users.noreply.github.com>
Date: Wed, 7 Mar 2018 07:05:51 +0000 (+0900)
Subject: [Connection][WiFi]Apply TizenSynchronizationContext for event handling (#138)
X-Git-Tag: 4.0.1.14108~1
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eef4bd3332c9870765abb450c2c602ef00a3721b;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git
[Connection][WiFi]Apply TizenSynchronizationContext for event handling (#138)
---
diff --git a/src/Tizen.Network.Connection/Tizen.Network.Connection.csproj b/src/Tizen.Network.Connection/Tizen.Network.Connection.csproj
index 7f4584ffe..4942b308f 100644
--- a/src/Tizen.Network.Connection/Tizen.Network.Connection.csproj
+++ b/src/Tizen.Network.Connection/Tizen.Network.Connection.csproj
@@ -7,6 +7,7 @@
+
diff --git a/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionInternalManager.cs b/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionInternalManager.cs
index a4ef319ba..c8fd585c5 100755
--- a/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionInternalManager.cs
+++ b/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionInternalManager.cs
@@ -22,19 +22,20 @@ using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Collections;
using System.Threading;
+using Tizen.Applications;
namespace Tizen.Network.Connection
{
class HandleHolder
{
private IntPtr Handle;
- private int tid;
+ private int _tid;
public HandleHolder()
{
- tid = Thread.CurrentThread.ManagedThreadId;
- Log.Info(Globals.LogTag, "PInvoke connection_destroy for Thread " + tid);
- int ret = Interop.Connection.Create(tid, out Handle);
+ _tid = Thread.CurrentThread.ManagedThreadId;
+ Log.Info(Globals.LogTag, "PInvoke connection_destroy for Thread " + _tid);
+ int ret = Interop.Connection.Create(_tid, out Handle);
Log.Info(Globals.LogTag, "Handle: " + Handle);
if(ret != (int)ConnectionError.None)
{
@@ -57,8 +58,9 @@ namespace Tizen.Network.Connection
private void Destroy()
{
- Log.Info(Globals.LogTag, "PInvoke connection_destroy for Thread " + tid);
- Interop.Connection.Destroy(tid, Handle);
+
+ Log.Info(Globals.LogTag, "PInvoke connection_destroy for Thread " + _tid);
+ Interop.Connection.Destroy(_tid, Handle);
if (Handle != IntPtr.Zero)
{
Handle = IntPtr.Zero;
@@ -81,6 +83,8 @@ namespace Tizen.Network.Connection
private Interop.Connection.ConnectionAddressChangedCallback _proxyAddressChangedCallback;
private Interop.Connection.EthernetCableStateChangedCallback _ethernetCableStateChangedCallback;
+ private TizenSynchronizationContext context = new TizenSynchronizationContext();
+
internal static ConnectionInternalManager Instance
{
get
@@ -102,6 +106,7 @@ namespace Tizen.Network.Connection
~ConnectionInternalManager()
{
+ UnregisterEvents();
}
internal IntPtr GetHandle()
@@ -113,20 +118,25 @@ namespace Tizen.Network.Connection
{
add
{
- if (_ConnectionTypeChanged == null)
- {
- ConnectionTypeChangedStart();
- }
-
- _ConnectionTypeChanged += value;
+ context.Post((x) =>
+ {
+ if (_ConnectionTypeChanged == null)
+ {
+ ConnectionTypeChangedStart();
+ }
+ _ConnectionTypeChanged += value;
+ }, null);
}
remove
{
- _ConnectionTypeChanged -= value;
- if (_ConnectionTypeChanged == null)
- {
- ConnectionTypeChangedStop();
- }
+ context.Post((x) =>
+ {
+ _ConnectionTypeChanged -= value;
+ if (_ConnectionTypeChanged == null)
+ {
+ ConnectionTypeChangedStop();
+ }
+ }, null);
}
}
@@ -162,19 +172,25 @@ namespace Tizen.Network.Connection
{
add
{
- if (_EthernetCableStateChanged == null)
- {
- EthernetCableStateChangedStart();
- }
- _EthernetCableStateChanged += value;
+ context.Post((x) =>
+ {
+ if (_EthernetCableStateChanged == null)
+ {
+ EthernetCableStateChangedStart();
+ }
+ _EthernetCableStateChanged += value;
+ }, null);
}
remove
{
- _EthernetCableStateChanged -= value;
- if (_EthernetCableStateChanged == null)
- {
- EthernetCableStateChangedStop();
- }
+ context.Post((x) =>
+ {
+ _EthernetCableStateChanged -= value;
+ if (_EthernetCableStateChanged == null)
+ {
+ EthernetCableStateChangedStop();
+ }
+ }, null);
}
}
@@ -214,20 +230,26 @@ namespace Tizen.Network.Connection
{
add
{
- if (_IPAddressChanged == null)
- {
- IPAddressChangedStart();
- }
- _IPAddressChanged += value;
+ context.Post((x) =>
+ {
+ if (_IPAddressChanged == null)
+ {
+ IPAddressChangedStart();
+ }
+ _IPAddressChanged += value;
+ }, null);
}
remove
{
- _IPAddressChanged -= value;
- if (_IPAddressChanged == null)
- {
- IPAddressChangedStop();
- }
+ context.Post((x) =>
+ {
+ _IPAddressChanged -= value;
+ if (_IPAddressChanged == null)
+ {
+ IPAddressChangedStop();
+ }
+ }, null);
}
}
@@ -267,22 +289,25 @@ namespace Tizen.Network.Connection
{
add
{
- //Console.WriteLine("ProxyAddressChanged Add **");
- if (_ProxyAddressChanged == null)
- {
- ProxyAddressChangedStart();
- }
-
- _ProxyAddressChanged += value;
+ context.Post((x) =>
+ {
+ if (_ProxyAddressChanged == null)
+ {
+ ProxyAddressChangedStart();
+ }
+ _ProxyAddressChanged += value;
+ }, null);
}
remove
{
- //Console.WriteLine("ProxyAddressChanged Remove");
- _ProxyAddressChanged -= value;
- if (_ProxyAddressChanged == null)
- {
- ProxyAddressChangedStop();
- }
+ context.Post((x) =>
+ {
+ _ProxyAddressChanged -= value;
+ if (_ProxyAddressChanged == null)
+ {
+ ProxyAddressChangedStop();
+ }
+ }, null);
}
}
diff --git a/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionProfile.cs b/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionProfile.cs
index 321577778..f0512f1f1 100755
--- a/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionProfile.cs
+++ b/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionProfile.cs
@@ -19,6 +19,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
+using Tizen.Applications;
namespace Tizen.Network.Connection
{
@@ -36,6 +37,8 @@ namespace Tizen.Network.Connection
private Interop.ConnectionProfile.ProfileStateChangedCallback _profileChangedCallback;
+ private TizenSynchronizationContext context = new TizenSynchronizationContext();
+
internal IntPtr GetHandle()
{
return ProfileHandle;
@@ -55,20 +58,26 @@ namespace Tizen.Network.Connection
add
{
Log.Debug(Globals.LogTag, "ProfileStateChanged add");
- if (_ProfileStateChanged == null)
- {
- ProfileStateChangedStart();
- }
- _ProfileStateChanged += value;
+ context.Post((x) =>
+ {
+ if (_ProfileStateChanged == null)
+ {
+ ProfileStateChangedStart();
+ }
+ _ProfileStateChanged += value;
+ }, null);
}
remove
{
Log.Debug(Globals.LogTag, "ProfileStateChanged remove");
- _ProfileStateChanged -= value;
- if (_ProfileStateChanged == null)
- {
- ProfileStateChangedStop();
- }
+ context.Post((x) =>
+ {
+ _ProfileStateChanged -= value;
+ if (_ProfileStateChanged == null)
+ {
+ ProfileStateChangedStop();
+ }
+ }, null);
}
}
@@ -131,12 +140,9 @@ namespace Tizen.Network.Connection
if (disposed)
return;
- if (disposing)
- {
- // Free managed objects.
- UnregisterEvents();
- Destroy();
- }
+ // Free unmanaged objects
+ UnregisterEvents();
+ Destroy();
disposed = true;
}
diff --git a/src/Tizen.Network.WiFi/Tizen.Network.WiFi.csproj b/src/Tizen.Network.WiFi/Tizen.Network.WiFi.csproj
index b3b1ca16e..52d22a12c 100644
--- a/src/Tizen.Network.WiFi/Tizen.Network.WiFi.csproj
+++ b/src/Tizen.Network.WiFi/Tizen.Network.WiFi.csproj
@@ -6,6 +6,7 @@
+
diff --git a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManager.cs b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManager.cs
index 96d613c7e..5cbdad55d 100755
--- a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManager.cs
+++ b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManager.cs
@@ -29,7 +29,7 @@ namespace Tizen.Network.WiFi
[EditorBrowsable(EditorBrowsableState.Never)]
public sealed class SafeWiFiManagerHandle : SafeHandle
{
- private int tid;
+ private int _tid;
internal SafeWiFiManagerHandle() : base(IntPtr.Zero, true)
{
@@ -53,18 +53,15 @@ namespace Tizen.Network.WiFi
///
protected override bool ReleaseHandle()
{
- Interop.WiFi.Deinitialize(tid, this.handle);
+ Interop.WiFi.Deinitialize(_tid, this.handle);
this.SetHandle(IntPtr.Zero);
return true;
}
- internal int TID
+ internal void SetTID(int id)
{
- set
- {
- tid = value;
- Log.Info(Globals.LogTag, "New Handle for Thread " + tid);
- }
+ _tid = id;
+ Log.Info(Globals.LogTag, "New Handle for Thread " + _tid);
}
}
diff --git a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs
index 053949ae8..ada882e05 100755
--- a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs
+++ b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs
@@ -122,7 +122,7 @@ namespace Tizen.Network.WiFi
{
get
{
- return _instance.Value;
+ return _instance.Value;
}
}
@@ -153,7 +153,7 @@ namespace Tizen.Network.WiFi
Log.Error(Globals.LogTag, "Failed to initialize wifi, Error - " + (WiFiError)ret);
WiFiErrorFactory.ThrowWiFiException(ret, "http://tizen.org/privilege/network.get");
}
- handle.TID = tid;
+ handle.SetTID(tid);
return handle;
}
diff --git a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiNetworkChange.cs b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiNetworkChange.cs
index ac1eabf38..256f61f34 100755
--- a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiNetworkChange.cs
+++ b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiNetworkChange.cs
@@ -16,6 +16,8 @@
using System;
using System.Threading.Tasks;
+using System.Threading;
+using Tizen.Applications;
namespace Tizen.Network.WiFi
{
@@ -52,23 +54,30 @@ namespace Tizen.Network.WiFi
private Interop.WiFi.RssiLevelChangedCallback _rssiChangedCallback;
private Interop.WiFi.VoidCallback _backgroundScanFinishedCallback;
+ private TizenSynchronizationContext context = new TizenSynchronizationContext();
internal event EventHandler DeviceStateChanged
{
add
{
- if (_deviceStateChanged == null)
- {
- RegisterDeviceStateChangedEvent();
- }
- _deviceStateChanged += value;
+ context.Post((x) =>
+ {
+ if (_deviceStateChanged == null)
+ {
+ RegisterDeviceStateChangedEvent();
+ }
+ _deviceStateChanged += value;
+ }, null);
}
remove
{
- _deviceStateChanged -= value;
- if (_deviceStateChanged == null)
- {
- UnregisterDeviceStateChangedEvent();
- }
+ context.Post((x) =>
+ {
+ _deviceStateChanged -= value;
+ if (_deviceStateChanged == null)
+ {
+ UnregisterDeviceStateChangedEvent();
+ }
+ }, null);
}
}
@@ -76,19 +85,25 @@ namespace Tizen.Network.WiFi
{
add
{
- if (_connectionStateChanged == null)
- {
- RegisterConnectionStateChangedEvent();
- }
- _connectionStateChanged += value;
+ context.Post((x) =>
+ {
+ if (_connectionStateChanged == null)
+ {
+ RegisterConnectionStateChangedEvent();
+ }
+ _connectionStateChanged += value;
+ }, null);
}
remove
{
- _connectionStateChanged -= value;
- if (_connectionStateChanged == null)
- {
- UnregisterConnectionStateChangedEvent();
- }
+ context.Post((x) =>
+ {
+ _connectionStateChanged -= value;
+ if (_connectionStateChanged == null)
+ {
+ UnregisterConnectionStateChangedEvent();
+ }
+ }, null);
}
}
@@ -96,19 +111,25 @@ namespace Tizen.Network.WiFi
{
add
{
- if (_rssiLevelChanged == null)
- {
- RegisterRssiLevelChangedEvent();
- }
- _rssiLevelChanged += value;
+ context.Post((x) =>
+ {
+ if (_rssiLevelChanged == null)
+ {
+ RegisterRssiLevelChangedEvent();
+ }
+ _rssiLevelChanged += value;
+ }, null);
}
remove
{
- _rssiLevelChanged -= value;
- if (_rssiLevelChanged == null)
- {
- UnregisterRssiLevelChangedEvent();
- }
+ context.Post((x) =>
+ {
+ _rssiLevelChanged -= value;
+ if (_rssiLevelChanged == null)
+ {
+ UnregisterRssiLevelChangedEvent();
+ }
+ }, null);
}
}
@@ -116,24 +137,31 @@ namespace Tizen.Network.WiFi
{
add
{
- if (_backgroundScanFinished == null)
- {
- RegisterBackgroundScanFinishedEvent();
- }
- _backgroundScanFinished += value;
+ context.Post((x) =>
+ {
+ if (_backgroundScanFinished == null)
+ {
+ RegisterBackgroundScanFinishedEvent();
+ }
+ _backgroundScanFinished += value;
+ }, null);
}
remove
{
- _backgroundScanFinished -= value;
- if (_backgroundScanFinished == null)
- {
- UnregisterBackgroundScanFinishedEvent();
- }
+ context.Post((x) =>
+ {
+ _backgroundScanFinished -= value;
+ if (_backgroundScanFinished == null)
+ {
+ UnregisterBackgroundScanFinishedEvent();
+ }
+ }, null);
}
}
private void RegisterDeviceStateChangedEvent()
{
+ Log.Info(Globals.LogTag, "RegisterDeviceStateChangedEvent in Thread " + Thread.CurrentThread.ManagedThreadId);
_deviceChangedCallback = (int deviceState, IntPtr userDate) =>
{
WiFiDeviceState state = (WiFiDeviceState)deviceState;
@@ -149,6 +177,7 @@ namespace Tizen.Network.WiFi
private void UnregisterDeviceStateChangedEvent()
{
+ Log.Info(Globals.LogTag, "UnregisterDeviceStateChangedEvent in Thread " + Thread.CurrentThread.ManagedThreadId);
int ret = Interop.WiFi.UnsetDeviceStateChangedCallback(GetSafeHandle());
if (ret != (int)WiFiError.None)
{