From: chleun.moon Date: Fri, 27 Apr 2018 03:03:47 +0000 (+0900) Subject: [Connection][WiFi] Assign zero to the handle only when Interop.Destroy() X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F03%2F177303%2F2;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [Connection][WiFi] Assign zero to the handle only when Interop.Destroy() Change-Id: Ib486d7cfd972ad777901088a2955e0ff58a7533c Signed-off-by: Cheoleun Moon --- diff --git a/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionProfile.cs b/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionProfile.cs index 5ab232c4e..7d0fb7ad8 100755 --- a/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionProfile.cs +++ b/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionProfile.cs @@ -62,7 +62,14 @@ namespace Tizen.Network.Connection { if (_ProfileStateChanged == null) { - ProfileStateChangedStart(); + try + { + ProfileStateChangedStart(); + } catch (Exception e) + { + Log.Error(Globals.LogTag, "Exception on adding ProfileStateChanged\n" + e.ToString()); + return; + } } _ProfileStateChanged += value; }, null); @@ -75,7 +82,14 @@ namespace Tizen.Network.Connection _ProfileStateChanged -= value; if (_ProfileStateChanged == null) { - ProfileStateChangedStop(); + try + { + ProfileStateChangedStop(); + } + catch (Exception e) + { + Log.Error(Globals.LogTag, "Exception on removing ProfileStateChanged\n" + e.ToString()); + } } }, null); } @@ -85,7 +99,6 @@ namespace Tizen.Network.Connection { _profileChangedCallback = (ProfileState state, IntPtr userData) => { - Log.Info(Globals.LogTag, "***** MOON ProfileStateChanged occur"); if (_ProfileStateChanged != null) { _ProfileStateChanged(null, new ProfileStateEventArgs(state)); @@ -97,6 +110,7 @@ namespace Tizen.Network.Connection if ((ConnectionError)ret != ConnectionError.None) { Log.Error(Globals.LogTag, "It failed to register callback for changing profile state, " + (ConnectionError)ret); + ConnectionErrorFactory.ThrowConnectionException(ret); } } @@ -107,6 +121,7 @@ namespace Tizen.Network.Connection if ((ConnectionError)ret != ConnectionError.None) { Log.Error(Globals.LogTag, "It failed to unregister callback for changing profile state, " + (ConnectionError)ret); + ConnectionErrorFactory.ThrowConnectionException(ret); } } @@ -137,7 +152,6 @@ namespace Tizen.Network.Connection private void Dispose(bool disposing) { - Log.Debug(Globals.LogTag, ">>> ConnectionProfile Dispose with " + disposing); if (disposed) return; @@ -157,8 +171,11 @@ namespace Tizen.Network.Connection private void Destroy() { - Interop.ConnectionProfile.Destroy(ProfileHandle); - ProfileHandle = IntPtr.Zero; + int ret = Interop.ConnectionProfile.Destroy(ProfileHandle); + if ((ConnectionError)ret == ConnectionError.None) + { + ProfileHandle = IntPtr.Zero; + } } internal void CheckDisposed() diff --git a/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionProfileManager.cs b/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionProfileManager.cs index e205c4875..a0d1ae610 100755 --- a/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionProfileManager.cs +++ b/src/Tizen.Network.Connection/Tizen.Network.Connection/ConnectionProfileManager.cs @@ -80,6 +80,9 @@ namespace Tizen.Network.Connection /// 3 /// The connection profile object. /// A task indicates whether the ConnectProfileAsync method is done successfully or not. + /// + /// This method must be called from MainThread. + /// /// http://tizen.org/privilege/network.get /// http://tizen.org/privilege/network.set /// http://tizen.org/feature/network.telephony @@ -104,6 +107,9 @@ namespace Tizen.Network.Connection /// 3 /// The connection profile object. /// A task indicates whether the DisconnectProfileAsync method is done successfully or not. + /// + /// This method must be called from MainThread. + /// /// http://tizen.org/privilege/network.get /// http://tizen.org/privilege/network.set /// http://tizen.org/feature/network.telephony @@ -220,6 +226,9 @@ namespace Tizen.Network.Connection /// The cellular service type. /// The connection profile object. /// A task indicates whether the SetDefaultCellularProfile method is done successfully or not. + /// + /// This method must be called from MainThread. + /// /// http://tizen.org/privilege/network.get /// http://tizen.org/privilege/network.profile /// http://tizen.org/feature/network.telephony diff --git a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiAP.cs b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiAP.cs index cc72ad680..919ae1db2 100755 --- a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiAP.cs +++ b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiAP.cs @@ -135,8 +135,12 @@ namespace Tizen.Network.WiFi if (_disposed) return; - Interop.WiFi.AP.Destroy(_apHandle); - _apHandle = IntPtr.Zero; + Log.Info(Globals.LogTag, "WiFiAP Handle HashCode: " + _apHandle.GetHashCode()); + int ret = Interop.WiFi.AP.Destroy(_apHandle); + if (ret == (int)WiFiError.None) + { + _apHandle = IntPtr.Zero; + } _disposed = true; } @@ -203,6 +207,9 @@ namespace Tizen.Network.WiFi /// /// 3 /// A task indicating whether the connect method is done or not. + /// + /// This method must be called from MainThread. + /// /// http://tizen.org/feature/network.wifi /// http://tizen.org/privilege/network.set /// http://tizen.org/privilege/network.get @@ -214,7 +221,7 @@ namespace Tizen.Network.WiFi /// Thrown when the method failed due to an invalid operation. public Task ConnectAsync() { - Log.Info(Globals.LogTag, "ConnectAsync"); + Log.Info(Globals.LogTag, "ConnectAsync HashCode: " + _apHandle.GetHashCode()); if (_disposed) { throw new ObjectDisposedException("Invalid AP instance (Object may have been disposed or released)"); @@ -271,6 +278,9 @@ namespace Tizen.Network.WiFi /// 3 /// A WpsInfo instance which is type of WpsPbcInfo or WpsPinInfo. /// A task indicating whether the ConnectWps method is done or not. + /// + /// This method must be called from MainThread. + /// /// http://tizen.org/feature/network.wifi /// http://tizen.org/privilege/network.profile /// http://tizen.org/privilege/network.get @@ -363,7 +373,8 @@ namespace Tizen.Network.WiFi /// A WpsInfo instance which is of type WpsPbcInfo or WpsPinInfo. /// A task which contains Connected access point information. /// - /// If WpsPinInfo is used, its object has to be constructed with a pin which must be 4 or 8 characters long. + /// If WpsPinInfo is used, its object has to be constructed with a pin which must be 4 or 8 characters long. \n + /// This method must be called from MainThread. /// /// http://tizen.org/feature/network.wifi /// http://tizen.org/privilege/network.set