aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Data/MSSQL/MSSQLRegionData.cs1
-rw-r--r--OpenSim/Framework/Util.cs22
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs5
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs51
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs2
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs6
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs4
-rw-r--r--OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs2
-rw-r--r--OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs2
-rw-r--r--OpenSim/Services/InventoryService/InventoryService.cs2
10 files changed, 65 insertions, 32 deletions
diff --git a/OpenSim/Data/MSSQL/MSSQLRegionData.cs b/OpenSim/Data/MSSQL/MSSQLRegionData.cs
index c9e4bfe..adedcce 100644
--- a/OpenSim/Data/MSSQL/MSSQLRegionData.cs
+++ b/OpenSim/Data/MSSQL/MSSQLRegionData.cs
@@ -210,6 +210,7 @@ namespace OpenSim.Data.MSSQL
210 { 210 {
211 foreach (SceneObjectPart objectPart in allPrimsWithInventory) 211 foreach (SceneObjectPart objectPart in allPrimsWithInventory)
212 { 212 {
213 command.Parameters.Clear();
213 command.Parameters.Add(_Database.CreateParameter("@PrimID", objectPart.UUID)); 214 command.Parameters.Add(_Database.CreateParameter("@PrimID", objectPart.UUID));
214 215
215 List<TaskInventoryItem> inventory = new List<TaskInventoryItem>(); 216 List<TaskInventoryItem> inventory = new List<TaskInventoryItem>();
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index bbb0ae2..58344f3 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -1169,5 +1169,27 @@ namespace OpenSim.Framework
1169 1169
1170 return found.ToArray(); 1170 return found.ToArray();
1171 } 1171 }
1172
1173 #region FireAndForget Threading Pattern
1174
1175 public static void FireAndForget(System.Threading.WaitCallback callback)
1176 {
1177 callback.BeginInvoke(null, EndFireAndForget, callback);
1178 }
1179
1180 public static void FireAndForget(System.Threading.WaitCallback callback, object obj)
1181 {
1182 callback.BeginInvoke(obj, EndFireAndForget, callback);
1183 }
1184
1185 private static void EndFireAndForget(IAsyncResult ar)
1186 {
1187 System.Threading.WaitCallback callback = (System.Threading.WaitCallback)ar.AsyncState;
1188
1189 callback.EndInvoke(ar);
1190 ar.AsyncWaitHandle.Close();
1191 }
1192
1193 #endregion FireAndForget Threading Pattern
1172 } 1194 }
1173} 1195}
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
index 4ee90e2..f73a7e3 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
@@ -199,6 +199,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
199 InventoryFolderImpl inventoryFolder = null; 199 InventoryFolderImpl inventoryFolder = null;
200 InventoryItemBase inventoryItem = null; 200 InventoryItemBase inventoryItem = null;
201 201
202 /*
202 if (!m_userInfo.HasReceivedInventory) 203 if (!m_userInfo.HasReceivedInventory)
203 { 204 {
204 // If the region server has access to the user admin service (by which users are created), 205 // If the region server has access to the user admin service (by which users are created),
@@ -220,13 +221,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
220 m_userInfo.FetchInventory(); 221 m_userInfo.FetchInventory();
221 } 222 }
222 } 223 }
224 */
223 225
224 bool foundStar = false; 226 bool foundStar = false;
225 227
226 // Eliminate double slashes and any leading / on the path. This might be better done within InventoryFolderImpl 228 // Eliminate double slashes and any leading / on the path. This might be better done within InventoryFolderImpl
227 // itself (possibly at a small loss in efficiency). 229 // itself (possibly at a small loss in efficiency).
228 string[] components 230 string[] components
229 = m_invPath.Split(new string[] { InventoryFolderImpl.PATH_DELIMITER }, StringSplitOptions.RemoveEmptyEntries); 231 = m_invPath.Split(
232 new string[] { InventoryFolderImpl.PATH_DELIMITER }, StringSplitOptions.RemoveEmptyEntries);
230 233
231 int maxComponentIndex = components.Length - 1; 234 int maxComponentIndex = components.Length - 1;
232 235
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs
index d3ba5fe..c495e02 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs
@@ -64,6 +64,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
64 /// </value> 64 /// </value>
65 private Dictionary<UUID, Scene> m_scenes = new Dictionary<UUID, Scene>(); 65 private Dictionary<UUID, Scene> m_scenes = new Dictionary<UUID, Scene>();
66 private Scene m_aScene; 66 private Scene m_aScene;
67
67 /// <value> 68 /// <value>
68 /// The comms manager we will use for all comms requests 69 /// The comms manager we will use for all comms requests
69 /// </value> 70 /// </value>
@@ -110,8 +111,30 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
110 InventoryArchiveSaved handlerInventoryArchiveSaved = OnInventoryArchiveSaved; 111 InventoryArchiveSaved handlerInventoryArchiveSaved = OnInventoryArchiveSaved;
111 if (handlerInventoryArchiveSaved != null) 112 if (handlerInventoryArchiveSaved != null)
112 handlerInventoryArchiveSaved(succeeded, userInfo, invPath, saveStream, reportedException); 113 handlerInventoryArchiveSaved(succeeded, userInfo, invPath, saveStream, reportedException);
114 }
115
116 public void ArchiveInventory(string firstName, string lastName, string invPath, Stream saveStream)
117 {
118 if (m_scenes.Count > 0)
119 {
120 CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
121
122 if (userInfo != null)
123 new InventoryArchiveWriteRequest(this, userInfo, invPath, saveStream).Execute();
124 }
125 }
126
127 public void ArchiveInventory(string firstName, string lastName, string invPath, string savePath)
128 {
129 if (m_scenes.Count > 0)
130 {
131 CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
132
133 if (userInfo != null)
134 new InventoryArchiveWriteRequest(this, userInfo, invPath, savePath).Execute();
135 }
113 } 136 }
114 137
115 public void DearchiveInventory(string firstName, string lastName, string invPath, Stream loadStream) 138 public void DearchiveInventory(string firstName, string lastName, string invPath, Stream loadStream)
116 { 139 {
117 if (m_scenes.Count > 0) 140 if (m_scenes.Count > 0)
@@ -125,18 +148,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
125 UpdateClientWithLoadedNodes(userInfo, request.Execute()); 148 UpdateClientWithLoadedNodes(userInfo, request.Execute());
126 } 149 }
127 } 150 }
128 } 151 }
129
130 public void ArchiveInventory(string firstName, string lastName, string invPath, Stream saveStream)
131 {
132 if (m_scenes.Count > 0)
133 {
134 CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
135
136 if (userInfo != null)
137 new InventoryArchiveWriteRequest(this, userInfo, invPath, saveStream).Execute();
138 }
139 }
140 152
141 public void DearchiveInventory(string firstName, string lastName, string invPath, string loadPath) 153 public void DearchiveInventory(string firstName, string lastName, string invPath, string loadPath)
142 { 154 {
@@ -151,18 +163,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
151 UpdateClientWithLoadedNodes(userInfo, request.Execute()); 163 UpdateClientWithLoadedNodes(userInfo, request.Execute());
152 } 164 }
153 } 165 }
154 } 166 }
155
156 public void ArchiveInventory(string firstName, string lastName, string invPath, string savePath)
157 {
158 if (m_scenes.Count > 0)
159 {
160 CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
161
162 if (userInfo != null)
163 new InventoryArchiveWriteRequest(this, userInfo, invPath, savePath).Execute();
164 }
165 }
166 167
167 /// <summary> 168 /// <summary>
168 /// Load inventory from an inventory file archive 169 /// Load inventory from an inventory file archive
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs
index 621e9d2..7b4e374 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs
@@ -272,7 +272,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
272 272
273 if (asset != null) 273 if (asset != null)
274 { 274 {
275 handler.BeginInvoke(id, sender, asset, null, null); 275 Util.FireAndForget(delegate { handler(id, sender, asset); });
276 return true; 276 return true;
277 } 277 }
278 278
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs
index b13a116..fd3aaf4 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs
@@ -211,7 +211,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
211 211
212 if (asset != null) 212 if (asset != null)
213 { 213 {
214 handler.BeginInvoke(id, sender, asset, null, null); 214 Util.FireAndForget(delegate { handler(id, sender, asset); });
215 return true; 215 return true;
216 } 216 }
217 217
@@ -219,8 +219,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
219 { 219 {
220 if ((a != null) && (m_Cache != null)) 220 if ((a != null) && (m_Cache != null))
221 m_Cache.Cache(a); 221 m_Cache.Cache(a);
222 222
223 handler.BeginInvoke(assetID, s, a, null, null); 223 Util.FireAndForget(delegate { handler(assetID, s, a); });
224 }); 224 });
225 } 225 }
226 226
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
index 55b100b..fddba86 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
@@ -457,6 +457,8 @@ namespace OpenSim.Region.Framework.Scenes
457 457
458 void SendInventoryComplete(IAsyncResult iar) 458 void SendInventoryComplete(IAsyncResult iar)
459 { 459 {
460 SendInventoryDelegate d = (SendInventoryDelegate)iar.AsyncState;
461 d.EndInvoke(iar);
460 } 462 }
461 463
462 /// <summary> 464 /// <summary>
@@ -622,6 +624,8 @@ namespace OpenSim.Region.Framework.Scenes
622 624
623 private void PurgeFolderCompleted(IAsyncResult iar) 625 private void PurgeFolderCompleted(IAsyncResult iar)
624 { 626 {
627 PurgeFolderDelegate d = (PurgeFolderDelegate)iar.AsyncState;
628 d.EndInvoke(iar);
625 } 629 }
626 } 630 }
627} 631}
diff --git a/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs b/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs
index d9748d4..ffc8e4c 100644
--- a/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs
@@ -177,7 +177,7 @@ namespace OpenSim.Services.Connectors
177 } 177 }
178 else 178 else
179 { 179 {
180 handler.BeginInvoke(id, sender, asset, null, null); 180 Util.FireAndForget(delegate { handler(id, sender, asset); });
181 } 181 }
182 182
183 return true; 183 return true;
diff --git a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs
index a2261ba..cef678d 100644
--- a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs
@@ -461,6 +461,8 @@ namespace OpenSim.Services.Connectors
461 461
462 private void MoveItemsCompleted(IAsyncResult iar) 462 private void MoveItemsCompleted(IAsyncResult iar)
463 { 463 {
464 MoveItemsDelegate d = (MoveItemsDelegate)iar.AsyncState;
465 d.EndInvoke(iar);
464 } 466 }
465 467
466 public bool MoveItems(string userID, List<InventoryItemBase> items, UUID sessionID) 468 public bool MoveItems(string userID, List<InventoryItemBase> items, UUID sessionID)
diff --git a/OpenSim/Services/InventoryService/InventoryService.cs b/OpenSim/Services/InventoryService/InventoryService.cs
index f04754b..b98e256 100644
--- a/OpenSim/Services/InventoryService/InventoryService.cs
+++ b/OpenSim/Services/InventoryService/InventoryService.cs
@@ -232,7 +232,7 @@ namespace OpenSim.Services.InventoryService
232 m_log.WarnFormat("[INVENTORY SERVICE]: User {0} inventory not available", userID); 232 m_log.WarnFormat("[INVENTORY SERVICE]: User {0} inventory not available", userID);
233 } 233 }
234 234
235 callback.BeginInvoke(folders, items, null, null); 235 Util.FireAndForget(delegate { callback(folders, items); });
236 } 236 }
237 237
238 public InventoryCollection GetFolderContent(UUID userID, UUID folderID) 238 public InventoryCollection GetFolderContent(UUID userID, UUID folderID)