aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clarke Casey2009-04-14 17:15:09 +0000
committerJustin Clarke Casey2009-04-14 17:15:09 +0000
commit1894157dd3608a15c3336efc2d58eee0de092610 (patch)
treecfecb8e2104d9a88e82670e27ecedbda0466fa88
parent* refactor: rename AssetCache.Initialize() to AssetCache.Reset() to avoid hav... (diff)
downloadopensim-SC-1894157dd3608a15c3336efc2d58eee0de092610.zip
opensim-SC-1894157dd3608a15c3336efc2d58eee0de092610.tar.gz
opensim-SC-1894157dd3608a15c3336efc2d58eee0de092610.tar.bz2
opensim-SC-1894157dd3608a15c3336efc2d58eee0de092610.tar.xz
* Explicitly start the asset server thread so that unit tests can run single rather than multi-threaded (which may be behind the occasional test freezes)
-rw-r--r--OpenSim/Framework/Communications/Cache/AssetServerBase.cs39
-rw-r--r--OpenSim/Framework/Communications/Cache/CryptoGridAssetClient.cs5
-rw-r--r--OpenSim/Framework/Communications/Cache/GridAssetClient.cs5
-rw-r--r--OpenSim/Framework/Communications/Cache/SQLAssetServer.cs5
-rw-r--r--OpenSim/Framework/Communications/Tests/Cache/AssetCacheTests.cs4
-rw-r--r--OpenSim/Framework/IAssetServer.cs12
-rw-r--r--OpenSim/Region/Application/OpenSimBase.cs2
-rw-r--r--OpenSim/Tests/Common/Mock/TestCommunicationsManager.cs1
8 files changed, 36 insertions, 37 deletions
diff --git a/OpenSim/Framework/Communications/Cache/AssetServerBase.cs b/OpenSim/Framework/Communications/Cache/AssetServerBase.cs
index 1d0c030..343667a 100644
--- a/OpenSim/Framework/Communications/Cache/AssetServerBase.cs
+++ b/OpenSim/Framework/Communications/Cache/AssetServerBase.cs
@@ -42,7 +42,7 @@ namespace OpenSim.Framework.Communications.Cache
42 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 42 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
43 43
44 protected IAssetReceiver m_receiver; 44 protected IAssetReceiver m_receiver;
45 protected BlockingQueue<AssetRequest> m_assetRequests; 45 protected BlockingQueue<AssetRequest> m_assetRequests = new BlockingQueue<AssetRequest>();
46 protected Thread m_localAssetServerThread; 46 protected Thread m_localAssetServerThread;
47 protected IAssetDataPlugin m_assetProvider; 47 protected IAssetDataPlugin m_assetProvider;
48 48
@@ -109,6 +109,22 @@ namespace OpenSim.Framework.Communications.Cache
109 // Temporarily hardcoded - should be a plugin 109 // Temporarily hardcoded - should be a plugin
110 protected IAssetLoader assetLoader = new AssetLoaderFileSystem(); 110 protected IAssetLoader assetLoader = new AssetLoaderFileSystem();
111 111
112 public virtual void Start()
113 {
114 m_log.Debug("[ASSET SERVER]: Starting asset server");
115
116 m_localAssetServerThread = new Thread(RunRequests);
117 m_localAssetServerThread.Name = "LocalAssetServerThread";
118 m_localAssetServerThread.IsBackground = true;
119 m_localAssetServerThread.Start();
120 ThreadTracker.Add(m_localAssetServerThread);
121 }
122
123 public virtual void Stop()
124 {
125 m_localAssetServerThread.Abort();
126 }
127
112 public abstract void StoreAsset(AssetBase asset); 128 public abstract void StoreAsset(AssetBase asset);
113 129
114 /// <summary> 130 /// <summary>
@@ -121,8 +137,8 @@ namespace OpenSim.Framework.Communications.Cache
121 /// Thrown if the request failed for some other reason than that the 137 /// Thrown if the request failed for some other reason than that the
122 /// asset cannot be found. 138 /// asset cannot be found.
123 /// </exception> 139 /// </exception>
124 protected abstract AssetBase GetAsset(AssetRequest req); 140 protected abstract AssetBase GetAsset(AssetRequest req);
125 141
126 /// <summary> 142 /// <summary>
127 /// Process an asset request. This method will call GetAsset(AssetRequest req) 143 /// Process an asset request. This method will call GetAsset(AssetRequest req)
128 /// on the subclass. 144 /// on the subclass.
@@ -169,18 +185,6 @@ namespace OpenSim.Framework.Communications.Cache
169 assetLoader.ForEachDefaultXmlAsset(pAssetSetsXml, StoreAsset); 185 assetLoader.ForEachDefaultXmlAsset(pAssetSetsXml, StoreAsset);
170 } 186 }
171 187
172 public AssetServerBase()
173 {
174 m_log.Info("[ASSET SERVER]: Starting asset storage system");
175 m_assetRequests = new BlockingQueue<AssetRequest>();
176
177 m_localAssetServerThread = new Thread(RunRequests);
178 m_localAssetServerThread.Name = "LocalAssetServerThread";
179 m_localAssetServerThread.IsBackground = true;
180 m_localAssetServerThread.Start();
181 ThreadTracker.Add(m_localAssetServerThread);
182 }
183
184 private void RunRequests() 188 private void RunRequests()
185 { 189 {
186 while (true) // Since it's a 'blocking queue' 190 while (true) // Since it's a 'blocking queue'
@@ -222,11 +226,6 @@ namespace OpenSim.Framework.Communications.Cache
222 m_assetProvider.UpdateAsset(asset); 226 m_assetProvider.UpdateAsset(asset);
223 } 227 }
224 228
225 public virtual void Close()
226 {
227 m_localAssetServerThread.Abort();
228 }
229
230 public void SetServerInfo(string ServerUrl, string ServerKey) 229 public void SetServerInfo(string ServerUrl, string ServerKey)
231 { 230 {
232 } 231 }
diff --git a/OpenSim/Framework/Communications/Cache/CryptoGridAssetClient.cs b/OpenSim/Framework/Communications/Cache/CryptoGridAssetClient.cs
index f1c19fa..6e4dd1c 100644
--- a/OpenSim/Framework/Communications/Cache/CryptoGridAssetClient.cs
+++ b/OpenSim/Framework/Communications/Cache/CryptoGridAssetClient.cs
@@ -554,11 +554,6 @@ namespace OpenSim.Framework.Communications.Cache
554 } 554 }
555 } 555 }
556 556
557 public override void Close()
558 {
559 throw new Exception("The method or operation is not implemented.");
560 }
561
562 #endregion 557 #endregion
563 } 558 }
564} 559}
diff --git a/OpenSim/Framework/Communications/Cache/GridAssetClient.cs b/OpenSim/Framework/Communications/Cache/GridAssetClient.cs
index 7131cb5..c7d4c99 100644
--- a/OpenSim/Framework/Communications/Cache/GridAssetClient.cs
+++ b/OpenSim/Framework/Communications/Cache/GridAssetClient.cs
@@ -135,11 +135,6 @@ namespace OpenSim.Framework.Communications.Cache
135 } 135 }
136 } 136 }
137 137
138 public override void Close()
139 {
140 throw new Exception("The method or operation is not implemented.");
141 }
142
143 #endregion 138 #endregion
144 } 139 }
145} 140}
diff --git a/OpenSim/Framework/Communications/Cache/SQLAssetServer.cs b/OpenSim/Framework/Communications/Cache/SQLAssetServer.cs
index 41a9561..227744d 100644
--- a/OpenSim/Framework/Communications/Cache/SQLAssetServer.cs
+++ b/OpenSim/Framework/Communications/Cache/SQLAssetServer.cs
@@ -100,11 +100,6 @@ namespace OpenSim.Framework.Communications.Cache
100 } 100 }
101 } 101 }
102 102
103 public override void Close()
104 {
105 base.Close();
106 }
107
108 protected override AssetBase GetAsset(AssetRequest req) 103 protected override AssetBase GetAsset(AssetRequest req)
109 { 104 {
110 return m_assetProvider.FetchAsset(req.AssetID); 105 return m_assetProvider.FetchAsset(req.AssetID);
diff --git a/OpenSim/Framework/Communications/Tests/Cache/AssetCacheTests.cs b/OpenSim/Framework/Communications/Tests/Cache/AssetCacheTests.cs
index 9d9810b..264bfe1 100644
--- a/OpenSim/Framework/Communications/Tests/Cache/AssetCacheTests.cs
+++ b/OpenSim/Framework/Communications/Tests/Cache/AssetCacheTests.cs
@@ -62,7 +62,9 @@ namespace OpenSim.Framework.Communications.Tests
62 TestAssetDataPlugin assetPlugin = new TestAssetDataPlugin(); 62 TestAssetDataPlugin assetPlugin = new TestAssetDataPlugin();
63 assetPlugin.CreateAsset(asset); 63 assetPlugin.CreateAsset(asset);
64 64
65 IAssetCache assetCache = new AssetCache(new SQLAssetServer(assetPlugin)); 65 IAssetServer assetServer = new SQLAssetServer(assetPlugin);
66 IAssetCache assetCache = new AssetCache(assetServer);
67 assetServer.Start();
66 68
67 lock (this) 69 lock (this)
68 { 70 {
diff --git a/OpenSim/Framework/IAssetServer.cs b/OpenSim/Framework/IAssetServer.cs
index f76d125..0a08ff6 100644
--- a/OpenSim/Framework/IAssetServer.cs
+++ b/OpenSim/Framework/IAssetServer.cs
@@ -37,11 +37,21 @@ namespace OpenSim.Framework
37 void Initialise(ConfigSettings settings); 37 void Initialise(ConfigSettings settings);
38 void Initialise(ConfigSettings settings, string url, string dir, bool test); 38 void Initialise(ConfigSettings settings, string url, string dir, bool test);
39 void Initialise(ConfigSettings settings, string url); 39 void Initialise(ConfigSettings settings, string url);
40
41 /// <summary>
42 /// Start the asset server
43 /// </summary>
44 void Start();
45
46 /// <summary>
47 /// Stop the asset server
48 /// </summary>
49 void Stop();
50
40 void SetReceiver(IAssetReceiver receiver); 51 void SetReceiver(IAssetReceiver receiver);
41 void RequestAsset(UUID assetID, bool isTexture); 52 void RequestAsset(UUID assetID, bool isTexture);
42 void StoreAsset(AssetBase asset); 53 void StoreAsset(AssetBase asset);
43 void UpdateAsset(AssetBase asset); 54 void UpdateAsset(AssetBase asset);
44 void Close();
45 } 55 }
46 56
47 /// <summary> 57 /// <summary>
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs
index 3840240..7aa9f99 100644
--- a/OpenSim/Region/Application/OpenSimBase.cs
+++ b/OpenSim/Region/Application/OpenSimBase.cs
@@ -381,6 +381,8 @@ namespace OpenSim
381 // Initialize the asset cache, passing a reference to the selected 381 // Initialize the asset cache, passing a reference to the selected
382 // asset server interface. 382 // asset server interface.
383 m_assetCache = ResolveAssetCache(assetServer); 383 m_assetCache = ResolveAssetCache(assetServer);
384
385 assetServer.Start();
384 } 386 }
385 387
386 // This method loads the identified asset server, passing an approrpiately 388 // This method loads the identified asset server, passing an approrpiately
diff --git a/OpenSim/Tests/Common/Mock/TestCommunicationsManager.cs b/OpenSim/Tests/Common/Mock/TestCommunicationsManager.cs
index 8416fb6..3b39d36 100644
--- a/OpenSim/Tests/Common/Mock/TestCommunicationsManager.cs
+++ b/OpenSim/Tests/Common/Mock/TestCommunicationsManager.cs
@@ -61,6 +61,7 @@ namespace OpenSim.Tests.Common.Mock
61 61
62 SQLAssetServer assetService = new SQLAssetServer(new TestAssetDataPlugin()); 62 SQLAssetServer assetService = new SQLAssetServer(new TestAssetDataPlugin());
63 m_assetCache = new AssetCache(assetService); 63 m_assetCache = new AssetCache(assetService);
64 m_assetCache.AssetServer.Start();
64 65
65 LocalInventoryService lis = new LocalInventoryService(); 66 LocalInventoryService lis = new LocalInventoryService();
66 lis.AddPlugin(m_inventoryDataPlugin); 67 lis.AddPlugin(m_inventoryDataPlugin);