OSDN Git Service

Try to prevent getting nullref immedately after login because clientDir is null
authorLatif Khalifa <latifer@streamgrid.net>
Sat, 11 Jul 2009 15:19:37 +0000 (15:19 +0000)
committerLatif Khalifa <latifer@streamgrid.net>
Sat, 11 Jul 2009 15:19:37 +0000 (15:19 +0000)
git-svn-id: https://radegast.googlecode.com/svn/trunk@98 f7a694da-4d33-11de-9ad6-1127a62b9fcd

Radegast/Core/RadegastInstance.cs

index b6e92be..c06f4f8 100644 (file)
@@ -70,11 +70,23 @@ namespace Radegast
         /// </summary>\r
         public string UserDir { get { return userDir; } }\r
 \r
-        private string clientDir;\r
         /// <summary>\r
         /// Grid client's user dir for settings and logs\r
         /// </summary>\r
-        public string ClientDir { get { return clientDir; } }\r
+        public string ClientDir\r
+        {\r
+            get\r
+            {\r
+                if (client != null && client.Self != null && !string.IsNullOrEmpty(client.Self.Name))\r
+                {\r
+                    return Path.Combine(userDir, client.Self.Name);\r
+                }\r
+                else\r
+                {\r
+                    return Environment.CurrentDirectory;\r
+                }\r
+            }\r
+        }\r
 \r
         public string InventoryCacheFileName { get { return Path.Combine(ClientDir, "inventory.cache"); } }\r
 \r
@@ -143,8 +155,6 @@ namespace Radegast
             client.Groups.OnGroupDropped += new GroupManager.GroupDroppedCallback(Groups_OnGroupDropped);\r
             client.Groups.OnGroupJoined += new GroupManager.GroupJoinedCallback(Groups_OnGroupJoined);\r
             client.Avatars.OnAvatarNames += new AvatarManager.AvatarNamesCallback(Avatars_OnAvatarNames);\r
-            client.Network.OnLogin += new NetworkManager.LoginCallback(Network_OnLogin);\r
-            client.Network.OnDisconnected += new NetworkManager.DisconnectedCallback(Network_OnDisconnected);\r
         }\r
 \r
         public void CleanUp()\r
@@ -156,8 +166,6 @@ namespace Radegast
                 client.Groups.OnGroupDropped -= new GroupManager.GroupDroppedCallback(Groups_OnGroupDropped);\r
                 client.Groups.OnGroupJoined -= new GroupManager.GroupJoinedCallback(Groups_OnGroupJoined);\r
                 client.Avatars.OnAvatarNames -= new AvatarManager.AvatarNamesCallback(Avatars_OnAvatarNames);\r
-                client.Network.OnLogin -= new NetworkManager.LoginCallback(Network_OnLogin);\r
-                client.Network.OnDisconnected -= new NetworkManager.DisconnectedCallback(Network_OnDisconnected);\r
             }\r
 \r
             if (MonoRuntime)\r
@@ -245,35 +253,8 @@ namespace Radegast
             client.Groups.RequestCurrentGroups();\r
         }\r
 \r
-        void Network_OnDisconnected(NetworkManager.DisconnectType reason, string message)\r
-        {\r
-            clientDir = null;\r
-        }\r
-\r
-        void Network_OnLogin(LoginStatus login, string message)\r
-        {\r
-            if (login != LoginStatus.Success)\r
-                return;\r
-\r
-            clientDir = Path.Combine(userDir, client.Self.Name);\r
-            try\r
-            {\r
-                if (!Directory.Exists(clientDir))\r
-                {\r
-                    Directory.CreateDirectory(clientDir);\r
-                }\r
-            }\r
-            catch (Exception)\r
-            {\r
-                clientDir = Directory.GetCurrentDirectory();\r
-            }\r
-\r
-        }\r
-\r
         public void LogClientMessage(string fileName, string message)\r
         {\r
-            if (clientDir == null) return;\r
-\r
             lock (this)\r
             {\r
                 try\r
@@ -283,7 +264,7 @@ namespace Radegast
                         fileName = fileName.Replace(lDisallowed.ToString(), "_");\r
                     }\r
 \r
-                    StreamWriter logfile = File.AppendText(Path.Combine(clientDir, fileName));\r
+                    StreamWriter logfile = File.AppendText(Path.Combine(ClientDir, fileName));\r
                     logfile.WriteLine(DateTime.Now.ToString("yyyy-MM-dd [HH:mm:ss] ") + message);\r
                     logfile.Close();\r
                     logfile.Dispose();\r