Jelajahi Sumber

changed to native line ending encoding

Sean Dague 17 tahun lalu
induk
melakukan
2a3c79df83
100 mengubah file dengan 20060 tambahan dan 20060 penghapusan
  1. 7241 7241
      OpenSim.FxCop
  2. 71 71
      OpenSim/Framework/Communications/CommunicationsManager.cs
  3. 41 41
      OpenSim/Framework/Communications/IGridServices.cs
  4. 38 38
      OpenSim/Framework/Communications/IInterRegionCommunications.cs
  5. 17 17
      OpenSim/Framework/Communications/IInventoryServices.cs
  6. 43 43
      OpenSim/Framework/Communications/IUserServices.cs
  7. 60 60
      OpenSim/Framework/Communications/Properties/AssemblyInfo.cs
  8. 77 77
      OpenSim/Framework/Communications/caches/CachedUserInfo.cs
  9. 51 51
      OpenSim/Framework/Communications/caches/InventoryFolder.cs
  10. 107 107
      OpenSim/Framework/Communications/caches/UserProfileCache.cs
  11. 56 56
      OpenSim/Framework/Console/AssemblyInfo.cs
  12. 35 35
      OpenSim/Framework/Console/ConsoleCallbacksBase.cs
  13. 282 282
      OpenSim/Framework/Console/LogBase.cs
  14. 47 47
      OpenSim/Framework/Console/MainLog.cs
  15. 162 162
      OpenSim/Framework/Data.DB4o/DB4oGridData.cs
  16. 163 163
      OpenSim/Framework/Data.DB4o/DB4oManager.cs
  17. 202 202
      OpenSim/Framework/Data.DB4o/DB4oUserData.cs
  18. 33 33
      OpenSim/Framework/Data.DB4o/Properties/AssemblyInfo.cs
  19. 194 194
      OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs
  20. 211 211
      OpenSim/Framework/Data.MSSQL/MSSQLManager.cs
  21. 33 33
      OpenSim/Framework/Data.MSSQL/Properties/AssemblyInfo.cs
  22. 287 287
      OpenSim/Framework/Data.MySQL/MySQLGridData.cs
  23. 309 309
      OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs
  24. 105 105
      OpenSim/Framework/Data.MySQL/MySQLLogData.cs
  25. 606 606
      OpenSim/Framework/Data.MySQL/MySQLManager.cs
  26. 256 256
      OpenSim/Framework/Data.MySQL/MySQLUserData.cs
  27. 33 33
      OpenSim/Framework/Data.MySQL/Properties/AssemblyInfo.cs
  28. 33 33
      OpenSim/Framework/Data.SQLite/Properties/AssemblyInfo.cs
  29. 197 197
      OpenSim/Framework/Data.SQLite/SQLiteGridData.cs
  30. 206 206
      OpenSim/Framework/Data.SQLite/SQLiteManager.cs
  31. 111 111
      OpenSim/Framework/Data/GridData.cs
  32. 90 90
      OpenSim/Framework/Data/ILogData.cs
  33. 96 96
      OpenSim/Framework/Data/IniConfig.cs
  34. 197 197
      OpenSim/Framework/Data/InventoryData.cs
  35. 33 33
      OpenSim/Framework/Data/Properties/AssemblyInfo.cs
  36. 47 47
      OpenSim/Framework/Data/ReservationData.cs
  37. 192 192
      OpenSim/Framework/Data/SimProfileData.cs
  38. 128 128
      OpenSim/Framework/Data/UserData.cs
  39. 180 180
      OpenSim/Framework/Data/UserProfileData.cs
  40. 265 265
      OpenSim/Framework/General/AgentInventory.cs
  41. 129 129
      OpenSim/Framework/General/AuthenticateSessionBase.cs
  42. 58 58
      OpenSim/Framework/General/BlockingQueue.cs
  43. 36 36
      OpenSim/Framework/General/ClientManager.cs
  44. 46 46
      OpenSim/Framework/General/IRegionCommsListener.cs
  45. 43 43
      OpenSim/Framework/General/Interfaces/AuthenticateResponse.cs
  46. 38 38
      OpenSim/Framework/General/Interfaces/Config/IGenericConfig.cs
  47. 59 59
      OpenSim/Framework/General/Interfaces/Config/IGridConfig.cs
  48. 53 53
      OpenSim/Framework/General/Interfaces/Config/IUserConfig.cs
  49. 64 64
      OpenSim/Framework/General/Interfaces/IAssetServer.cs
  50. 195 195
      OpenSim/Framework/General/Interfaces/IClientAPI.cs
  51. 71 71
      OpenSim/Framework/General/Interfaces/ILocalStorage.cs
  52. 39 39
      OpenSim/Framework/General/Interfaces/IUserServer.cs
  53. 42 42
      OpenSim/Framework/General/Interfaces/IWorld.cs
  54. 127 127
      OpenSim/Framework/General/NpcClientBase.cs
  55. 31 31
      OpenSim/Framework/General/Properties/AssemblyInfo.cs
  56. 103 103
      OpenSim/Framework/General/RegionCommsListener.cs
  57. 135 135
      OpenSim/Framework/General/Remoting.cs
  58. 49 49
      OpenSim/Framework/General/Types/AgentCiruitData.cs
  59. 57 57
      OpenSim/Framework/General/Types/AgentWearable.cs
  60. 46 46
      OpenSim/Framework/General/Types/AssetBase.cs
  61. 59 59
      OpenSim/Framework/General/Types/AssetLandmark.cs
  62. 47 47
      OpenSim/Framework/General/Types/AssetStorage.cs
  63. 93 93
      OpenSim/Framework/General/Types/EstateSettings.cs
  64. 49 49
      OpenSim/Framework/General/Types/Login.cs
  65. 23 23
      OpenSim/Framework/General/Types/MapBlockData.cs
  66. 42 42
      OpenSim/Framework/General/Types/NeighbourInfo.cs
  67. 219 219
      OpenSim/Framework/General/Types/NetworkServersInfo.cs
  68. 120 120
      OpenSim/Framework/General/Types/ParcelData.cs
  69. 228 228
      OpenSim/Framework/General/Types/PrimData.cs
  70. 109 109
      OpenSim/Framework/General/Types/PrimitiveBaseShape.cs
  71. 121 121
      OpenSim/Framework/General/Types/RegionHandle.cs
  72. 342 342
      OpenSim/Framework/General/Types/RegionInfo.cs
  73. 127 127
      OpenSim/Framework/General/Types/UUID.cs
  74. 87 87
      OpenSim/Framework/General/UserProfile.cs
  75. 184 184
      OpenSim/Framework/General/Util.cs
  76. 33 33
      OpenSim/Framework/GenericConfig/Xml/Properties/AssemblyInfo.cs
  77. 122 122
      OpenSim/Framework/GenericConfig/Xml/XmlConfig.cs
  78. 224 224
      OpenSim/Framework/Servers/BaseHttpServer.cs
  79. 40 40
      OpenSim/Framework/Servers/BaseStreamHandler.cs
  80. 49 49
      OpenSim/Framework/Servers/BinaryStreamHandler.cs
  81. 126 126
      OpenSim/Framework/Servers/CheckSumServer.cs
  82. 22 22
      OpenSim/Framework/Servers/IStreamHandler.cs
  83. 31 31
      OpenSim/Framework/Servers/RestMethod.cs
  84. 31 31
      OpenSim/Framework/Servers/RestStreamHandler.cs
  85. 87 87
      OpenSim/Framework/Servers/UDPServerBase.cs
  86. 33 33
      OpenSim/Framework/Servers/XmlRpcMethod.cs
  87. 643 643
      OpenSim/Framework/UserManager/LoginResponse.cs
  88. 631 631
      OpenSim/Framework/UserManager/UserManagerBase.cs
  89. 406 406
      OpenSim/Grid/AssetServer/Main.cs
  90. 58 58
      OpenSim/Grid/AssetServer/Properties/AssemblyInfo.cs
  91. 138 138
      OpenSim/Grid/Framework.Manager/GridManagementAgent.cs
  92. 93 93
      OpenSim/Grid/Framework.Manager/GridServerManager.cs
  93. 56 56
      OpenSim/Grid/GridServer.Config/AssemblyInfo.cs
  94. 160 160
      OpenSim/Grid/GridServer.Config/DbGridConfig.cs
  95. 710 710
      OpenSim/Grid/GridServer/GridManager.cs
  96. 258 258
      OpenSim/Grid/GridServer/Main.cs
  97. 58 58
      OpenSim/Grid/GridServer/Properties/AssemblyInfo.cs
  98. 125 125
      OpenSim/Grid/InventoryServer/InventoryManager.cs
  99. 87 87
      OpenSim/Grid/InventoryServer/Main.cs
  100. 33 33
      OpenSim/Grid/Manager/OpenGridServices.Manager/BlockingQueue.cs

+ 7241 - 7241
OpenSim.FxCop

@@ -1,7241 +1,7241 @@
-<?xml version="1.0" encoding="utf-8"?>
-<FxCopProject Version="1.35" Name="OpenSim">
- <ProjectOptions>
-  <SharedProject>True</SharedProject>
-  <Stylesheet Apply="False">http://www.gotdotnet.com/team/fxcop//xsl/1.35/FxCopReport.xsl</Stylesheet>
-  <SaveMessages>
-   <Project Status="Active, Excluded" NewOnly="False" />
-   <Report Status="Active" NewOnly="False" />
-  </SaveMessages>
-  <ProjectFile Compress="True" DefaultTargetCheck="True" DefaultRuleCheck="True" SaveByRuleGroup="" Deterministic="True" />
-  <EnableMultithreadedLoad>True</EnableMultithreadedLoad>
-  <EnableMultithreadedAnalysis>True</EnableMultithreadedAnalysis>
-  <SourceLookup>True</SourceLookup>
-  <AnalysisExceptionsThreshold>10</AnalysisExceptionsThreshold>
-  <RuleExceptionsThreshold>1</RuleExceptionsThreshold>
-  <Spelling Locale="en-us" />
-  <VersionAware>False</VersionAware>
-  <OverrideRuleVisibilities>False</OverrideRuleVisibilities>
-  <CustomDictionaries SearchFxCopDir="True" SearchUserProfile="True" SearchProjectDir="True" />
-  <SearchGlobalAssemblyCache>False</SearchGlobalAssemblyCache>
-  <DeadlockDetectionTimeout>120</DeadlockDetectionTimeout>
- </ProjectOptions>
- <Targets>
-  <AssemblyReferenceDirectories>
-   <Directory>$(ProjectDir)/lib/</Directory>
-  </AssemblyReferenceDirectories>
-  <Target Name="$(ProjectDir)/bin/OpenGridServices.ServerConsole.dll" Analyze="True" AnalyzeAllChildren="True" />
-  <Target Name="$(ProjectDir)/bin/OpenSim.Config.SimConfigDb4o.dll" Analyze="True" AnalyzeAllChildren="True" />
-  <Target Name="$(ProjectDir)/bin/OpenSim.exe" Analyze="True" AnalyzeAllChildren="True" />
-  <Target Name="$(ProjectDir)/bin/OpenSim.Framework.Console.dll" Analyze="True" AnalyzeAllChildren="True" />
-  <Target Name="$(ProjectDir)/bin/OpenSim.Framework.dll" Analyze="True" AnalyzeAllChildren="True" />
-  <Target Name="$(ProjectDir)/bin/OpenSim.GridInterfaces.Local.dll" Analyze="True" AnalyzeAllChildren="True" />
-  <Target Name="$(ProjectDir)/bin/OpenSim.GridInterfaces.Remote.dll" Analyze="True" AnalyzeAllChildren="True" />
-  <Target Name="$(ProjectDir)/bin/OpenSim.Physics.Manager.dll" Analyze="True" AnalyzeAllChildren="True" />
-  <Target Name="$(ProjectDir)/bin/OpenSim.RegionServer.dll" Analyze="True" AnalyzeAllChildren="True" />
-  <Target Name="$(ProjectDir)/bin/OpenSim.Storage.LocalStorageDb4o.dll" Analyze="True" AnalyzeAllChildren="True" />
-  <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.BasicPhysicsPlugin.dll" Analyze="True" AnalyzeAllChildren="True" />
-  <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.OdePlugin.dll" Analyze="True" AnalyzeAllChildren="True" />
-  <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.PhysXPlugin.dll" Analyze="True" AnalyzeAllChildren="True" />
- </Targets>
- <Rules>
-  <RuleFiles>
-   <RuleFile Name="$(FxCopDir)\Rules\DesignRules.dll" Enabled="True" AllRulesEnabled="True" />
-   <RuleFile Name="$(FxCopDir)\Rules\GlobalizationRules.dll" Enabled="True" AllRulesEnabled="True" />
-   <RuleFile Name="$(FxCopDir)\Rules\InteroperabilityRules.dll" Enabled="True" AllRulesEnabled="True" />
-   <RuleFile Name="$(FxCopDir)\Rules\MobilityRules.dll" Enabled="True" AllRulesEnabled="True" />
-   <RuleFile Name="$(FxCopDir)\Rules\NamingRules.dll" Enabled="True" AllRulesEnabled="True" />
-   <RuleFile Name="$(FxCopDir)\Rules\PerformanceRules.dll" Enabled="True" AllRulesEnabled="True" />
-   <RuleFile Name="$(FxCopDir)\Rules\PortabilityRules.dll" Enabled="True" AllRulesEnabled="True" />
-   <RuleFile Name="$(FxCopDir)\Rules\SecurityRules.dll" Enabled="True" AllRulesEnabled="True" />
-   <RuleFile Name="$(FxCopDir)\Rules\UsageRules.dll" Enabled="True" AllRulesEnabled="True" />
-  </RuleFiles>
-  <Groups />
-  <Settings />
- </Rules>
- <FxCopReport Version="1.35">
-  <Namespaces>
-   <Namespace Name="OpenSim">
-    <Messages>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Assets">
-    <Messages>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Assets</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.CAPS">
-    <Messages>
-     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
-      <Issue>
-       <Item>OpenSim.CAPS</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.CAPS</Item>
-      </Issue>
-     </Message>
-     <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>OpenSim.CAPS</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Config.SimConfigDb4o">
-    <Messages>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Config.SimConfigDb4o</Item>
-      </Issue>
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Config.SimConfigDb4o</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Framework.Assets">
-    <Messages>
-     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
-      <Issue>
-       <Item>OpenSim.Framework.Assets</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Framework.Assets</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Framework.Console">
-    <Messages>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Framework.Console</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Framework.Grid">
-    <Messages>
-     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
-      <Issue>
-       <Item>OpenSim.Framework.Grid</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Framework.Grid</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Framework.Interfaces">
-    <Messages>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Framework.Interfaces</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Framework.Inventory">
-    <Messages>
-     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
-      <Issue>
-       <Item>OpenSim.Framework.Inventory</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Framework.Inventory</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Framework.Sims">
-    <Messages>
-     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
-      <Issue>
-       <Item>OpenSim.Framework.Sims</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Framework.Sims</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Framework.Terrain">
-    <Messages>
-     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
-      <Issue>
-       <Item>OpenSim.Framework.Terrain</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Framework.Terrain</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Framework.User">
-    <Messages>
-     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
-      <Issue>
-       <Item>OpenSim.Framework.User</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Framework.User</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Framework.Utilities">
-    <Messages>
-     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
-      <Issue>
-       <Item>OpenSim.Framework.Utilities</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Framework.Utilities</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.GridInterfaces.Local">
-    <Messages>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.GridInterfaces.Local</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.GridInterfaces.Remote">
-    <Messages>
-     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
-      <Issue>
-       <Item>OpenSim.GridInterfaces.Remote</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.GridInterfaces.Remote</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Physics.BasicPhysicsPlugin">
-    <Messages>
-     <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Plugin</Item>
-       <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Physics.Manager">
-    <Messages>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Physics.Manager</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Physics.OdePlugin">
-    <Messages>
-     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
-      <Issue>
-       <Item>OpenSim.Physics.OdePlugin</Item>
-      </Issue>
-     </Message>
-     <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Plugin</Item>
-       <Item>OpenSim.Physics.OdePlugin</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Physics.OdePlugin</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Physics.PhysXPlugin">
-    <Messages>
-     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
-      <Issue>
-       <Item>OpenSim.Physics.PhysXPlugin</Item>
-      </Issue>
-     </Message>
-     <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Plugin</Item>
-       <Item>OpenSim.Physics.PhysXPlugin</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Physics.PhysXPlugin</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.Storage.LocalStorageDb4o">
-    <Messages>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.Storage.LocalStorageDb4o</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.types">
-    <Messages>
-     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
-      <Issue>
-       <Item>OpenSim.types</Item>
-      </Issue>
-     </Message>
-     <Message TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>OpenSim.types</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.types</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.UserServer">
-    <Messages>
-     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
-      <Issue>
-       <Item>OpenSim.UserServer</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.UserServer</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.world">
-    <Messages>
-     <Message TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>OpenSim.world</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.world</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-   <Namespace Name="OpenSim.world.scripting">
-    <Messages>
-     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
-      <Issue>
-       <Item>OpenSim.world.scripting</Item>
-      </Issue>
-     </Message>
-     <Message TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>OpenSim.world.scripting</Item>
-      </Issue>
-      <Issue Name="Namespace">
-       <Item>OpenSim.world.scripting</Item>
-      </Issue>
-     </Message>
-     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-      <Issue Name="Namespace">
-       <Item>Sim</Item>
-       <Item>OpenSim.world.scripting</Item>
-      </Issue>
-     </Message>
-    </Messages>
-   </Namespace>
-  </Namespaces>
-  <Targets>
-   <Target Name="$(ProjectDir)/bin/OpenGridServices.ServerConsole.dll">
-    <Modules>
-     <Module Name="opengridservices.serverconsole.dll">
-      <Messages>
-       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenGridServices.ServerConsole</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoStrongName">
-         <Item>OpenGridServices.ServerConsole</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttr">
-         <Item>OpenGridServices.ServerConsole</Item>
-        </Issue>
-       </Message>
-      </Messages>
-      <Namespaces>
-       <Namespace Name="ServerConsole">
-        <Types>
-         <Type Name="conscmd_callback">
-          <Messages>
-           <Message TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>conscmd_callback</Item>
-            </Issue>
-           </Message>
-           <Message Id="conscmd" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>conscmd</Item>
-             <Item>ServerConsole.conscmd_callback</Item>
-            </Issue>
-           </Message>
-           <Message TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>conscmd_callback</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="RunCmd(System.String,System.String[]):System.Void">
-            <Messages>
-             <Message Id="1#cmdparams" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>conscmd_callback.RunCmd(String, String[]):Void</Item>
-               <Item>cmdparams</Item>
-               <Item>cmdparams</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Show(System.String):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ShowWhat</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="ConsoleBase">
-          <Members>
-           <Member Name="CmdPrompt(System.String,System.String):System.String">
-            <Messages>
-             <Message Id="1#defaultresponse" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ConsoleBase.CmdPrompt(String, String):String</Item>
-               <Item>defaultresponse</Item>
-               <Item>defaultresponse</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CmdPrompt(System.String,System.String,System.String,System.String):System.String">
-            <Messages>
-             <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>OptionA</Item>
-              </Issue>
-             </Message>
-             <Message Id="3#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>OptionB</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#defaultresponse" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ConsoleBase.CmdPrompt(String, String, String, String):String</Item>
-               <Item>defaultresponse</Item>
-               <Item>defaultresponse</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PasswdPrompt(System.String):System.String">
-            <Messages>
-             <Message Id="Passwd" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Passwd</Item>
-               <Item>ConsoleBase.PasswdPrompt(String):String</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RunCmd(System.String,System.String[]):System.Object">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>Cmd</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#cmdparams" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ConsoleBase.RunCmd(String, String[]):Object</Item>
-               <Item>cmdparams</Item>
-               <Item>cmdparams</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ShowCommands(System.String):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ShowWhat</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Write(System.String):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>Line</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="WriteLine(System.String):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>Line</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="ConsoleBase+ConsoleType">
-          <Members>
-           <Member Name="SimChat">
-            <Messages>
-             <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Sim</Item>
-               <Item>ConsoleType.SimChat</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="TCP">
-            <Messages>
-             <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>ConsoleType.TCP</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="MainConsole">
-          <Messages>
-           <Message TypeName="StaticHolderTypesShouldNotHaveConstructors" Category="Microsoft.Design" CheckId="CA1053" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>MainConsole</Item>
-            </Issue>
-           </Message>
-          </Messages>
-         </Type>
-        </Types>
-       </Namespace>
-      </Namespaces>
-     </Module>
-    </Modules>
-   </Target>
-   <Target Name="$(ProjectDir)/bin/OpenSim.Config.SimConfigDb4o.dll">
-    <Modules>
-     <Module Name="opensim.config.simconfigdb4o.dll">
-      <Messages>
-       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenSim.Config.SimConfigDb4o</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoStrongName">
-         <Item>OpenSim.Config.SimConfigDb4o</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttr">
-         <Item>OpenSim.Config.SimConfigDb4o</Item>
-        </Issue>
-       </Message>
-      </Messages>
-      <Namespaces>
-       <Namespace Name="OpenSim.Config.SimConfigDb4o">
-        <Types>
-         <Type Name="Db40ConfigPlugin">
-          <Messages>
-           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Plugin</Item>
-             <Item>OpenSim.Config.SimConfigDb4o.Db40ConfigPlugin</Item>
-            </Issue>
-           </Message>
-          </Messages>
-         </Type>
-         <Type Name="DbSimConfig">
-          <Messages>
-           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Sim</Item>
-             <Item>OpenSim.Config.SimConfigDb4o.DbSimConfig</Item>
-            </Issue>
-           </Message>
-           <Message TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Db</Item>
-             <Item>OpenSim.Config.SimConfigDb4o.DbSimConfig</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="InitConfig(System.Boolean):System.Void">
-            <Messages>
-             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>DbSimConfig.InitConfig(Boolean):Void</Item>
-               <Item>System.Exception</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.UInt32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>DbSimConfig.InitConfig(Boolean):Void</Item>
-               <Item>System.UInt32.ToString</Item>
-               <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.UInt64.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>DbSimConfig.InitConfig(Boolean):Void</Item>
-               <Item>System.UInt64.ToString</Item>
-               <Item>System.UInt64.ToString(System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoadDefaults():System.Void">
-            <Messages>
-             <Message Id="System.Convert.ToInt32(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>DbSimConfig.LoadDefaults():Void</Item>
-               <Item>System.Convert.ToInt32(System.String)</Item>
-               <Item>System.Convert.ToInt32(System.String,System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>DbSimConfig.LoadDefaults():Void</Item>
-               <Item>System.Convert.ToInt32(System.String)</Item>
-               <Item>System.Convert.ToInt32(System.String,System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>DbSimConfig.LoadDefaults():Void</Item>
-               <Item>System.Convert.ToInt32(System.String)</Item>
-               <Item>System.Convert.ToInt32(System.String,System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="MapStorage">
-          <Members>
-           <Member Name="Map">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Map</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-      </Namespaces>
-     </Module>
-    </Modules>
-   </Target>
-   <Target Name="$(ProjectDir)/bin/OpenSim.exe">
-    <Modules>
-     <Module Name="opensim.exe">
-      <Messages>
-       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenSim</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoStrongName">
-         <Item>OpenSim</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithAssemblyVersion" Category="Microsoft.Design" CheckId="CA1016" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenSim</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttr">
-         <Item>OpenSim</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithComVisible" Category="Microsoft.Design" CheckId="CA1017" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttribute" Level="CriticalError">
-         <Item>OpenSim</Item>
-        </Issue>
-       </Message>
-      </Messages>
-      <Namespaces>
-       <Namespace Name="OpenSim">
-        <Types>
-         <Type Name="RegionServer">
-          <Members>
-           <Member Name="Main(System.String[]):System.Void">
-            <Messages>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'args'</Item>
-               <Item>RegionServer.Main(String[]):Void</Item>
-              </Issue>
-              <Issue>
-               <Item>'args'</Item>
-               <Item>RegionServer.Main(String[]):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-      </Namespaces>
-     </Module>
-    </Modules>
-   </Target>
-   <Target Name="$(ProjectDir)/bin/OpenSim.Framework.Console.dll">
-    <Modules>
-     <Module Name="opensim.framework.console.dll">
-      <Messages>
-       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenSim.Framework.Console</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoStrongName">
-         <Item>OpenSim.Framework.Console</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttr">
-         <Item>OpenSim.Framework.Console</Item>
-        </Issue>
-       </Message>
-      </Messages>
-      <Namespaces>
-       <Namespace Name="OpenSim.Framework.Console">
-        <Types>
-         <Type Name="ConsoleBase">
-          <Members>
-           <Member Name="CmdPrompt(System.String,System.String):System.String">
-            <Messages>
-             <Message Id="1#defaultresponse" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ConsoleBase.CmdPrompt(String, String):String</Item>
-               <Item>defaultresponse</Item>
-               <Item>defaultresponse</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CmdPrompt(System.String,System.String,System.String,System.String):System.String">
-            <Messages>
-             <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>OptionA</Item>
-              </Issue>
-             </Message>
-             <Message Id="3#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>OptionB</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#defaultresponse" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ConsoleBase.CmdPrompt(String, String, String, String):String</Item>
-               <Item>defaultresponse</Item>
-               <Item>defaultresponse</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RunCmd(System.String,System.String[]):System.Object">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>Cmd</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#cmdparams" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ConsoleBase.RunCmd(String, String[]):Object</Item>
-               <Item>cmdparams</Item>
-               <Item>cmdparams</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ShowCommands(System.String):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ShowWhat</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="ConsoleBase+ConsoleType">
-          <Members>
-           <Member Name="SimChat">
-            <Messages>
-             <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Sim</Item>
-               <Item>ConsoleType.SimChat</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="TCP">
-            <Messages>
-             <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>ConsoleType.TCP</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="MainConsole">
-          <Messages>
-           <Message TypeName="StaticHolderTypesShouldNotHaveConstructors" Category="Microsoft.Design" CheckId="CA1053" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>MainConsole</Item>
-            </Issue>
-           </Message>
-          </Messages>
-         </Type>
-        </Types>
-       </Namespace>
-      </Namespaces>
-     </Module>
-    </Modules>
-   </Target>
-   <Target Name="$(ProjectDir)/bin/OpenSim.Framework.dll">
-    <Modules>
-     <Module Name="opensim.framework.dll">
-      <Messages>
-       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenSim.Framework</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoStrongName">
-         <Item>OpenSim.Framework</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttr">
-         <Item>OpenSim.Framework</Item>
-        </Issue>
-       </Message>
-      </Messages>
-      <Namespaces>
-       <Namespace Name="OpenSim.Framework.Assets">
-        <Types>
-         <Type Name="AssetBase">
-          <Members>
-           <Member Name="Data">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Data</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Description">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Description</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="FullID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>FullID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="InvType">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>InvType</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Name">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Name</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Type">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Type</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="PrimData">
-          <Members>
-           <Member Name=".ctor()">
-            <Messages>
-             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PrimData.PrimData()</Item>
-               <Item>ParentID</Item>
-               <Item>System.UInt32</Item>
-               <Item>0</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="FullID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>FullID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LocalID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LocalID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="OwnerID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>OwnerID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ParentID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ParentID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PathBegin">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PathBegin</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PathCurve">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PathCurve</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PathEnd">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PathEnd</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PathRadiusOffset">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PathRadiusOffset</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PathRevolutions">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PathRevolutions</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PathScaleX">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PathScaleX</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PathScaleY">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PathScaleY</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PathShearX">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PathShearX</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PathShearY">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PathShearY</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PathSkew">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PathSkew</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PathTaperX">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PathTaperX</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PathTaperY">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PathTaperY</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PathTwist">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PathTwist</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PathTwistBegin">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PathTwistBegin</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PCode">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PCode</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Position">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Position</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ProfileBegin">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ProfileBegin</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ProfileCurve">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ProfileCurve</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ProfileEnd">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ProfileEnd</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ProfileHollow">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ProfileHollow</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Rotation">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Rotation</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Scale">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Scale</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Texture">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Texture</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-       <Namespace Name="OpenSim.Framework.Grid">
-        <Types>
-         <Type Name="LoginService">
-          <Messages>
-           <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Login</Item>
-             <Item>LoginService</Item>
-             <Item>LogOn</Item>
-            </Issue>
-           </Message>
-          </Messages>
-         </Type>
-        </Types>
-       </Namespace>
-       <Namespace Name="OpenSim.Framework.Interfaces">
-        <Types>
-         <Type Name="AgentCircuitData">
-          <Members>
-           <Member Name="AgentID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AgentID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="circuitcode">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>circuitcode</Item>
-              </Issue>
-             </Message>
-             <Message Id="circuitcode" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>circuitcode</Item>
-               <Item>AgentCircuitData.circuitcode</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="firstname">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>firstname</Item>
-              </Issue>
-             </Message>
-             <Message Id="firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>firstname</Item>
-               <Item>AgentCircuitData.firstname</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="lastname">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>lastname</Item>
-              </Issue>
-             </Message>
-             <Message Id="lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>lastname</Item>
-               <Item>AgentCircuitData.lastname</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SecureSessionID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SecureSessionID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SessionID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SessionID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="ARequest">
-          <Messages>
-           <Message TypeName="OverrideEqualsAndOperatorEqualsOnValueTypes" Category="Microsoft.Performance" CheckId="CA1815" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Equals">
-             <Item>OpenSim.Framework.Interfaces.ARequest</Item>
-            </Issue>
-            <Issue Name="op_Equality">
-             <Item>OpenSim.Framework.Interfaces.ARequest</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="AssetID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AssetID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="IsTexture">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>IsTexture</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="AuthenticateResponse">
-          <Members>
-           <Member Name="Authorised">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Authorised</Item>
-              </Issue>
-             </Message>
-             <Message Id="Authorised" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Authorised</Item>
-               <Item>AuthenticateResponse.Authorised</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoginInfo">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LoginInfo</Item>
-              </Issue>
-             </Message>
-             <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Login</Item>
-               <Item>LoginInfo</Item>
-               <Item>LogOn</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="IAssetPlugin">
-          <Messages>
-           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Plugin</Item>
-             <Item>OpenSim.Framework.Interfaces.IAssetPlugin</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="GetAssetServer():OpenSim.Framework.Interfaces.IAssetServer">
-            <Messages>
-             <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
-              <Issue Certainty="50">
-               <Item>GetAssetServer</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="IAssetReceiver">
-          <Members>
-           <Member Name="AssetReceived(OpenSim.Framework.Assets.AssetBase,System.Boolean):System.Void">
-            <Messages>
-             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>IsTexture</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="IAssetServer">
-          <Members>
-           <Member Name="RequestAsset(libsecondlife.LLUUID,System.Boolean):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>assetID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SetServerInfo(System.String,System.String):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ServerUrl</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ServerKey</Item>
-              </Issue>
-             </Message>
-             <Message Id="0#" TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ServerUrl</Item>
-               <Item>IAssetServer.SetServerInfo(String, String):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="IGridPlugin">
-          <Messages>
-           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Plugin</Item>
-             <Item>OpenSim.Framework.Interfaces.IGridPlugin</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="GetGridServer():OpenSim.Framework.Interfaces.IGridServer">
-            <Messages>
-             <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
-              <Issue Certainty="50">
-               <Item>GetGridServer</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="IGridServer">
-          <Members>
-           <Member Name="AuthenticateSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):OpenSim.Framework.Interfaces.AuthenticateResponse">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>sessionID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>agentID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GetName():System.String">
-            <Messages>
-             <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
-              <Issue Certainty="50">
-               <Item>GetName</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>sessionID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>agentID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-             <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Logout</Item>
-               <Item>LogoutSession</Item>
-               <Item>LogOff</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RequestNeighbours():OpenSim.Framework.Interfaces.NeighbourInfo[]">
-            <Messages>
-             <Message Id="Neighbours" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Neighbours</Item>
-               <Item>IGridServer.RequestNeighbours():NeighbourInfo[]</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RequestUUIDBlock():OpenSim.Framework.Interfaces.UUIDBlock">
-            <Messages>
-             <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>IGridServer.RequestUUIDBlock():UUIDBlock</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SetServerInfo(System.String,System.String,System.String):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ServerUrl</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>SendKey</Item>
-              </Issue>
-             </Message>
-             <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>RecvKey</Item>
-              </Issue>
-             </Message>
-             <Message Id="2#Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>IGridServer.SetServerInfo(String, String, String):Void</Item>
-               <Item>Recv</Item>
-               <Item>RecvKey</Item>
-              </Issue>
-             </Message>
-             <Message Id="0#" TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ServerUrl</Item>
-               <Item>IGridServer.SetServerInfo(String, String, String):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="ILocalStorage">
-          <Members>
-           <Member Name="RemovePrim(libsecondlife.LLUUID):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>primID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ShutDown():System.Void">
-            <Messages>
-             <Message Id="ShutDown" TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ShouldBeDiscreteTerm">
-               <Item>ShutDown</Item>
-               <Item>method</Item>
-               <Item>ShutDown</Item>
-               <Item>Shutdown</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="ISimConfig">
-          <Messages>
-           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Sim</Item>
-             <Item>OpenSim.Framework.Interfaces.ISimConfig</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="GetConfigObject():OpenSim.Framework.Interfaces.SimConfig">
-            <Messages>
-             <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
-              <Issue Certainty="50">
-               <Item>GetConfigObject</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="IUserServer">
-          <Members>
-           <Member Name="RequestAgentsInventory(libsecondlife.LLUUID):OpenSim.Framework.Inventory.AgentInventory">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>agentID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SetServerInfo(System.String,System.String,System.String):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ServerUrl</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>SendKey</Item>
-              </Issue>
-             </Message>
-             <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>RecvKey</Item>
-              </Issue>
-             </Message>
-             <Message Id="2#Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>IUserServer.SetServerInfo(String, String, String):Void</Item>
-               <Item>Recv</Item>
-               <Item>RecvKey</Item>
-              </Issue>
-             </Message>
-             <Message Id="0#" TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ServerUrl</Item>
-               <Item>IUserServer.SetServerInfo(String, String, String):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="LocalGridBase">
-          <Members>
-           <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
-            <Messages>
-             <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Logout</Item>
-               <Item>LogoutSession</Item>
-               <Item>LogOff</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="Login">
-          <Messages>
-           <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Login</Item>
-             <Item>Login</Item>
-             <Item>LogOn</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="Agent">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Agent</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="BaseFolder">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>BaseFolder</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="First">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>First</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="InventoryFolder">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>InventoryFolder</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Last">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Last</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SecureSession">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SecureSession</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Session">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Session</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="NeighbourInfo">
-          <Messages>
-           <Message Id="Neighbour" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Neighbour</Item>
-             <Item>OpenSim.Framework.Interfaces.NeighbourInfo</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="regionhandle">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>regionhandle</Item>
-              </Issue>
-             </Message>
-             <Message Id="regionhandle" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>regionhandle</Item>
-               <Item>NeighbourInfo.regionhandle</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RegionLocX">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RegionLocX</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RegionLocY">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RegionLocY</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="sim_ip">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>sim_ip</Item>
-              </Issue>
-             </Message>
-             <Message Id="sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>sim</Item>
-               <Item>NeighbourInfo.sim_ip</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>sim_ip</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="sim_port">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>sim_port</Item>
-              </Issue>
-             </Message>
-             <Message Id="sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>sim</Item>
-               <Item>NeighbourInfo.sim_port</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>sim_port</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="RemoteGridBase">
-          <Members>
-           <Member Name="agentcircuits">
-            <Messages>
-             <Message TypeName="CollectionPropertiesShouldBeReadOnly" Category="Microsoft.Usage" CheckId="CA2227" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>agentcircuits</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>agentcircuits</Item>
-              </Issue>
-             </Message>
-             <Message Id="agentcircuits" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>agentcircuits</Item>
-               <Item>RemoteGridBase.agentcircuits:Dictionary`2&lt;System.UInt32,OpenSim.Framework.Interfaces.AgentCircuitData&gt;</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
-            <Messages>
-             <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Logout</Item>
-               <Item>LogoutSession</Item>
-               <Item>LogOff</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="SimConfig">
-          <Messages>
-           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Sim</Item>
-             <Item>OpenSim.Framework.Interfaces.SimConfig</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="AssetSendKey">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AssetSendKey</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AssetURL">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AssetURL</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GridRecvKey">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>GridRecvKey</Item>
-              </Issue>
-             </Message>
-             <Message Id="Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Recv</Item>
-               <Item>SimConfig.GridRecvKey</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GridSendKey">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>GridSendKey</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GridURL">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>GridURL</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="IPListenAddr">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>IPListenAddr</Item>
-              </Issue>
-             </Message>
-             <Message Id="Addr" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Addr</Item>
-               <Item>SimConfig.IPListenAddr</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="IPListenPort">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>IPListenPort</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RegionHandle">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RegionHandle</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RegionLocX">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RegionLocX</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RegionLocY">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RegionLocY</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RegionName">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RegionName</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SaveMap(System.Single[]):System.Void">
-            <Messages>
-             <Message Id="0#heightmap" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>SimConfig.SaveMap(Single[]):Void</Item>
-               <Item>heightmap</Item>
-               <Item>heightmap</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UserRecvKey">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UserRecvKey</Item>
-              </Issue>
-             </Message>
-             <Message Id="Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Recv</Item>
-               <Item>SimConfig.UserRecvKey</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UserSendKey">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UserSendKey</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UserURL">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UserURL</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="UUIDBlock">
-          <Messages>
-           <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>UUIDBlock</Item>
-            </Issue>
-           </Message>
-           <Message TypeName="OverrideEqualsAndOperatorEqualsOnValueTypes" Category="Microsoft.Performance" CheckId="CA1815" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Equals">
-             <Item>OpenSim.Framework.Interfaces.UUIDBlock</Item>
-            </Issue>
-            <Issue Name="op_Equality">
-             <Item>OpenSim.Framework.Interfaces.UUIDBlock</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="BlockEnd">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>BlockEnd</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="BlockStart">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>BlockStart</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-       <Namespace Name="OpenSim.Framework.Inventory">
-        <Types>
-         <Type Name="AgentInventory">
-          <Members>
-           <Member Name=".ctor()">
-            <Messages>
-             <Message TypeName="DoNotCallOverridableMethodsInConstructors" Category="Microsoft.Usage" CheckId="CA2214" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AgentInventory.AgentInventory()</Item>
-               <Item>&#xD;&#xA;&#xD;&#xA;AgentInventory.AgentInventory()&#xD;&#xA;AgentInventory.Initialise():Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AddToInventory(libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):libsecondlife.LLUUID">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>folderID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AgentID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AgentID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CreateNewFolder(libsecondlife.LLUUID,System.UInt16):System.Boolean">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>folderID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Initialise():System.Void">
-            <Messages>
-             <Message Id="Initialise" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Initialise</Item>
-               <Item>AgentInventory.Initialise():Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="InventoryFolders">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>InventoryFolders</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="InventoryItems">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>InventoryItems</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="InventoryRoot">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>InventoryRoot</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LastCached">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LastCached</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UpdateItem(libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):System.Boolean">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>itemID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Wearables">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Wearables</Item>
-              </Issue>
-             </Message>
-             <Message Id="Wearables" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Wearables</Item>
-               <Item>AgentInventory.Wearables</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="AvatarWearable">
-          <Members>
-           <Member Name="AssetID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AssetID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ItemID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ItemID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="InventoryFolder">
-          <Members>
-           <Member Name="DefaultType">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>DefaultType</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="FolderID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>FolderID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="FolderName">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>FolderName</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Items">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Items</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>System.Collections.Generic.List`1&lt;OpenSim.Framework.Inventory.InventoryItem&gt;</Item>
-               <Item>InventoryFolder.Items</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="OwnerID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>OwnerID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ParentID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ParentID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Version">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Version</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="InventoryItem">
-          <Members>
-           <Member Name="AssetID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AssetID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CreatorID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>CreatorID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Description">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Description</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="FolderID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>FolderID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="InvType">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>InvType</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ItemID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ItemID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Name">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Name</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="OwnerID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>OwnerID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Type">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Type</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-       <Namespace Name="OpenSim.Framework.Sims">
-        <Types>
-         <Type Name="SimProfile">
-          <Messages>
-           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Sim</Item>
-             <Item>OpenSim.Framework.Sims.SimProfile</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="LoadFromGrid(System.UInt64,System.String,System.String,System.String):OpenSim.Framework.Sims.SimProfile">
-            <Messages>
-             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
-               <Item>System.Exception</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>GridURL</Item>
-              </Issue>
-             </Message>
-             <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>SendKey</Item>
-              </Issue>
-             </Message>
-             <Message Id="3#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>RecvKey</Item>
-              </Issue>
-             </Message>
-             <Message Id="3#Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
-               <Item>Recv</Item>
-               <Item>RecvKey</Item>
-              </Issue>
-             </Message>
-             <Message Id="0#" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>region_handle</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>GridURL</Item>
-              </Issue>
-             </Message>
-             <Message Id="RecvKey" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-              <Issue>
-               <Item>RecvKey</Item>
-               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.Convert.ToUInt16(System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
-               <Item>System.Convert.ToUInt16(System.Object)</Item>
-               <Item>System.Convert.ToUInt16(System.Object,System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.Convert.ToUInt32(System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
-               <Item>System.Convert.ToUInt32(System.Object)</Item>
-               <Item>System.Convert.ToUInt32(System.Object,System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
-               <Item>System.Convert.ToUInt32(System.Object)</Item>
-               <Item>System.Convert.ToUInt32(System.Object,System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.Convert.ToUInt64(System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
-               <Item>System.Convert.ToUInt64(System.Object)</Item>
-               <Item>System.Convert.ToUInt64(System.Object,System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.UInt64.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
-               <Item>System.UInt64.ToString</Item>
-               <Item>System.UInt64.ToString(System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="SimProfileBase">
-          <Messages>
-           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Sim</Item>
-             <Item>OpenSim.Framework.Sims.SimProfileBase</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="caps_url">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>caps_url</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>caps_url</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="recvkey">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>recvkey</Item>
-              </Issue>
-             </Message>
-             <Message Id="recvkey" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>recvkey</Item>
-               <Item>SimProfileBase.recvkey</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="regionhandle">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>regionhandle</Item>
-              </Issue>
-             </Message>
-             <Message Id="regionhandle" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>regionhandle</Item>
-               <Item>SimProfileBase.regionhandle</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RegionLocX">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RegionLocX</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RegionLocY">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RegionLocY</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="regionname">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>regionname</Item>
-              </Issue>
-             </Message>
-             <Message Id="regionname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>regionname</Item>
-               <Item>SimProfileBase.regionname</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="sendkey">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>sendkey</Item>
-              </Issue>
-             </Message>
-             <Message Id="sendkey" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>sendkey</Item>
-               <Item>SimProfileBase.sendkey</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="sim_ip">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>sim_ip</Item>
-              </Issue>
-             </Message>
-             <Message Id="sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>sim</Item>
-               <Item>SimProfileBase.sim_ip</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>sim_ip</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="sim_port">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>sim_port</Item>
-              </Issue>
-             </Message>
-             <Message Id="sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>sim</Item>
-               <Item>SimProfileBase.sim_port</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>sim_port</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UUID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UUID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-       <Namespace Name="OpenSim.Framework.Terrain">
-        <Types>
-         <Type Name="HeightmapGenHills">
-          <Messages>
-           <Message Id="Heightmap" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Heightmap</Item>
-             <Item>OpenSim.Framework.Terrain.HeightmapGenHills</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="GenerateHeightmap(System.Int32,System.Single,System.Single,System.Boolean):System.Single[]">
-            <Messages>
-             <Message Id="0#num" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>HeightmapGenHills.GenerateHeightmap(Int32, Single, Single, Boolean):Single[]</Item>
-               <Item>num</Item>
-               <Item>numHills</Item>
-              </Issue>
-             </Message>
-             <Message Id="Heightmap" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Heightmap</Item>
-               <Item>HeightmapGenHills.GenerateHeightmap(Int32, Single, Single, Boolean):Single[]</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="NumHills">
-            <Messages>
-             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>HeightmapGenHills.NumHills</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-       <Namespace Name="OpenSim.Framework.User">
-        <Types>
-         <Type Name="UserProfile">
-          <Members>
-           <Member Name=".ctor()">
-            <Messages>
-             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UserProfile.UserProfile()</Item>
-               <Item>IsGridGod</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AddSimCircuit(System.UInt32,libsecondlife.LLUUID):System.Void">
-            <Messages>
-             <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Sim</Item>
-               <Item>UserProfile.AddSimCircuit(UInt32, LLUUID):Void</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>regionUUID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AssetURL">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AssetURL</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Circuits">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Circuits</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CurrentSecureSessionID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>CurrentSecureSessionID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CurrentSessionID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>CurrentSessionID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="firstname">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>firstname</Item>
-              </Issue>
-             </Message>
-             <Message Id="firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>firstname</Item>
-               <Item>UserProfile.firstname</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="homelookat">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>homelookat</Item>
-              </Issue>
-             </Message>
-             <Message Id="homelookat" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>homelookat</Item>
-               <Item>UserProfile.homelookat</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="homepos">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>homepos</Item>
-              </Issue>
-             </Message>
-             <Message Id="homepos" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>homepos</Item>
-               <Item>UserProfile.homepos</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="homeregionhandle">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>homeregionhandle</Item>
-              </Issue>
-             </Message>
-             <Message Id="homeregionhandle" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>homeregionhandle</Item>
-               <Item>UserProfile.homeregionhandle</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Inventory">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Inventory</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="IsGridGod">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>IsGridGod</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="IsLocal">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>IsLocal</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="lastname">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>lastname</Item>
-              </Issue>
-             </Message>
-             <Message Id="lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>lastname</Item>
-               <Item>UserProfile.lastname</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="MD5passwd">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>MD5passwd</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UUID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UUID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="UserProfileManager">
-          <Members>
-           <Member Name="CustomiseResponse(System.Collections.Hashtable&amp;,OpenSim.Framework.User.UserProfile):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="DoNotPassTypesByReference" Category="Microsoft.Design" CheckId="CA1045" Created="2007-03-27 04:29:04Z">
-              <Issue Level="CriticalWarning">
-               <Item>response</Item>
-              </Issue>
-             </Message>
-             <Message Id="Customise" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Customise</Item>
-               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-              </Issue>
-             </Message>
-             <Message Id="GridResp" TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>GridResp</Item>
-               <Item>Nwc.XmlRpc.XmlRpcResponse</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.Single.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.UInt32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.UInt32.ToString</Item>
-               <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.UInt32.ToString</Item>
-               <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="DefaultStartupMsg">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>DefaultStartupMsg</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GridRecvKey">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>GridRecvKey</Item>
-              </Issue>
-             </Message>
-             <Message Id="Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Recv</Item>
-               <Item>UserProfileManager.GridRecvKey</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GridSendKey">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>GridSendKey</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GridURL">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>GridURL</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ParseXMLRPC(System.String):System.String">
-            <Messages>
-             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
-               <Item>System.Exception</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.Int32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
-               <Item>System.Int32.ToString</Item>
-               <Item>System.Int32.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
-               <Item>System.Int32.ToString</Item>
-               <Item>System.Int32.ToString(System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.Single.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SetKeys(System.String,System.String,System.String,System.String):System.Void">
-            <Messages>
-             <Message Id="1#recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>UserProfileManager.SetKeys(String, String, String, String):Void</Item>
-               <Item>recv</Item>
-               <Item>recvKey</Item>
-              </Issue>
-             </Message>
-             <Message Id="2#" TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>url</Item>
-               <Item>UserProfileManager.SetKeys(String, String, String, String):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="UserProfileManagerBase">
-          <Members>
-           <Member Name="AuthenticateUser(System.String,System.String,System.String):System.Boolean">
-            <Messages>
-             <Message Id="0#firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>UserProfileManagerBase.AuthenticateUser(String, String, String):Boolean</Item>
-               <Item>firstname</Item>
-               <Item>firstname</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>UserProfileManagerBase.AuthenticateUser(String, String, String):Boolean</Item>
-               <Item>lastname</Item>
-               <Item>lastname</Item>
-              </Issue>
-             </Message>
-             <Message Id="2#passwd" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>UserProfileManagerBase.AuthenticateUser(String, String, String):Boolean</Item>
-               <Item>passwd</Item>
-               <Item>passwd</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CreateNewProfile(System.String,System.String,System.String):OpenSim.Framework.User.UserProfile">
-            <Messages>
-             <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>MD5passwd</Item>
-              </Issue>
-             </Message>
-             <Message Id="0#firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>UserProfileManagerBase.CreateNewProfile(String, String, String):UserProfile</Item>
-               <Item>firstname</Item>
-               <Item>firstname</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>UserProfileManagerBase.CreateNewProfile(String, String, String):UserProfile</Item>
-               <Item>lastname</Item>
-               <Item>lastname</Item>
-              </Issue>
-             </Message>
-             <Message Id="2#M" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>UserProfileManagerBase.CreateNewProfile(String, String, String):UserProfile</Item>
-               <Item>M</Item>
-               <Item>MD5passwd</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GetProfileByLLUUID(libsecondlife.LLUUID):OpenSim.Framework.User.UserProfile">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ProfileLLUUID</Item>
-              </Issue>
-             </Message>
-             <Message Id="0#" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ProfileLLUUID</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>UserProfileManagerBase.GetProfileByLLUUID(LLUUID):UserProfile</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GetProfileByName(System.String,System.String):OpenSim.Framework.User.UserProfile">
-            <Messages>
-             <Message Id="0#firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>UserProfileManagerBase.GetProfileByName(String, String):UserProfile</Item>
-               <Item>firstname</Item>
-               <Item>firstname</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>UserProfileManagerBase.GetProfileByName(String, String):UserProfile</Item>
-               <Item>lastname</Item>
-               <Item>lastname</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GetUsersInventory(libsecondlife.LLUUID):OpenSim.Framework.Inventory.AgentInventory">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>agentID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SetGod(libsecondlife.LLUUID):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>GodID</Item>
-              </Issue>
-             </Message>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>GodID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UserProfiles">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UserProfiles</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-       <Namespace Name="OpenSim.Framework.Utilities">
-        <Types>
-         <Type Name="BlockingQueue`1">
-          <Messages>
-           <Message TypeName="IdentifiersShouldNotHaveIncorrectSuffix" Category="Microsoft.Naming" CheckId="CA1711" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>OpenSim.Framework.Utilities.BlockingQueue`1</Item>
-             <Item>Queue</Item>
-            </Issue>
-           </Message>
-          </Messages>
-         </Type>
-         <Type Name="Util">
-          <Messages>
-           <Message Id="Util" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Util</Item>
-             <Item>OpenSim.Framework.Utilities.Util</Item>
-            </Issue>
-           </Message>
-           <Message TypeName="StaticHolderTypesShouldNotHaveConstructors" Category="Microsoft.Design" CheckId="CA1053" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>Util</Item>
-            </Issue>
-           </Message>
-           <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>Util</Item>
-             <Item>System.Web.Util</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="GetNextXferID():System.UInt32">
-            <Messages>
-             <Message Id="Xfer" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Xfer</Item>
-               <Item>Util.GetNextXferID():UInt32</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="MemberId">
-               <Item>Util.GetNextXferID():UInt32</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>GetNextXferID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UIntsToLong(System.UInt32,System.UInt32):System.UInt64">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>X</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>Y</Item>
-              </Issue>
-             </Message>
-             <Message Id="0#X" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterOneLetter">
-               <Item>Util.UIntsToLong(UInt32, UInt32):UInt64</Item>
-               <Item>X</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#Y" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterOneLetter">
-               <Item>Util.UIntsToLong(UInt32, UInt32):UInt64</Item>
-               <Item>Y</Item>
-              </Issue>
-             </Message>
-             <Message Id="Ints" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Ints</Item>
-               <Item>Util.UIntsToLong(UInt32, UInt32):UInt64</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-      </Namespaces>
-     </Module>
-    </Modules>
-   </Target>
-   <Target Name="$(ProjectDir)/bin/OpenSim.GridInterfaces.Local.dll">
-    <Modules>
-     <Module Name="opensim.gridinterfaces.local.dll">
-      <Messages>
-       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenSim.GridInterfaces.Local</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoStrongName">
-         <Item>OpenSim.GridInterfaces.Local</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttr">
-         <Item>OpenSim.GridInterfaces.Local</Item>
-        </Issue>
-       </Message>
-      </Messages>
-      <Namespaces>
-       <Namespace Name="OpenSim.GridInterfaces.Local">
-        <Types>
-         <Type Name="AssetStorage">
-          <Members>
-           <Member Name="Data">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Data</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Name">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Name</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Type">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Type</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UUID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UUID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="AssetUUIDQuery">
-          <Messages>
-           <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>AssetUUIDQuery</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="Match(OpenSim.GridInterfaces.Local.AssetStorage):System.Boolean">
-            <Messages>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'asset'</Item>
-               <Item>AssetUUIDQuery.Match(AssetStorage):Boolean</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="LocalAssetPlugin">
-          <Messages>
-           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Plugin</Item>
-             <Item>OpenSim.GridInterfaces.Local.LocalAssetPlugin</Item>
-            </Issue>
-           </Message>
-          </Messages>
-         </Type>
-         <Type Name="LocalAssetServer">
-          <Members>
-           <Member Name=".ctor()">
-            <Messages>
-             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LocalAssetServer.LocalAssetServer()</Item>
-               <Item>System.Exception</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoadAsset(OpenSim.Framework.Assets.AssetBase,System.Boolean,System.String):System.Void">
-            <Messages>
-             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
-              <Issue>
-               <Item>LocalAssetServer.LoadAsset(AssetBase, Boolean, String):Void</Item>
-              </Issue>
-             </Message>
-             <Message Id="image" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
-              <Issue>
-               <Item>image</Item>
-               <Item>LocalAssetServer.LoadAsset(AssetBase, Boolean, String):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UploadNewAsset(OpenSim.Framework.Assets.AssetBase):System.Void">
-            <Messages>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'asset'</Item>
-               <Item>LocalAssetServer.UploadNewAsset(AssetBase):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="LocalGridPlugin">
-          <Messages>
-           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Plugin</Item>
-             <Item>OpenSim.GridInterfaces.Local.LocalGridPlugin</Item>
-            </Issue>
-           </Message>
-          </Messages>
-         </Type>
-         <Type Name="LocalGridServer">
-          <Members>
-           <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
-            <Messages>
-             <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Logout</Item>
-               <Item>LogoutSession</Item>
-               <Item>LogOff</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Sessions">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Sessions</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>System.Collections.Generic.List`1&lt;OpenSim.Framework.Interfaces.Login&gt;</Item>
-               <Item>LocalGridServer.Sessions</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-      </Namespaces>
-     </Module>
-    </Modules>
-   </Target>
-   <Target Name="$(ProjectDir)/bin/OpenSim.GridInterfaces.Remote.dll">
-    <Modules>
-     <Module Name="opensim.gridinterfaces.remote.dll">
-      <Messages>
-       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenSim.GridInterfaces.Remote</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoStrongName">
-         <Item>OpenSim.GridInterfaces.Remote</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttr">
-         <Item>OpenSim.GridInterfaces.Remote</Item>
-        </Issue>
-       </Message>
-      </Messages>
-      <Namespaces>
-       <Namespace Name="OpenSim.GridInterfaces.Remote">
-        <Types>
-         <Type Name="RemoteAssetPlugin">
-          <Messages>
-           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Plugin</Item>
-             <Item>OpenSim.GridInterfaces.Remote.RemoteAssetPlugin</Item>
-            </Issue>
-           </Message>
-          </Messages>
-         </Type>
-         <Type Name="RemoteGridPlugin">
-          <Messages>
-           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Plugin</Item>
-             <Item>OpenSim.GridInterfaces.Remote.RemoteGridPlugin</Item>
-            </Issue>
-           </Message>
-          </Messages>
-         </Type>
-         <Type Name="RemoteGridServer">
-          <Members>
-           <Member Name="agentcircuits">
-            <Messages>
-             <Message TypeName="CollectionPropertiesShouldBeReadOnly" Category="Microsoft.Usage" CheckId="CA2227" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>agentcircuits</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AuthenticateSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):OpenSim.Framework.Interfaces.AuthenticateResponse">
-            <Messages>
-             <Message Id="2#" TypeName="ParameterNamesShouldMatchBaseDeclaration" Category="Microsoft.Naming" CheckId="CA1725" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>circuitcode</Item>
-               <Item>RemoteGridServer.AuthenticateSession(LLUUID, LLUUID, UInt32):AuthenticateResponse</Item>
-               <Item>circuitCode</Item>
-               <Item>IGridServer.AuthenticateSession(LLUUID, LLUUID, UInt32):AuthenticateResponse</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GridRecvKey">
-            <Messages>
-             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RemoteGridServer.GridRecvKey</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GridSendKey">
-            <Messages>
-             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RemoteGridServer.GridSendKey</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
-            <Messages>
-             <Message TypeName="PassSystemUriObjectsInsteadOfStrings" Category="Microsoft.Usage" CheckId="CA2234" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RemoteGridServer.LogoutSession(LLUUID, LLUUID, UInt32):Boolean</Item>
-               <Item>WebRequest.Create(Uri):WebRequest</Item>
-               <Item>WebRequest.Create(String):WebRequest</Item>
-              </Issue>
-             </Message>
-             <Message Id="GridResponse" TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RemoteGridServer.LogoutSession(LLUUID, LLUUID, UInt32):Boolean</Item>
-               <Item>GridResponse</Item>
-               <Item>System.String</Item>
-              </Issue>
-             </Message>
-             <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Logout</Item>
-               <Item>LogoutSession</Item>
-               <Item>LogOff</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'sessionID'</Item>
-               <Item>RemoteGridServer.LogoutSession(LLUUID, LLUUID, UInt32):Boolean</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-      </Namespaces>
-     </Module>
-    </Modules>
-   </Target>
-   <Target Name="$(ProjectDir)/bin/OpenSim.Physics.Manager.dll">
-    <Modules>
-     <Module Name="opensim.physics.manager.dll">
-      <Messages>
-       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenSim.Physics.Manager</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoStrongName">
-         <Item>OpenSim.Physics.Manager</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttr">
-         <Item>OpenSim.Physics.Manager</Item>
-        </Issue>
-       </Message>
-      </Messages>
-      <Namespaces>
-       <Namespace Name="OpenSim.Physics.Manager">
-        <Types>
-         <Type Name="IPhysicsPlugin">
-          <Messages>
-           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Plugin</Item>
-             <Item>OpenSim.Physics.Manager.IPhysicsPlugin</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="GetName():System.String">
-            <Messages>
-             <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
-              <Issue Certainty="50">
-               <Item>GetName</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GetScene():OpenSim.Physics.Manager.PhysicsScene">
-            <Messages>
-             <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
-              <Issue Certainty="50">
-               <Item>GetScene</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="NullPhysicsScene">
-          <Members>
-           <Member Name="SetTerrain(System.Single[]):System.Void">
-            <Messages>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'heightMap'</Item>
-               <Item>NullPhysicsScene.SetTerrain(Single[]):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Simulate(System.Single):System.Void">
-            <Messages>
-             <Message Id="System.Int32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>NullPhysicsScene.Simulate(Single):Void</Item>
-               <Item>System.Int32.ToString</Item>
-               <Item>System.Int32.ToString(System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="PhysicsActor">
-          <Members>
-           <Member Name="Kinematic">
-            <Messages>
-             <Message Id="Kinematic" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Kinematic</Item>
-               <Item>PhysicsActor.Kinematic:Boolean</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="PhysicsManager">
-          <Members>
-           <Member Name="GetPhysicsScene(System.String):OpenSim.Physics.Manager.PhysicsScene">
-            <Messages>
-             <Message Id="System.String.Format(System.String,System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PhysicsManager.GetPhysicsScene(String):PhysicsScene</Item>
-               <Item>System.String.Format(System.String,System.Object)</Item>
-               <Item>System.String.Format(System.IFormatProvider,System.String,System.Object[])</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoadPlugins():System.Void">
-            <Messages>
-             <Message Id="Plugins" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Plugins</Item>
-               <Item>PhysicsManager.LoadPlugins():Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="PhysicsVector">
-          <Members>
-           <Member Name=".ctor(System.Single,System.Single,System.Single)">
-            <Messages>
-             <Message Id="0#x" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterOneLetter">
-               <Item>PhysicsVector.PhysicsVector(Single, Single, Single)</Item>
-               <Item>x</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#y" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterOneLetter">
-               <Item>PhysicsVector.PhysicsVector(Single, Single, Single)</Item>
-               <Item>y</Item>
-              </Issue>
-             </Message>
-             <Message Id="2#z" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterOneLetter">
-               <Item>PhysicsVector.PhysicsVector(Single, Single, Single)</Item>
-               <Item>z</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="X">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>X</Item>
-              </Issue>
-             </Message>
-             <Message Id="X" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="MemberOneLetter">
-               <Item>X</Item>
-               <Item>PhysicsVector.X</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Y">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Y</Item>
-              </Issue>
-             </Message>
-             <Message Id="Y" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="MemberOneLetter">
-               <Item>Y</Item>
-               <Item>PhysicsVector.Y</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Z">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Z</Item>
-              </Issue>
-             </Message>
-             <Message Id="Z" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="MemberOneLetter">
-               <Item>Z</Item>
-               <Item>PhysicsVector.Z</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Zero">
-            <Messages>
-             <Message TypeName="DoNotDeclareReadOnlyMutableReferenceTypes" Category="Microsoft.Security" CheckId="CA2104" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PhysicsVector.Zero</Item>
-               <Item>OpenSim.Physics.Manager.PhysicsVector</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-      </Namespaces>
-     </Module>
-    </Modules>
-   </Target>
-   <Target Name="$(ProjectDir)/bin/OpenSim.RegionServer.dll">
-    <Modules>
-     <Module Name="opensim.regionserver.dll">
-      <Messages>
-       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenSim.RegionServer</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoStrongName">
-         <Item>OpenSim.RegionServer</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithAssemblyVersion" Category="Microsoft.Design" CheckId="CA1016" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenSim.RegionServer</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttr">
-         <Item>OpenSim.RegionServer</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithComVisible" Category="Microsoft.Design" CheckId="CA1017" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttribute" Level="CriticalError">
-         <Item>OpenSim.RegionServer</Item>
-        </Issue>
-       </Message>
-      </Messages>
-      <Namespaces>
-       <Namespace Name="OpenSim">
-        <Types>
-         <Type Name="AgentAssetUpload">
-          <Members>
-           <Member Name="AddUpload(libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>transactionID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AddUploadToAssetCache(libsecondlife.LLUUID):OpenSim.Framework.Assets.AssetBase">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>transactionID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GetUpload(libsecondlife.LLUUID):OpenSim.Framework.Assets.AssetBase">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>transactionID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="HandleUploadPacket(libsecondlife.Packets.AssetUploadRequestPacket,libsecondlife.LLUUID):System.Void">
-            <Messages>
-             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>assetID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.Int32.ToString(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AgentAssetUpload.HandleUploadPacket(AssetUploadRequestPacket, LLUUID):Void</Item>
-               <Item>System.Int32.ToString(System.String)</Item>
-               <Item>System.Int32.ToString(System.String,System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>AgentAssetUpload.HandleUploadPacket(AssetUploadRequestPacket, LLUUID):Void</Item>
-               <Item>System.Int32.ToString(System.String)</Item>
-               <Item>System.Int32.ToString(System.String,System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'assetID'</Item>
-               <Item>AgentAssetUpload.HandleUploadPacket(AssetUploadRequestPacket, LLUUID):Void</Item>
-              </Issue>
-              <Issue>
-               <Item>'pack'</Item>
-               <Item>AgentAssetUpload.HandleUploadPacket(AssetUploadRequestPacket, LLUUID):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="HandleXferPacket(libsecondlife.Packets.SendXferPacketPacket):System.Void">
-            <Messages>
-             <Message Id="0#xfer" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>AgentAssetUpload.HandleXferPacket(SendXferPacketPacket):Void</Item>
-               <Item>xfer</Item>
-               <Item>xferPacket</Item>
-              </Issue>
-             </Message>
-             <Message Id="Xfer" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Xfer</Item>
-               <Item>AgentAssetUpload.HandleXferPacket(SendXferPacketPacket):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="AssetTransaction">
-          <Members>
-           <Member Name=".ctor()">
-            <Messages>
-             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AssetTransaction.AssetTransaction()</Item>
-               <Item>UploadComplete</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AddToInventory">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AddToInventory</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Asset">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Asset</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="InventFolder">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>InventFolder</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="TransactionID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>TransactionID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UploadComplete">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>UploadComplete</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="XferID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>XferID</Item>
-              </Issue>
-             </Message>
-             <Message Id="Xfer" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Xfer</Item>
-               <Item>AssetTransaction.XferID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="Grid">
-          <Messages>
-           <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>Grid</Item>
-             <Item>OpenSim.Framework.Grid</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="AssetDll">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AssetDll</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AssetServer">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AssetServer</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GridDll">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>GridDll</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GridServer">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>GridServer</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Initialise():System.Void">
-            <Messages>
-             <Message Id="Initialise" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Initialise</Item>
-               <Item>Grid.Initialise():Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoadAssetDll(System.String):OpenSim.Framework.Interfaces.IAssetServer">
-            <Messages>
-             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
-              <Issue>
-               <Item>Grid.LoadAssetDll(String):IAssetServer</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoadGridDll(System.String):OpenSim.Framework.Interfaces.IGridServer">
-            <Messages>
-             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
-              <Issue>
-               <Item>Grid.LoadGridDll(String):IGridServer</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="OpenSimApplication">
-          <Messages>
-           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Sim</Item>
-             <Item>OpenSim.OpenSimApplication</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="RemoveClientCircuit(System.UInt32):System.Void">
-            <Messages>
-             <Message Id="0#circuitcode" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>OpenSimApplication.RemoveClientCircuit(UInt32):Void</Item>
-               <Item>circuitcode</Item>
-               <Item>circuitcode</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SendPacketTo(System.Byte[],System.Int32,System.Net.Sockets.SocketFlags,System.UInt32):System.Void">
-            <Messages>
-             <Message Id="3#circuitcode" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>OpenSimApplication.SendPacketTo(Byte[], Int32, SocketFlags, UInt32):Void</Item>
-               <Item>circuitcode</Item>
-               <Item>circuitcode</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="StartUp():System.Void">
-            <Messages>
-             <Message Id="StartUp" TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ShouldBeDiscreteTerm">
-               <Item>StartUp</Item>
-               <Item>method</Item>
-               <Item>StartUp</Item>
-               <Item>Startup</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="OpenSimMain">
-          <Messages>
-           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Sim</Item>
-             <Item>OpenSim.OpenSimMain</Item>
-            </Issue>
-           </Message>
-           <Message TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-            <Issue>
-             <Item>OpenSim.OpenSimMain</Item>
-             <Item>System.Timers.Timer, System.Net.Sockets.Socket</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name=".ctor()">
-            <Messages>
-             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>OpenSimMain.OpenSimMain()</Item>
-               <Item>loginserver</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-              <Issue>
-               <Item>OpenSimMain.OpenSimMain()</Item>
-               <Item>sandbox</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="_physicsEngine">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>_physicsEngine</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>_physicsEngine</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoadConfigDll(System.String):OpenSim.Framework.Interfaces.SimConfig">
-            <Messages>
-             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
-              <Issue>
-               <Item>OpenSimMain.LoadConfigDll(String):SimConfig</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="loginserver">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>loginserver</Item>
-              </Issue>
-             </Message>
-             <Message Id="loginserver" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>loginserver</Item>
-               <Item>OpenSimMain.loginserver</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="sandbox">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>sandbox</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Server">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Server</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="StartUp():System.Void">
-            <Messages>
-             <Message TypeName="DoNotUseTimersThatPreventPowerStateChanges" Category="Microsoft.Mobility" CheckId="CA1601" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Timer.set_Interval(Double):Void</Item>
-               <Item>OpenSimMain.StartUp():Void</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.UInt32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>OpenSimMain.StartUp():Void</Item>
-               <Item>System.UInt32.ToString</Item>
-               <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>OpenSimMain.StartUp():Void</Item>
-               <Item>System.UInt32.ToString</Item>
-               <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="OpenSimRoot">
-          <Messages>
-           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Sim</Item>
-             <Item>OpenSim.OpenSimRoot</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name=".ctor()">
-            <Messages>
-             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>OpenSimRoot.OpenSimRoot()</Item>
-               <Item>Sandbox</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Application">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Application</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AssetCache">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AssetCache</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Cfg">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Cfg</Item>
-              </Issue>
-             </Message>
-             <Message Id="Cfg" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Cfg</Item>
-               <Item>OpenSimRoot.Cfg</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ClientThreads">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ClientThreads</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GridServers">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>GridServers</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="HttpServer">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>HttpServer</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="InventoryCache">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>InventoryCache</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LocalWorld">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LocalWorld</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Sandbox">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Sandbox</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="StartUp():System.Void">
-            <Messages>
-             <Message Id="StartUp" TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ShouldBeDiscreteTerm">
-               <Item>StartUp</Item>
-               <Item>method</Item>
-               <Item>StartUp</Item>
-               <Item>Startup</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="startuptime">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>startuptime</Item>
-              </Issue>
-             </Message>
-             <Message Id="startuptime" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>startuptime</Item>
-               <Item>OpenSimRoot.startuptime</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="QueItem">
-          <Messages>
-           <Message Id="Que" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Que</Item>
-             <Item>OpenSim.QueItem</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="Incoming">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Incoming</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Packet">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Packet</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="SimClient">
-          <Messages>
-           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Sim</Item>
-             <Item>OpenSim.SimClient</Item>
-            </Issue>
-           </Message>
-           <Message TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-            <Issue>
-             <Item>OpenSim.SimClient</Item>
-             <Item>System.Timers.Timer</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name=".ctor(System.Net.EndPoint,libsecondlife.Packets.UseCircuitCodePacket)">
-            <Messages>
-             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimClient.SimClient(EndPoint, UseCircuitCodePacket)</Item>
-               <Item>Sequence</Item>
-               <Item>System.UInt32</Item>
-               <Item>0</Item>
-              </Issue>
-              <Issue>
-               <Item>SimClient.SimClient(EndPoint, UseCircuitCodePacket)</Item>
-               <Item>debug</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="DoNotUseTimersThatPreventPowerStateChanges" Category="Microsoft.Mobility" CheckId="CA1601" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Timer.Timer(Double)</Item>
-               <Item>SimClient.SimClient(EndPoint, UseCircuitCodePacket)</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#initialcirpack" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>SimClient.SimClient(EndPoint, UseCircuitCodePacket)</Item>
-               <Item>initialcirpack</Item>
-               <Item>initialcirpack</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AgentID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AgentID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CircuitCode">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>CircuitCode</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ClientAvatar">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ClientAvatar</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="InPacket(libsecondlife.Packets.Packet):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>NewPack</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="newAssetFolder">
-            <Messages>
-             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimClient.newAssetFolder</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="OutPacket(libsecondlife.Packets.Packet):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>NewPack</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ProcessInPacket(libsecondlife.Packets.Packet):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>Pack</Item>
-              </Issue>
-             </Message>
-             <Message Id="wear" TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimClient.ProcessInPacket(Packet):Void</Item>
-               <Item>wear</Item>
-               <Item>libsecondlife.Packets.AgentIsNowWearingPacket</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="TestForEmptyStringsUsingStringLength" Category="Microsoft.Performance" CheckId="CA1820" Created="2007-03-27 04:29:04Z">
-              <Issue Name="IsNullOrEmpty">
-               <Item>op_Equality</Item>
-               <Item>""</Item>
-               <Item>SimClient.ProcessInPacket(Packet):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ProcessOutPacket(libsecondlife.Packets.Packet):System.Void">
-            <Messages>
-             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimClient.ProcessOutPacket(Packet):Void</Item>
-               <Item>System.Exception</Item>
-              </Issue>
-             </Message>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>Pack</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SecureSessionID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SecureSessionID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SessionID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SessionID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="userEP">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>userEP</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="SimConsole">
-          <Messages>
-           <Message TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>OpenSim.SimConsole</Item>
-             <Item> OpenSim.Framework.Console.ConsoleBase</Item>
-            </Issue>
-           </Message>
-           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Sim</Item>
-             <Item>OpenSim.SimConsole</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name=".ctor(OpenSim.Framework.Console.ConsoleBase+ConsoleType,System.String,System.Int32)">
-            <Messages>
-             <Message Id="0#constype" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
-               <Item>constype</Item>
-               <Item>constype</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#sparam" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
-               <Item>sparam</Item>
-               <Item>sparam</Item>
-              </Issue>
-             </Message>
-             <Message Id="2#iparam" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
-               <Item>iparam</Item>
-               <Item>iparam</Item>
-              </Issue>
-             </Message>
-             <Message Id="iparam" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-              <Issue>
-               <Item>iparam</Item>
-               <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
-              </Issue>
-             </Message>
-             <Message Id="sparam" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-              <Issue>
-               <Item>sparam</Item>
-               <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CmdPrompt(System.String,System.String):System.String">
-            <Messages>
-             <Message TypeName="TestForEmptyStringsUsingStringLength" Category="Microsoft.Performance" CheckId="CA1820" Created="2007-03-27 04:29:04Z">
-              <Issue Name="IsNullOrEmpty">
-               <Item>op_Equality</Item>
-               <Item>""</Item>
-               <Item>SimConsole.CmdPrompt(String, String):String</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ConsType">
-            <Messages>
-             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimConsole.ConsType</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="MainConsolePrompt():System.Void">
-            <Messages>
-             <Message Id="System.UInt64.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimConsole.MainConsolePrompt():Void</Item>
-               <Item>System.UInt64.ToString</Item>
-               <Item>System.UInt64.ToString(System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RunCmd(System.String,System.String[]):System.Object">
-            <Messages>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'cmdparams'</Item>
-               <Item>SimConsole.RunCmd(String, String[]):Object</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ShowCommands(System.String):System.Void">
-            <Messages>
-             <Message Id="System.String.Format(System.String,System.Object[])" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimConsole.ShowCommands(String):Void</Item>
-               <Item>System.String.Format(System.String,System.Object[])</Item>
-               <Item>System.String.Format(System.IFormatProvider,System.String,System.Object[])</Item>
-              </Issue>
-              <Issue>
-               <Item>SimConsole.ShowCommands(String):Void</Item>
-               <Item>System.String.Format(System.String,System.Object[])</Item>
-               <Item>System.String.Format(System.IFormatProvider,System.String,System.Object[])</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="VersionInfo">
-          <Members>
-           <Member Name="Version">
-            <Messages>
-             <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Version</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-       <Namespace Name="OpenSim.Assets">
-        <Types>
-         <Type Name="AssetCache">
-          <Members>
-           <Member Name="AddTextureRequest(OpenSim.SimClient,libsecondlife.LLUUID):System.Void">
-            <Messages>
-             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>imageID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AssetRequests">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AssetRequests</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>System.Collections.Generic.List`1&lt;OpenSim.Assets.AssetRequest&gt;</Item>
-               <Item>AssetCache.AssetRequests</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Assets">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Assets</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CloneAsset(libsecondlife.LLUUID,OpenSim.Assets.AssetInfo):OpenSim.Assets.AssetInfo">
-            <Messages>
-             <Message TypeName="ConsiderPassingBaseTypesAsParameters" Category="Microsoft.Design" CheckId="CA1011" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>sourceAsset</Item>
-               <Item>AssetCache.CloneAsset(LLUUID, AssetInfo):AssetInfo</Item>
-               <Item>OpenSim.Assets.AssetInfo</Item>
-               <Item>OpenSim.Framework.Assets.AssetBase</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-              <Issue>
-               <Item>AssetCache.CloneAsset(LLUUID, AssetInfo):AssetInfo</Item>
-              </Issue>
-             </Message>
-             <Message Id="newOwner" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-              <Issue>
-               <Item>newOwner</Item>
-               <Item>AssetCache.CloneAsset(LLUUID, AssetInfo):AssetInfo</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'sourceAsset'</Item>
-               <Item>AssetCache.CloneAsset(LLUUID, AssetInfo):AssetInfo</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CloneImage(libsecondlife.LLUUID,OpenSim.Assets.TextureImage):OpenSim.Assets.TextureImage">
-            <Messages>
-             <Message TypeName="ConsiderPassingBaseTypesAsParameters" Category="Microsoft.Design" CheckId="CA1011" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>source</Item>
-               <Item>AssetCache.CloneImage(LLUUID, TextureImage):TextureImage</Item>
-               <Item>OpenSim.Assets.TextureImage</Item>
-               <Item>OpenSim.Framework.Assets.AssetBase</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-              <Issue>
-               <Item>AssetCache.CloneImage(LLUUID, TextureImage):TextureImage</Item>
-              </Issue>
-             </Message>
-             <Message Id="newOwner" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-              <Issue>
-               <Item>newOwner</Item>
-               <Item>AssetCache.CloneImage(LLUUID, TextureImage):TextureImage</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'source'</Item>
-               <Item>AssetCache.CloneImage(LLUUID, TextureImage):TextureImage</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CreateNewInventorySet(libsecondlife.LLUUID):OpenSim.Framework.Assets.AssetBase[]">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>agentID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GetAsset(libsecondlife.LLUUID):OpenSim.Framework.Assets.AssetBase">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>assetID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RequestedAssets">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RequestedAssets</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RequestedTextures">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RequestedTextures</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RunAssetManager():System.Void">
-            <Messages>
-             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AssetCache.RunAssetManager():Void</Item>
-               <Item>System.Exception</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="TextureRequests">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>TextureRequests</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>System.Collections.Generic.List`1&lt;OpenSim.Assets.AssetRequest&gt;</Item>
-               <Item>AssetCache.TextureRequests</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Textures">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Textures</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="AssetInfo">
-          <Messages>
-           <Message TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>OpenSim.Assets.AssetInfo</Item>
-             <Item> OpenSim.Framework.Assets.AssetBase</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name=".ctor(OpenSim.Framework.Assets.AssetBase)">
-            <Messages>
-             <Message Id="0#a" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>AssetInfo.AssetInfo(AssetBase)</Item>
-               <Item>a</Item>
-               <Item>aBase</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'aBase'</Item>
-               <Item>AssetInfo.AssetInfo(AssetBase)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="AssetRequest">
-          <Members>
-           <Member Name=".ctor()">
-            <Messages>
-             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AssetRequest.AssetRequest()</Item>
-               <Item>DataPointer</Item>
-               <Item>System.Int64</Item>
-               <Item>0</Item>
-              </Issue>
-              <Issue>
-               <Item>AssetRequest.AssetRequest()</Item>
-               <Item>NumPackets</Item>
-               <Item>System.Int32</Item>
-               <Item>0</Item>
-              </Issue>
-              <Issue>
-               <Item>AssetRequest.AssetRequest()</Item>
-               <Item>PacketCounter</Item>
-               <Item>System.Int32</Item>
-               <Item>0</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AssetInf">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AssetInf</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="DataPointer">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>DataPointer</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ImageInfo">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ImageInfo</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="IsTextureRequest">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>IsTextureRequest</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="NumPackets">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>NumPackets</Item>
-              </Issue>
-             </Message>
-             <Message Id="Num" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Num</Item>
-               <Item>AssetRequest.NumPackets</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PacketCounter">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PacketCounter</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RequestAssetID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RequestAssetID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RequestUser">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>RequestUser</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="TransferRequestID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>TransferRequestID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="InventoryCache">
-          <Members>
-           <Member Name="AddNewInventoryItem(OpenSim.SimClient,libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):libsecondlife.LLUUID">
-            <Messages>
-             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>folderID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ClientLeaving(libsecondlife.LLUUID):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>clientID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CreateNewInventoryFolder(OpenSim.SimClient,libsecondlife.LLUUID):System.Boolean">
-            <Messages>
-             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>folderID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CreateNewInventoryFolder(OpenSim.SimClient,libsecondlife.LLUUID,System.UInt16):System.Boolean">
-            <Messages>
-             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>folderID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="FetchInventory(OpenSim.SimClient,libsecondlife.Packets.FetchInventoryPacket):System.Void">
-            <Messages>
-             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>FetchItems</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="FetchInventoryDescendents(OpenSim.SimClient,libsecondlife.Packets.FetchInventoryDescendentsPacket):System.Void">
-            <Messages>
-             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>FetchDescend</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GetAgentsInventory(libsecondlife.LLUUID):OpenSim.Framework.Inventory.AgentInventory">
-            <Messages>
-             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>agentID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UpdateInventoryItem(OpenSim.SimClient,libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):System.Boolean">
-            <Messages>
-             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>itemID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="TextureImage">
-          <Messages>
-           <Message TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>OpenSim.Assets.TextureImage</Item>
-             <Item> OpenSim.Framework.Assets.AssetBase</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name=".ctor(OpenSim.Framework.Assets.AssetBase)">
-            <Messages>
-             <Message Id="0#a" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>TextureImage.TextureImage(AssetBase)</Item>
-               <Item>a</Item>
-               <Item>aBase</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'aBase'</Item>
-               <Item>TextureImage.TextureImage(AssetBase)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-       <Namespace Name="OpenSim.CAPS">
-        <Types>
-         <Type Name="SimCAPSHTTPServer">
-          <Messages>
-           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Sim</Item>
-             <Item>OpenSim.CAPS.SimCAPSHTTPServer</Item>
-            </Issue>
-           </Message>
-           <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>SimCAPSHTTPServer</Item>
-            </Issue>
-           </Message>
-           <Message TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-            <Issue>
-             <Item>OpenSim.CAPS.SimCAPSHTTPServer</Item>
-             <Item>System.Net.HttpListener</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="HandleRequest(System.Object):System.Void">
-            <Messages>
-             <Message Id="0#stateinfo" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>SimCAPSHTTPServer.HandleRequest(Object):Void</Item>
-               <Item>stateinfo</Item>
-               <Item>stateinfo</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="HTTPD">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>HTTPD</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Listener">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Listener</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoadAdminPage():System.Void">
-            <Messages>
-             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimCAPSHTTPServer.LoadAdminPage():Void</Item>
-               <Item>System.Exception</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ParseLLSDXML(System.String):System.String">
-            <Messages>
-             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
-              <Issue>
-               <Item>SimCAPSHTTPServer.ParseLLSDXML(String):String</Item>
-              </Issue>
-             </Message>
-             <Message Id="requestBody" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
-              <Issue>
-               <Item>requestBody</Item>
-               <Item>SimCAPSHTTPServer.ParseLLSDXML(String):String</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ParseREST(System.String,System.String,System.String):System.String">
-            <Messages>
-             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimCAPSHTTPServer.ParseREST(String, String, String):String</Item>
-               <Item>System.Exception</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.String.Format(System.String,System.Object[])" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimCAPSHTTPServer.ParseREST(String, String, String):String</Item>
-               <Item>System.String.Format(System.String,System.Object[])</Item>
-               <Item>System.String.Format(System.IFormatProvider,System.String,System.Object[])</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ParseXMLRPC(System.String):System.String">
-            <Messages>
-             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimCAPSHTTPServer.ParseXMLRPC(String):String</Item>
-               <Item>System.Exception</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
-              <Issue>
-               <Item>SimCAPSHTTPServer.ParseXMLRPC(String):String</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.Convert.ToUInt32(System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimCAPSHTTPServer.ParseXMLRPC(String):String</Item>
-               <Item>System.Convert.ToUInt32(System.Object)</Item>
-               <Item>System.Convert.ToUInt32(System.Object,System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="StartHTTP():System.Void">
-            <Messages>
-             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>SimCAPSHTTPServer.StartHTTP():Void</Item>
-               <Item>System.Exception</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>SimCAPSHTTPServer.StartHTTP():Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-       <Namespace Name="OpenSim.types">
-        <Types>
-         <Type Name="Mesh">
-          <Members>
-           <Member Name="mesh">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>mesh</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>System.Collections.Generic.List`1&lt;OpenSim.types.Triangle&gt;</Item>
-               <Item>Mesh.mesh</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="op_Addition(OpenSim.types.Mesh,OpenSim.types.Mesh):OpenSim.types.Mesh">
-            <Messages>
-             <Message Id="0#a" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterOneLetter">
-               <Item>Mesh.op_Addition(Mesh, Mesh):Mesh</Item>
-               <Item>a</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#b" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterOneLetter">
-               <Item>Mesh.op_Addition(Mesh, Mesh):Mesh</Item>
-               <Item>b</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="OperatorOverloadsHaveNamedAlternates" Category="Microsoft.Usage" CheckId="CA2225" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Add</Item>
-               <Item>Mesh.op_Addition(Mesh, Mesh):Mesh</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="OverloadOperatorEqualsOnOverloadingAddAndSubtract" Category="Microsoft.Design" CheckId="CA1013" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Mesh</Item>
-               <Item>Mesh.op_Addition(Mesh, Mesh):Mesh</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="Triangle">
-          <Members>
-           <Member Name=".ctor(Axiom.MathLib.Vector3,Axiom.MathLib.Vector3,Axiom.MathLib.Vector3)">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>A</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>B</Item>
-              </Issue>
-             </Message>
-             <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>C</Item>
-              </Issue>
-             </Message>
-             <Message Id="0#A" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterOneLetter">
-               <Item>Triangle.Triangle(Vector3, Vector3, Vector3)</Item>
-               <Item>A</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#B" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterOneLetter">
-               <Item>Triangle.Triangle(Vector3, Vector3, Vector3)</Item>
-               <Item>B</Item>
-              </Issue>
-             </Message>
-             <Message Id="2#C" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterOneLetter">
-               <Item>Triangle.Triangle(Vector3, Vector3, Vector3)</Item>
-               <Item>C</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-       <Namespace Name="OpenSim.UserServer">
-        <Types>
-         <Type Name="LocalUserProfileManager">
-          <Members>
-           <Member Name="CustomiseResponse(System.Collections.Hashtable&amp;,OpenSim.Framework.User.UserProfile):System.Void">
-            <Messages>
-             <Message Id="System.Int32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.Int32.ToString</Item>
-               <Item>System.Int32.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.Int32.ToString</Item>
-               <Item>System.Int32.ToString(System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.Single.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-              <Issue>
-               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
-               <Item>System.Single.ToString</Item>
-               <Item>System.Single.ToString(System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="LoginServer">
-          <Messages>
-           <Message TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>OpenSim.UserServer.LoginServer</Item>
-             <Item> OpenSim.Framework.Grid.LoginService</Item>
-            </Issue>
-           </Message>
-           <Message TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-            <Issue>
-             <Item>OpenSim.UserServer.LoginServer</Item>
-             <Item>System.Net.Sockets.Socket</Item>
-            </Issue>
-           </Message>
-           <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Login</Item>
-             <Item>LoginServer</Item>
-             <Item>LogOn</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name=".ctor(OpenSim.Framework.Interfaces.IGridServer)">
-            <Messages>
-             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LoginServer.LoginServer(IGridServer)</Item>
-               <Item>_needPasswd</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-              <Issue>
-               <Item>LoginServer.LoginServer(IGridServer)</Item>
-               <Item>userAccounts</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Authenticate(System.String,System.String,System.String):System.Boolean">
-            <Messages>
-             <Message Id="2#passwd" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>LoginServer.Authenticate(String, String, String):Boolean</Item>
-               <Item>passwd</Item>
-               <Item>passwd</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="clientAddress">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>clientAddress</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CustomiseLoginResponse(System.Collections.Hashtable,System.String,System.String):System.Void">
-            <Messages>
-             <Message Id="Customise" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Customise</Item>
-               <Item>LoginServer.CustomiseLoginResponse(Hashtable, String, String):Void</Item>
-              </Issue>
-             </Message>
-             <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Login</Item>
-               <Item>CustomiseLoginResponse</Item>
-               <Item>LogOn</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="EncodePassword(System.String):System.String">
-            <Messages>
-             <Message Id="System.String.ToLower" TypeName="SpecifyCultureInfo" Category="Microsoft.Globalization" CheckId="CA1304" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LoginServer.EncodePassword(String):String</Item>
-               <Item>System.String.ToLower</Item>
-               <Item>System.String.ToLower(System.Globalization.CultureInfo)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GetAgentId(System.String,System.String):libsecondlife.LLUUID">
-            <Messages>
-             <Message Id="System.Int32.ToString(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LoginServer.GetAgentId(String, String):LLUUID</Item>
-               <Item>System.Int32.ToString(System.String)</Item>
-               <Item>System.Int32.ToString(System.String,System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="InitializeLogin():System.Void">
-            <Messages>
-             <Message Id="OpenSim.Framework.User.UserProfileManager.SetKeys(System.String,System.String,System.String,System.String)" TypeName="DoNotPassLiteralsAsLocalizedParameters" Category="Microsoft.Globalization" CheckId="CA1303" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LoginServer.InitializeLogin():Void</Item>
-               <Item>4</Item>
-               <Item>UserProfileManager.SetKeys(String, String, String, String):Void</Item>
-               <Item>Welcome to OpenSim</Item>
-              </Issue>
-             </Message>
-             <Message Id="Sim" TypeName="LiteralsShouldBeSpelledCorrectly" Category="Microsoft.Usage" CheckId="CA2204" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Sim</Item>
-               <Item>OpenSim</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoginRequest(System.IO.StreamReader,System.IO.StreamWriter):System.Void">
-            <Messages>
-             <Message TypeName="DoNotRaiseReservedExceptionTypes" Category="Microsoft.Usage" CheckId="CA2201" Created="2007-03-27 04:29:04Z">
-              <Issue Name="TooGeneric">
-               <Item>LoginServer.LoginRequest(StreamReader, StreamWriter):Void</Item>
-               <Item>System.Exception</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.Convert.ToInt32(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LoginServer.LoginRequest(StreamReader, StreamWriter):Void</Item>
-               <Item>System.Convert.ToInt32(System.String)</Item>
-               <Item>System.Convert.ToInt32(System.String,System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="TestForEmptyStringsUsingStringLength" Category="Microsoft.Performance" CheckId="CA1820" Created="2007-03-27 04:29:04Z">
-              <Issue Name="IsNullOrEmpty">
-               <Item>op_Inequality</Item>
-               <Item>""</Item>
-               <Item>LoginServer.LoginRequest(StreamReader, StreamWriter):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ProcessXmlRequest(Nwc.XmlRpc.XmlRpcRequest,System.IO.StreamWriter):System.Boolean">
-            <Messages>
-             <Message TypeName="ConsiderPassingBaseTypesAsParameters" Category="Microsoft.Design" CheckId="CA1011" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>writer</Item>
-               <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
-               <Item>System.IO.StreamWriter</Item>
-               <Item>System.IO.TextWriter</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.Int32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
-               <Item>System.Int32.ToString</Item>
-               <Item>System.Int32.ToString(System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.Int32.ToString(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
-               <Item>System.Int32.ToString(System.String)</Item>
-               <Item>System.Int32.ToString(System.String,System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'request'</Item>
-               <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
-              </Issue>
-              <Issue>
-               <Item>'writer'</Item>
-               <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
-              </Issue>
-              <Issue>
-               <Item>'writer'</Item>
-               <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="remoteAddress">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>remoteAddress</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="RunLogin():System.Void">
-            <Messages>
-             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LoginServer.RunLogin():Void</Item>
-               <Item>System.Exception</Item>
-              </Issue>
-              <Issue>
-               <Item>LoginServer.RunLogin():Void</Item>
-               <Item>System.Exception</Item>
-              </Issue>
-             </Message>
-             <Message Id="clientEndPoint" TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LoginServer.RunLogin():Void</Item>
-               <Item>clientEndPoint</Item>
-               <Item>System.Net.IPEndPoint</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-       <Namespace Name="OpenSim.world">
-        <Types>
-         <Type Name="Avatar">
-          <Members>
-           <Member Name=".cctor()">
-            <Messages>
-             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Avatar.Avatar()</Item>
-               <Item>PhysicsEngineFlying</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name=".ctor(OpenSim.SimClient)">
-            <Messages>
-             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Avatar.Avatar(SimClient)</Item>
-               <Item>_updateCount</Item>
-               <Item>System.Int16</Item>
-               <Item>0</Item>
-              </Issue>
-              <Issue>
-               <Item>Avatar.Avatar(SimClient)</Item>
-               <Item>avatarAppearanceTexture</Item>
-               <Item>libsecondlife.LLObject+TextureEntry</Item>
-               <Item>null</Item>
-              </Issue>
-              <Issue>
-               <Item>Avatar.Avatar(SimClient)</Item>
-               <Item>movementflag</Item>
-               <Item>System.Byte</Item>
-               <Item>0</Item>
-              </Issue>
-              <Issue>
-               <Item>Avatar.Avatar(SimClient)</Item>
-               <Item>updateflag</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-             </Message>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>TheClient</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="anim_seq">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>anim_seq</Item>
-              </Issue>
-             </Message>
-             <Message Id="anim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>anim</Item>
-               <Item>Avatar.anim_seq</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>anim_seq</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Animations">
-            <Messages>
-             <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Animations</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CompleteMovement(OpenSim.world.World):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>RegionInfo</Item>
-              </Issue>
-             </Message>
-             <Message Id="RegionInfo" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-              <Issue>
-               <Item>RegionInfo</Item>
-               <Item>Avatar.CompleteMovement(World):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="ControllingClient">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>ControllingClient</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="current_anim">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>current_anim</Item>
-              </Issue>
-             </Message>
-             <Message Id="anim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>anim</Item>
-               <Item>Avatar.current_anim</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>current_anim</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="firstname">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>firstname</Item>
-              </Issue>
-             </Message>
-             <Message Id="firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>firstname</Item>
-               <Item>Avatar.firstname</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="lastname">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>lastname</Item>
-              </Issue>
-             </Message>
-             <Message Id="lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>lastname</Item>
-               <Item>Avatar.lastname</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoadAnims():System.Void">
-            <Messages>
-             <Message Id="Anims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Anims</Item>
-               <Item>Avatar.LoadAnims():Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PhysActor">
-            <Messages>
-             <Message TypeName="PropertiesShouldNotBeWriteOnly" Category="Microsoft.Design" CheckId="CA1044" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PhysActor</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PhysicsEngineFlying">
-            <Messages>
-             <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PhysicsEngineFlying</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SendAnimPack():System.Void">
-            <Messages>
-             <Message Id="Anim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Anim</Item>
-               <Item>Avatar.SendAnimPack():Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SendAppearanceToOtherAgent(OpenSim.SimClient):System.Void">
-            <Messages>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'userInfo'</Item>
-               <Item>Avatar.SendAppearanceToOtherAgent(SimClient):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SendRegionHandshake(OpenSim.world.World):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>RegionInfo</Item>
-              </Issue>
-             </Message>
-             <Message Id="RegionInfo" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-              <Issue>
-               <Item>RegionInfo</Item>
-               <Item>Avatar.SendRegionHandshake(World):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="AvatarAnimations">
-          <Members>
-           <Member Name="AnimsLLUUID">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AnimsLLUUID</Item>
-              </Issue>
-             </Message>
-             <Message Id="Anims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Anims</Item>
-               <Item>AvatarAnimations.AnimsLLUUID</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AnimsNames">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>AnimsNames</Item>
-              </Issue>
-             </Message>
-             <Message Id="Anims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Anims</Item>
-               <Item>AvatarAnimations.AnimsNames</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoadAnims():System.Void">
-            <Messages>
-             <Message Id="Anims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Anims</Item>
-               <Item>AvatarAnimations.LoadAnims():Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="Entity">
-          <Members>
-           <Member Name=".ctor()">
-            <Messages>
-             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Entity.Entity()</Item>
-               <Item>localid</Item>
-               <Item>System.UInt32</Item>
-               <Item>0</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="addForces():System.Void">
-            <Messages>
-             <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>addForces</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="BackUp():System.Void">
-            <Messages>
-             <Message Id="BackUp" TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ShouldBeDiscreteTerm">
-               <Item>BackUp</Item>
-               <Item>method</Item>
-               <Item>BackUp</Item>
-               <Item>Backup</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="children">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>children</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>System.Collections.Generic.List`1&lt;OpenSim.world.Entity&gt;</Item>
-               <Item>Entity.children</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="getMesh():OpenSim.types.Mesh">
-            <Messages>
-             <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>getMesh</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="getName():System.String">
-            <Messages>
-             <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>getName</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="localid">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>localid</Item>
-              </Issue>
-             </Message>
-             <Message Id="localid" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>localid</Item>
-               <Item>Entity.localid</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="name">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>name</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="position">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>position</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="rotation">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>rotation</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="update():System.Void">
-            <Messages>
-             <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>update</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="uuid">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>uuid</Item>
-              </Issue>
-             </Message>
-             <Message Id="uuid" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>uuid</Item>
-               <Item>Entity.uuid</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="velocity">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>velocity</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="NewForce">
-          <Members>
-           <Member Name="X">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>X</Item>
-              </Issue>
-             </Message>
-             <Message Id="X" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="MemberOneLetter">
-               <Item>X</Item>
-               <Item>NewForce.X</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Y">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Y</Item>
-              </Issue>
-             </Message>
-             <Message Id="Y" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="MemberOneLetter">
-               <Item>Y</Item>
-               <Item>NewForce.Y</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Z">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Z</Item>
-              </Issue>
-             </Message>
-             <Message Id="Z" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="MemberOneLetter">
-               <Item>Z</Item>
-               <Item>NewForce.Z</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="Primitive">
-          <Messages>
-           <Message TypeName="IdentifiersShouldDifferByMoreThanCase" Category="Microsoft.Naming" CheckId="CA1708" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Member">
-             <Item>'UpdateFlag'</Item>
-             <Item>updateFlag</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name=".ctor()">
-            <Messages>
-             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Primitive.Primitive()</Item>
-               <Item>dirtyFlag</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-              <Issue>
-               <Item>Primitive.Primitive()</Item>
-               <Item>mesh_cutbegin</Item>
-               <Item>System.Single</Item>
-               <Item>0.0</Item>
-              </Issue>
-              <Issue>
-               <Item>Primitive.Primitive()</Item>
-               <Item>newPrimFlag</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-              <Issue>
-               <Item>Primitive.Primitive()</Item>
-               <Item>physicsEnabled</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-              <Issue>
-               <Item>Primitive.Primitive()</Item>
-               <Item>physicstest</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-              <Issue>
-               <Item>Primitive.Primitive()</Item>
-               <Item>updateFlag</Item>
-               <Item>System.Boolean</Item>
-               <Item>false</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CreateFromPacket(libsecondlife.Packets.ObjectAddPacket,libsecondlife.LLUUID,System.UInt32):System.Void">
-            <Messages>
-             <Message Id="localID-702000" TypeName="OperationsShouldNotOverflow" Category="Microsoft.Usage" CheckId="CA2233" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>localID-702000</Item>
-               <Item>Primitive.CreateFromPacket(ObjectAddPacket, LLUUID, UInt32):Void</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>agentID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-             <Message Id="2#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="ParameterId">
-               <Item>ID</Item>
-               <Item>localID</Item>
-               <Item>Id</Item>
-              </Issue>
-             </Message>
-             <Message Id="System.UInt32.ToString(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Primitive.CreateFromPacket(ObjectAddPacket, LLUUID, UInt32):Void</Item>
-               <Item>System.UInt32.ToString(System.String)</Item>
-               <Item>System.UInt32.ToString(System.String,System.IFormatProvider)</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'addPacket'</Item>
-               <Item>Primitive.CreateFromPacket(ObjectAddPacket, LLUUID, UInt32):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="CreateFromStorage(OpenSim.Framework.Assets.PrimData):System.Void">
-            <Messages>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'store'</Item>
-               <Item>Primitive.CreateFromStorage(PrimData):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="dirtyFlag">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>dirtyFlag</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="mesh_cutbegin">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>mesh_cutbegin</Item>
-              </Issue>
-             </Message>
-             <Message Id="cutbegin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>cutbegin</Item>
-               <Item>Primitive.mesh_cutbegin</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>mesh_cutbegin</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="mesh_cutend">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>mesh_cutend</Item>
-              </Issue>
-             </Message>
-             <Message Id="cutend" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>cutend</Item>
-               <Item>Primitive.mesh_cutend</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>mesh_cutend</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="newPrimFlag">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>newPrimFlag</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="PhysActor">
-            <Messages>
-             <Message TypeName="PropertiesShouldNotBeWriteOnly" Category="Microsoft.Design" CheckId="CA1044" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PhysActor</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="primData">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>primData</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UpdateClient(OpenSim.SimClient):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>RemoteClient</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'RemoteClient'</Item>
-               <Item>Primitive.UpdateClient(SimClient):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="updateFlag">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>updateFlag</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UpdateObjectFlags(libsecondlife.Packets.ObjectFlagUpdatePacket):System.Void">
-            <Messages>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'pack'</Item>
-               <Item>Primitive.UpdateObjectFlags(ObjectFlagUpdatePacket):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="UpdateShape(libsecondlife.Packets.ObjectShapePacket+ObjectDataBlock):System.Void">
-            <Messages>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'addPacket'</Item>
-               <Item>Primitive.UpdateShape(ObjectDataBlock):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="ScriptEngine">
-          <Members>
-           <Member Name=".ctor(OpenSim.world.World)">
-            <Messages>
-             <Message Id="0#env" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>ScriptEngine.ScriptEngine(World)</Item>
-               <Item>env</Item>
-               <Item>env</Item>
-              </Issue>
-             </Message>
-             <Message Id="env" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-              <Issue>
-               <Item>env</Item>
-               <Item>ScriptEngine.ScriptEngine(World)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoadScript():System.Void">
-            <Messages>
-             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-              <Issue>
-               <Item>ScriptEngine.LoadScript():Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="SurfacePatch">
-          <Members>
-           <Member Name="HeightMap">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>HeightMap</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="World">
-          <Messages>
-           <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>World</Item>
-             <Item>OpenSim.world</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name=".ctor()">
-            <Messages>
-             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>World.World()</Item>
-               <Item>_localNumber</Item>
-               <Item>System.UInt32</Item>
-               <Item>0</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="_localNumber">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>_localNumber</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>_localNumber</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AddNewPrim(libsecondlife.Packets.ObjectAddPacket,OpenSim.SimClient):System.Void">
-            <Messages>
-             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>AgentClient</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="AddViewerAgent(OpenSim.SimClient):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>AgentClient</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="DeRezObject(libsecondlife.Packets.DeRezObjectPacket,OpenSim.SimClient):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>DeRezPacket</Item>
-              </Issue>
-             </Message>
-             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>AgentClient</Item>
-              </Issue>
-             </Message>
-             <Message Id="0#Rez" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>World.DeRezObject(DeRezObjectPacket, SimClient):Void</Item>
-               <Item>Rez</Item>
-               <Item>DeRezPacket</Item>
-              </Issue>
-             </Message>
-             <Message Id="Rez" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Rez</Item>
-               <Item>World.DeRezObject(DeRezObjectPacket, SimClient):Void</Item>
-              </Issue>
-             </Message>
-             <Message Id="AgentClient" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-              <Issue>
-               <Item>AgentClient</Item>
-               <Item>World.DeRezObject(DeRezObjectPacket, SimClient):Void</Item>
-              </Issue>
-             </Message>
-             <Message Id="Member" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>De</Item>
-               <Item>World.DeRezObject(DeRezObjectPacket, SimClient):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Entities">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Entities</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="GetInitialPrims(OpenSim.SimClient):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>RemoteClient</Item>
-              </Issue>
-             </Message>
-             <Message Id="Prims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Prims</Item>
-               <Item>World.GetInitialPrims(SimClient):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LandMap">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>LandMap</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoadPrimsFromStorage():System.Void">
-            <Messages>
-             <Message Id="Prims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>Prims</Item>
-               <Item>World.LoadPrimsFromStorage():Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoadStorageDLL(System.String):System.Boolean">
-            <Messages>
-             <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Member">
-               <Item>World.LoadStorageDLL(String):Boolean</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="localStorage">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>localStorage</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Rand">
-            <Messages>
-             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>World.Rand</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Scripts">
-            <Messages>
-             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Scripts</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SendLayerData(OpenSim.SimClient):System.Void">
-            <Messages>
-             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>RemoteClient</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'RemoteClient'</Item>
-               <Item>World.SendLayerData(SimClient):Void</Item>
-              </Issue>
-              <Issue>
-               <Item>'RemoteClient'</Item>
-               <Item>World.SendLayerData(SimClient):Void</Item>
-              </Issue>
-              <Issue>
-               <Item>'RemoteClient'</Item>
-               <Item>World.SendLayerData(SimClient):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-       <Namespace Name="OpenSim.world.scripting">
-        <Types>
-         <Type Name="IScriptHost">
-          <Members>
-           <Member Name="Register(OpenSim.world.scripting.IScript):System.Boolean">
-            <Messages>
-             <Message Id="0#iscript" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>IScriptHost.Register(IScript):Boolean</Item>
-               <Item>iscript</Item>
-               <Item>iscript</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-      </Namespaces>
-     </Module>
-    </Modules>
-   </Target>
-   <Target Name="$(ProjectDir)/bin/OpenSim.Storage.LocalStorageDb4o.dll">
-    <Modules>
-     <Module Name="opensim.storage.localstoragedb4o.dll">
-      <Messages>
-       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenSim.Storage.LocalStorageDb4o</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoStrongName">
-         <Item>OpenSim.Storage.LocalStorageDb4o</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttr">
-         <Item>OpenSim.Storage.LocalStorageDb4o</Item>
-        </Issue>
-       </Message>
-      </Messages>
-      <Namespaces>
-       <Namespace Name="OpenSim.Storage.LocalStorageDb4o">
-        <Types>
-         <Type Name="Db4LocalStorage">
-          <Members>
-           <Member Name=".ctor()">
-            <Messages>
-             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>Db4LocalStorage.Db4LocalStorage()</Item>
-               <Item>System.Exception</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LoadPrimitives(OpenSim.Framework.Interfaces.ILocalStorageReceiver):System.Void">
-            <Messages>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'receiver'</Item>
-               <Item>Db4LocalStorage.LoadPrimitives(ILocalStorageReceiver):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="StorePrim(OpenSim.Framework.Assets.PrimData):System.Void">
-            <Messages>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'prim'</Item>
-               <Item>Db4LocalStorage.StorePrim(PrimData):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="UUIDQuery">
-          <Messages>
-           <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>UUIDQuery</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name="Match(OpenSim.Framework.Assets.PrimData):System.Boolean">
-            <Messages>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'prim'</Item>
-               <Item>UUIDQuery.Match(PrimData):Boolean</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-      </Namespaces>
-     </Module>
-    </Modules>
-   </Target>
-   <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.BasicPhysicsPlugin.dll">
-    <Modules>
-     <Module Name="opensim.physics.basicphysicsplugin.dll">
-      <Messages>
-       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Status="Excluded" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
-        </Issue>
-        <Notes>
-         <User Name="Stefan">
-          <Note Id="2" />
-         </User>
-        </Notes>
-       </Message>
-       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Status="Excluded" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoStrongName">
-         <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
-        </Issue>
-        <Notes>
-         <User Name="Stefan">
-          <Note Id="0" />
-         </User>
-        </Notes>
-       </Message>
-       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Status="Excluded" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttr">
-         <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
-        </Issue>
-        <Notes>
-         <User Name="Stefan">
-          <Note Id="1" />
-         </User>
-        </Notes>
-       </Message>
-      </Messages>
-      <Namespaces>
-       <Namespace Name="OpenSim.Physics.BasicPhysicsPlugin">
-        <Types>
-         <Type Name="BasicActor">
-          <Members>
-           <Member Name="flying">
-            <Messages>
-             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>BasicActor.flying</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
-            <Messages>
-             <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>BasicActor.SetAcceleration(PhysicsVector):Void</Item>
-               <Item>accel</Item>
-               <Item>accel</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="BasicPhysicsPlugin">
-          <Messages>
-           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Plugin</Item>
-             <Item>OpenSim.Physics.BasicPhysicsPlugin.BasicPhysicsPlugin</Item>
-            </Issue>
-           </Message>
-           <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>BasicPhysicsPlugin</Item>
-             <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
-            </Issue>
-           </Message>
-          </Messages>
-         </Type>
-        </Types>
-       </Namespace>
-      </Namespaces>
-     </Module>
-    </Modules>
-   </Target>
-   <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.OdePlugin.dll">
-    <Modules>
-     <Module Name="opensim.physics.odeplugin.dll">
-      <Messages>
-       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenSim.Physics.OdePlugin</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoStrongName">
-         <Item>OpenSim.Physics.OdePlugin</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttr">
-         <Item>OpenSim.Physics.OdePlugin</Item>
-        </Issue>
-       </Message>
-      </Messages>
-      <Namespaces>
-       <Namespace Name="OpenSim.Physics.OdePlugin">
-        <Types>
-         <Type Name="OdeCharacter">
-          <Messages>
-           <Message TypeName="TypesThatOwnNativeResourcesShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1049" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>OdeCharacter</Item>
-            </Issue>
-           </Message>
-          </Messages>
-          <Members>
-           <Member Name=".ctor(OpenSim.Physics.OdePlugin.OdeScene,OpenSim.Physics.Manager.PhysicsVector)">
-            <Messages>
-             <Message Id="parent_scene" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
-              <Issue>
-               <Item>parent_scene</Item>
-               <Item>OdeCharacter.OdeCharacter(OdeScene, PhysicsVector)</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'pos'</Item>
-               <Item>OdeCharacter.OdeCharacter(OdeScene, PhysicsVector)</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="capsule_geom">
-            <Messages>
-             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>OdeCharacter.capsule_geom</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="gravityAccel">
-            <Messages>
-             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>OdeCharacter.gravityAccel</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
-            <Messages>
-             <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>OdeCharacter.SetAcceleration(PhysicsVector):Void</Item>
-               <Item>accel</Item>
-               <Item>accel</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="OdePlugin">
-          <Messages>
-           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Plugin</Item>
-             <Item>OpenSim.Physics.OdePlugin.OdePlugin</Item>
-            </Issue>
-           </Message>
-           <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>OdePlugin</Item>
-             <Item>OpenSim.Physics.OdePlugin</Item>
-            </Issue>
-           </Message>
-          </Messages>
-         </Type>
-         <Type Name="OdePrim">
-          <Members>
-           <Member Name="_position">
-            <Messages>
-             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>OdePrim._position</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
-            <Messages>
-             <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>OdePrim.SetAcceleration(PhysicsVector):Void</Item>
-               <Item>accel</Item>
-               <Item>accel</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="OdeScene">
-          <Members>
-           <Member Name="AddPrim(OpenSim.Physics.Manager.PhysicsVector,OpenSim.Physics.Manager.PhysicsVector):OpenSim.Physics.Manager.PhysicsActor">
-            <Messages>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'position'</Item>
-               <Item>OdeScene.AddPrim(PhysicsVector, PhysicsVector):PhysicsActor</Item>
-              </Issue>
-              <Issue>
-               <Item>'size'</Item>
-               <Item>OdeScene.AddPrim(PhysicsVector, PhysicsVector):PhysicsActor</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="Land">
-            <Messages>
-             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>OdeScene.Land</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="LandGeom">
-            <Messages>
-             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>OdeScene.LandGeom</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SetTerrain(System.Single[]):System.Void">
-            <Messages>
-             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>'heightMap'</Item>
-               <Item>OdeScene.SetTerrain(Single[]):Void</Item>
-              </Issue>
-              <Issue>
-               <Item>'heightMap'</Item>
-               <Item>OdeScene.SetTerrain(Single[]):Void</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="space">
-            <Messages>
-             <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>space</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="PointersShouldNotBeVisible" Category="Microsoft.Security" CheckId="CA2111" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>space</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="world">
-            <Messages>
-             <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>world</Item>
-              </Issue>
-             </Message>
-             <Message TypeName="PointersShouldNotBeVisible" Category="Microsoft.Security" CheckId="CA2111" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>world</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-      </Namespaces>
-     </Module>
-    </Modules>
-   </Target>
-   <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.PhysXPlugin.dll">
-    <Modules>
-     <Module Name="opensim.physics.physxplugin.dll">
-      <Messages>
-       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
-        <Issue>
-         <Item>OpenSim.Physics.PhysXPlugin</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoStrongName">
-         <Item>OpenSim.Physics.PhysXPlugin</Item>
-        </Issue>
-       </Message>
-       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
-        <Issue Name="NoAttr">
-         <Item>OpenSim.Physics.PhysXPlugin</Item>
-        </Issue>
-       </Message>
-      </Messages>
-      <Namespaces>
-       <Namespace Name="OpenSim.Physics.PhysXPlugin">
-        <Types>
-         <Type Name="PhysXCharacter">
-          <Members>
-           <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
-            <Messages>
-             <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>PhysXCharacter.SetAcceleration(PhysicsVector):Void</Item>
-               <Item>accel</Item>
-               <Item>accel</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-         <Type Name="PhysXPlugin">
-          <Messages>
-           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-            <Issue Name="Type">
-             <Item>Plugin</Item>
-             <Item>OpenSim.Physics.PhysXPlugin.PhysXPlugin</Item>
-            </Issue>
-           </Message>
-           <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
-            <Issue>
-             <Item>PhysXPlugin</Item>
-             <Item>OpenSim.Physics.PhysXPlugin</Item>
-            </Issue>
-           </Message>
-          </Messages>
-         </Type>
-         <Type Name="PhysXPrim">
-          <Members>
-           <Member Name="_position">
-            <Messages>
-             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
-              <Issue>
-               <Item>PhysXPrim._position</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-           <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
-            <Messages>
-             <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
-              <Issue Name="Parameter">
-               <Item>PhysXPrim.SetAcceleration(PhysicsVector):Void</Item>
-               <Item>accel</Item>
-               <Item>accel</Item>
-              </Issue>
-             </Message>
-            </Messages>
-           </Member>
-          </Members>
-         </Type>
-        </Types>
-       </Namespace>
-      </Namespaces>
-     </Module>
-    </Modules>
-   </Target>
-  </Targets>
-  <Notes>
-   <User Name="Stefan">
-    <Note Id="0" Modified="2007-03-27 04:30:24Z">Save it for a rainy day.</Note>
-    <Note Id="1" Modified="2007-03-27 04:30:31Z">Save it for a rainy day.</Note>
-    <Note Id="2" Modified="2007-03-27 04:30:38Z">Save it for a rainy day.</Note>
-   </User>
-  </Notes>
-  <Rules>
-   <Rule TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209">
-    <Resolution Name="Default">No valid permission requests were found for assembly '{0}'. You should always specify the minimum security permissions using SecurityAction.RequestMinimum.</Resolution>
-   </Rule>
-   <Rule TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210">
-    <Resolution Name="NoStrongName">Sign '{0}' with a strong name key.</Resolution>
-   </Rule>
-   <Rule TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020">
-    <Resolution Name="Default">Consider merging the types defined in '{0}' with another namespace.</Resolution>
-   </Rule>
-   <Rule TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823">
-    <Resolution Name="Default">It appears that field '{0}' is never used or is only ever assigned to. Use this field or remove it.</Resolution>
-   </Rule>
-   <Rule TypeName="CollectionPropertiesShouldBeReadOnly" Category="Microsoft.Usage" CheckId="CA2227">
-    <Resolution Name="Default">Change '{0}' to be read-only by removing the property setter.</Resolution>
-   </Rule>
-   <Rule TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702">
-    <Resolution Name="ShouldBeDiscreteTerm">The compound word '{0}' in {1} '{2}' exists as a discrete term. If your usage is intended to be single word, case it as '{3}'.</Resolution>
-   </Rule>
-   <Rule TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405">
-    <Resolution Name="Default">'{0}' is marked ComVisible(true) but has the following ComVisible(false) types in its object hierarchy: {1}</Resolution>
-   </Rule>
-   <Rule TypeName="ConsiderPassingBaseTypesAsParameters" Category="Microsoft.Design" CheckId="CA1011">
-    <Resolution Name="Default">Consider changing the type of parameter '{0}' in {1} from {2} to its base type {3}. This method appears to only require base class members in its implementation. Suppress this violation if there is a compelling reason to require the more derived type in the method signature.</Resolution>
-   </Rule>
-   <Rule TypeName="DoNotCallOverridableMethodsInConstructors" Category="Microsoft.Usage" CheckId="CA2214">
-    <Resolution Name="Default">'{0}' contains a call chain that results in a call to a virtual method defined by the class. Review the following call stack for unintended consequences: {1}</Resolution>
-   </Rule>
-   <Rule TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031">
-    <Resolution Name="Default">Modify '{0}' to catch a more specific exception than '{1}' or rethrow the exception.</Resolution>
-   </Rule>
-   <Rule TypeName="DoNotDeclareReadOnlyMutableReferenceTypes" Category="Microsoft.Security" CheckId="CA2104">
-    <Resolution Name="Default">Remove the readonly declaration from '{0}' or change the field to one that is an immutable reference type. If the reference type '{1}' is, in fact, immutable, exclude this message.</Resolution>
-   </Rule>
-   <Rule TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051">
-    <Resolution Name="Default">Make '{0}' private or internal (Friend in VB, public private in C++) and provide a public or protected property to access it.</Resolution>
-   </Rule>
-   <Rule TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002">
-    <Resolution Name="Default">Change '{0}' in {1} to use Collection&lt;T&gt;, ReadOnlyCollection&lt;T&gt; or KeyedCollection&lt;K,V&gt;</Resolution>
-   </Rule>
-   <Rule TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805">
-    <Resolution Name="Default">{0} initializes field {1} of type {2} to {3}. Remove this initialization as it will be done automatically by the runtime.</Resolution>
-   </Rule>
-   <Rule TypeName="DoNotPassLiteralsAsLocalizedParameters" Category="Microsoft.Globalization" CheckId="CA1303">
-    <Resolution Name="Default">{0} passes a literal as parameter {1} of a call to {2}. Retrieve the following string argument from a resource table instead: '{3}'</Resolution>
-   </Rule>
-   <Rule TypeName="DoNotPassTypesByReference" Category="Microsoft.Design" CheckId="CA1045">
-    <Resolution Name="Default">Consider a design that does not require that '{0}' be a reference parameter.</Resolution>
-   </Rule>
-   <Rule TypeName="DoNotRaiseReservedExceptionTypes" Category="Microsoft.Usage" CheckId="CA2201">
-    <Resolution Name="TooGeneric">{0} creates an exception of type '{1}', an exception type that is not sufficiently specific and should never be raised by user code. If this exception instance might be thrown, use a different exception type.</Resolution>
-   </Rule>
-   <Rule TypeName="DoNotUseTimersThatPreventPowerStateChanges" Category="Microsoft.Mobility" CheckId="CA1601">
-    <Resolution Name="Default">Modify the call to {0} in method {1} to set the timer interval to a value that's greater than or equal to one second.</Resolution>
-   </Rule>
-   <Rule TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709">
-    <Resolution Name="Member">Correct the casing of member name '{0}'.</Resolution>
-    <Resolution Name="Namespace">Correct the casing of namespace name '{0}'.</Resolution>
-    <Resolution Name="Parameter">Correct the casing of parameter name '{0}'.</Resolution>
-    <Resolution Name="Type">Correct the casing of type name '{0}'.</Resolution>
-   </Rule>
-   <Rule TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704">
-    <Resolution Name="Member">Correct the spelling of the unrecognized token '{0}' in member name '{1}'.</Resolution>
-    <Resolution Name="MemberOneLetter">Consider providing a more meaningful name than the one-letter token '{0}' in member name '{1}'.</Resolution>
-    <Resolution Name="Namespace">Correct the spelling of the unrecognized token '{0}' in namespace '{1}'.</Resolution>
-    <Resolution Name="Parameter">In method {0}, correct the spelling of the unrecognized token '{1}' in parameter name '{2}' or strip it entirely if it represents any sort of hungarian notation.</Resolution>
-    <Resolution Name="ParameterOneLetter">In method {0}, consider providing a more meaningful name than the one-letter parameter name '{1}'.</Resolution>
-    <Resolution Name="Type">Correct the spelling of the unrecognized token '{0}' in type name '{1}'.</Resolution>
-   </Rule>
-   <Rule TypeName="IdentifiersShouldDifferByMoreThanCase" Category="Microsoft.Naming" CheckId="CA1708">
-    <Resolution Name="Member">Change member names {0} and '{1}' so that they differ by more than case.</Resolution>
-   </Rule>
-   <Rule TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707">
-    <Resolution Name="Member">Remove all underscores from member '{0}'.</Resolution>
-    <Resolution Name="Parameter">Remove all underscores from parameter '{0}'.</Resolution>
-    <Resolution Name="Type">Remove all underscores from type '{0}'.</Resolution>
-   </Rule>
-   <Rule TypeName="IdentifiersShouldNotHaveIncorrectSuffix" Category="Microsoft.Naming" CheckId="CA1711">
-    <Resolution Name="Default">Rename '{0}' so that it does not end in '{1}'.</Resolution>
-   </Rule>
-   <Rule TypeName="LiteralsShouldBeSpelledCorrectly" Category="Microsoft.Usage" CheckId="CA2204">
-    <Resolution Name="Default">Correct the spelling of the unrecognized token '{0}' in the literal '{1}'.</Resolution>
-   </Rule>
-   <Rule TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705">
-    <Resolution Name="Member">Correct the capitalization of member name '{0}'.</Resolution>
-    <Resolution Name="Namespace">Correct the capitalization of namespace name '{0}'.</Resolution>
-    <Resolution Name="Parameter">Correct the capitalization of parameter name '{0}'.</Resolution>
-    <Resolution Name="Type">Correct the capitalization of type name '{0}'.</Resolution>
-   </Rule>
-   <Rule TypeName="MarkAssembliesWithAssemblyVersion" Category="Microsoft.Design" CheckId="CA1016">
-    <Resolution Name="Default">Add an AssemblyVersion attribute to '{0}'.</Resolution>
-   </Rule>
-   <Rule TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014">
-    <Resolution Name="NoAttr">'{0}' should be marked with CLSCompliantAttribute and its value should be true.</Resolution>
-   </Rule>
-   <Rule TypeName="MarkAssembliesWithComVisible" Category="Microsoft.Design" CheckId="CA1017">
-    <Resolution Name="NoAttribute">Mark '{0}' as ComVisible(false) at the assembly level, then mark all types within the assembly that should be exposed to Com clients as ComVisible(true).</Resolution>
-   </Rule>
-   <Rule TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822">
-    <Resolution Name="Default">The 'this' parameter (or 'Me' in VB) of {0} is never used. Mark the member as static (or Shared in VB) or use 'this'/'Me' in the method body or at least one property accessor, if appropriate.</Resolution>
-   </Rule>
-   <Rule TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211">
-    <Resolution Name="Default">Consider making '{0}' non-public or a constant.</Resolution>
-   </Rule>
-   <Rule TypeName="OperationsShouldNotOverflow" Category="Microsoft.Usage" CheckId="CA2233">
-    <Resolution Name="Default">Correct the potential overflow in the operation '{0}' in '{1}'.</Resolution>
-   </Rule>
-   <Rule TypeName="OperatorOverloadsHaveNamedAlternates" Category="Microsoft.Usage" CheckId="CA2225">
-    <Resolution Name="Default">Provide a method named '{0}' as a friendly alternate for operator {1}.</Resolution>
-   </Rule>
-   <Rule TypeName="OverloadOperatorEqualsOnOverloadingAddAndSubtract" Category="Microsoft.Design" CheckId="CA1013">
-    <Resolution Name="Default">Consider adding an overload of the equality operator for '{0}' that takes the same parameters as {1}.</Resolution>
-   </Rule>
-   <Rule TypeName="OverrideEqualsAndOperatorEqualsOnValueTypes" Category="Microsoft.Performance" CheckId="CA1815">
-    <Resolution Name="Equals">'{0}' should override Equals.</Resolution>
-    <Resolution Name="op_Equality">'{0}' should override the equality (==) and inequality (!=) operators.</Resolution>
-   </Rule>
-   <Rule TypeName="ParameterNamesShouldMatchBaseDeclaration" Category="Microsoft.Naming" CheckId="CA1725">
-    <Resolution Name="Default">Change parameter name '{0}' of method {1} to '{2}' in order to match the identifier as it has been declared in {3}.</Resolution>
-   </Rule>
-   <Rule TypeName="PassSystemUriObjectsInsteadOfStrings" Category="Microsoft.Usage" CheckId="CA2234">
-    <Resolution Name="Default">Modify {0} to call {1} instead of {2}.</Resolution>
-   </Rule>
-   <Rule TypeName="PointersShouldNotBeVisible" Category="Microsoft.Security" CheckId="CA2111">
-    <Resolution Name="Default">Make '{0}' private.</Resolution>
-   </Rule>
-   <Rule TypeName="PropertiesShouldNotBeWriteOnly" Category="Microsoft.Design" CheckId="CA1044">
-    <Resolution Name="Default">Add a property getter to '{0}'.</Resolution>
-   </Rule>
-   <Rule TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804">
-    <Resolution Name="Default">{0} declares a local, '{1}', of type {2}, which is never used or is only assigned to. Use this local or remove it.</Resolution>
-   </Rule>
-   <Rule TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801">
-    <Resolution Name="Default">Parameter '{0}' of {1} is never used. Remove the parameter or use it in the method body.</Resolution>
-   </Rule>
-   <Rule TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706">
-    <Resolution Name="Member">Correct the capitalization of '{0}' in member name '{1}'.</Resolution>
-    <Resolution Name="MemberId">'Id' is an abbreviation and therefore is not subject to acronym casing guidelines. Correct the capitalization of 'ID' in member name '{0}' by changing it to 'Id'.</Resolution>
-    <Resolution Name="ParameterId">'Id' is an abbreviation and therefore is not subject to acronym casing guidelines. Correct the capitalization of '{0}' in parameter name '{1}' by changing it to '{2}'.</Resolution>
-    <Resolution Name="Type">Correct the capitalization of '{0}' in type name '{1}'.</Resolution>
-   </Rule>
-   <Rule TypeName="SpecifyCultureInfo" Category="Microsoft.Globalization" CheckId="CA1304">
-    <Resolution Name="Default">{0} makes a call to {1} that does not explicitly provide a CultureInfo. This should be replaced with a call to {2}.</Resolution>
-   </Rule>
-   <Rule TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305">
-    <Resolution Name="Default">{0} makes a call to {1} that does not explicitly provide an IFormatProvider. This should be replaced with a call to {2}.</Resolution>
-   </Rule>
-   <Rule TypeName="StaticHolderTypesShouldNotHaveConstructors" Category="Microsoft.Design" CheckId="CA1053">
-    <Resolution Name="Default">Remove the public constructors from '{0}'.</Resolution>
-   </Rule>
-   <Rule TypeName="TestForEmptyStringsUsingStringLength" Category="Microsoft.Performance" CheckId="CA1820">
-    <Resolution Name="IsNullOrEmpty">Replace the call to String.{0}({1}) in '{2}' with a call to String.IsNullOrEmpty.</Resolution>
-   </Rule>
-   <Rule TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724">
-    <Resolution Name="Default">The type name '{0}' conflicts in whole or in part with the namespace name '{1}'. Change either name to eliminate the conflict.</Resolution>
-   </Rule>
-   <Rule TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001">
-    <Resolution Name="Default">Implement IDisposable on '{0}' as it instantiates members of the following IDisposable types: {1}</Resolution>
-   </Rule>
-   <Rule TypeName="TypesThatOwnNativeResourcesShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1049">
-    <Resolution Name="Default">Implement IDisposable on '{0}'.</Resolution>
-   </Rule>
-   <Rule TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054">
-    <Resolution Name="Default">Change the type of parameter '{0}' of method {1} from string to System.Uri, or provide an overload of {1}, that allows '{0}' to be passed as a System.Uri object.</Resolution>
-   </Rule>
-   <Rule TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726">
-    <Resolution Name="Member">Replace the term '{0}' in member name '{1}' with the preferred alternate '{2}'.</Resolution>
-    <Resolution Name="Type">Replace the term '{0}' in type name '{1}' with the preferred alternate '{2}'.</Resolution>
-   </Rule>
-   <Rule TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024">
-    <Resolution Name="Default">Change '{0}' to a property if appropriate.</Resolution>
-   </Rule>
-   <Rule TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062">
-    <Resolution Name="Default">Validate parameter {0} passed to externally visible method {1}.</Resolution>
-   </Rule>
-  </Rules>
- </FxCopReport>
-</FxCopProject>
+<?xml version="1.0" encoding="utf-8"?>
+<FxCopProject Version="1.35" Name="OpenSim">
+ <ProjectOptions>
+  <SharedProject>True</SharedProject>
+  <Stylesheet Apply="False">http://www.gotdotnet.com/team/fxcop//xsl/1.35/FxCopReport.xsl</Stylesheet>
+  <SaveMessages>
+   <Project Status="Active, Excluded" NewOnly="False" />
+   <Report Status="Active" NewOnly="False" />
+  </SaveMessages>
+  <ProjectFile Compress="True" DefaultTargetCheck="True" DefaultRuleCheck="True" SaveByRuleGroup="" Deterministic="True" />
+  <EnableMultithreadedLoad>True</EnableMultithreadedLoad>
+  <EnableMultithreadedAnalysis>True</EnableMultithreadedAnalysis>
+  <SourceLookup>True</SourceLookup>
+  <AnalysisExceptionsThreshold>10</AnalysisExceptionsThreshold>
+  <RuleExceptionsThreshold>1</RuleExceptionsThreshold>
+  <Spelling Locale="en-us" />
+  <VersionAware>False</VersionAware>
+  <OverrideRuleVisibilities>False</OverrideRuleVisibilities>
+  <CustomDictionaries SearchFxCopDir="True" SearchUserProfile="True" SearchProjectDir="True" />
+  <SearchGlobalAssemblyCache>False</SearchGlobalAssemblyCache>
+  <DeadlockDetectionTimeout>120</DeadlockDetectionTimeout>
+ </ProjectOptions>
+ <Targets>
+  <AssemblyReferenceDirectories>
+   <Directory>$(ProjectDir)/lib/</Directory>
+  </AssemblyReferenceDirectories>
+  <Target Name="$(ProjectDir)/bin/OpenGridServices.ServerConsole.dll" Analyze="True" AnalyzeAllChildren="True" />
+  <Target Name="$(ProjectDir)/bin/OpenSim.Config.SimConfigDb4o.dll" Analyze="True" AnalyzeAllChildren="True" />
+  <Target Name="$(ProjectDir)/bin/OpenSim.exe" Analyze="True" AnalyzeAllChildren="True" />
+  <Target Name="$(ProjectDir)/bin/OpenSim.Framework.Console.dll" Analyze="True" AnalyzeAllChildren="True" />
+  <Target Name="$(ProjectDir)/bin/OpenSim.Framework.dll" Analyze="True" AnalyzeAllChildren="True" />
+  <Target Name="$(ProjectDir)/bin/OpenSim.GridInterfaces.Local.dll" Analyze="True" AnalyzeAllChildren="True" />
+  <Target Name="$(ProjectDir)/bin/OpenSim.GridInterfaces.Remote.dll" Analyze="True" AnalyzeAllChildren="True" />
+  <Target Name="$(ProjectDir)/bin/OpenSim.Physics.Manager.dll" Analyze="True" AnalyzeAllChildren="True" />
+  <Target Name="$(ProjectDir)/bin/OpenSim.RegionServer.dll" Analyze="True" AnalyzeAllChildren="True" />
+  <Target Name="$(ProjectDir)/bin/OpenSim.Storage.LocalStorageDb4o.dll" Analyze="True" AnalyzeAllChildren="True" />
+  <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.BasicPhysicsPlugin.dll" Analyze="True" AnalyzeAllChildren="True" />
+  <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.OdePlugin.dll" Analyze="True" AnalyzeAllChildren="True" />
+  <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.PhysXPlugin.dll" Analyze="True" AnalyzeAllChildren="True" />
+ </Targets>
+ <Rules>
+  <RuleFiles>
+   <RuleFile Name="$(FxCopDir)\Rules\DesignRules.dll" Enabled="True" AllRulesEnabled="True" />
+   <RuleFile Name="$(FxCopDir)\Rules\GlobalizationRules.dll" Enabled="True" AllRulesEnabled="True" />
+   <RuleFile Name="$(FxCopDir)\Rules\InteroperabilityRules.dll" Enabled="True" AllRulesEnabled="True" />
+   <RuleFile Name="$(FxCopDir)\Rules\MobilityRules.dll" Enabled="True" AllRulesEnabled="True" />
+   <RuleFile Name="$(FxCopDir)\Rules\NamingRules.dll" Enabled="True" AllRulesEnabled="True" />
+   <RuleFile Name="$(FxCopDir)\Rules\PerformanceRules.dll" Enabled="True" AllRulesEnabled="True" />
+   <RuleFile Name="$(FxCopDir)\Rules\PortabilityRules.dll" Enabled="True" AllRulesEnabled="True" />
+   <RuleFile Name="$(FxCopDir)\Rules\SecurityRules.dll" Enabled="True" AllRulesEnabled="True" />
+   <RuleFile Name="$(FxCopDir)\Rules\UsageRules.dll" Enabled="True" AllRulesEnabled="True" />
+  </RuleFiles>
+  <Groups />
+  <Settings />
+ </Rules>
+ <FxCopReport Version="1.35">
+  <Namespaces>
+   <Namespace Name="OpenSim">
+    <Messages>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Assets">
+    <Messages>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Assets</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.CAPS">
+    <Messages>
+     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
+      <Issue>
+       <Item>OpenSim.CAPS</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.CAPS</Item>
+      </Issue>
+     </Message>
+     <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>OpenSim.CAPS</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Config.SimConfigDb4o">
+    <Messages>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Config.SimConfigDb4o</Item>
+      </Issue>
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Config.SimConfigDb4o</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Framework.Assets">
+    <Messages>
+     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
+      <Issue>
+       <Item>OpenSim.Framework.Assets</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Framework.Assets</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Framework.Console">
+    <Messages>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Framework.Console</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Framework.Grid">
+    <Messages>
+     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
+      <Issue>
+       <Item>OpenSim.Framework.Grid</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Framework.Grid</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Framework.Interfaces">
+    <Messages>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Framework.Interfaces</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Framework.Inventory">
+    <Messages>
+     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
+      <Issue>
+       <Item>OpenSim.Framework.Inventory</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Framework.Inventory</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Framework.Sims">
+    <Messages>
+     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
+      <Issue>
+       <Item>OpenSim.Framework.Sims</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Framework.Sims</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Framework.Terrain">
+    <Messages>
+     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
+      <Issue>
+       <Item>OpenSim.Framework.Terrain</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Framework.Terrain</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Framework.User">
+    <Messages>
+     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
+      <Issue>
+       <Item>OpenSim.Framework.User</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Framework.User</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Framework.Utilities">
+    <Messages>
+     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
+      <Issue>
+       <Item>OpenSim.Framework.Utilities</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Framework.Utilities</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.GridInterfaces.Local">
+    <Messages>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.GridInterfaces.Local</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.GridInterfaces.Remote">
+    <Messages>
+     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
+      <Issue>
+       <Item>OpenSim.GridInterfaces.Remote</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.GridInterfaces.Remote</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Physics.BasicPhysicsPlugin">
+    <Messages>
+     <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Plugin</Item>
+       <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Physics.Manager">
+    <Messages>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Physics.Manager</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Physics.OdePlugin">
+    <Messages>
+     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
+      <Issue>
+       <Item>OpenSim.Physics.OdePlugin</Item>
+      </Issue>
+     </Message>
+     <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Plugin</Item>
+       <Item>OpenSim.Physics.OdePlugin</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Physics.OdePlugin</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Physics.PhysXPlugin">
+    <Messages>
+     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
+      <Issue>
+       <Item>OpenSim.Physics.PhysXPlugin</Item>
+      </Issue>
+     </Message>
+     <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Plugin</Item>
+       <Item>OpenSim.Physics.PhysXPlugin</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Physics.PhysXPlugin</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.Storage.LocalStorageDb4o">
+    <Messages>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.Storage.LocalStorageDb4o</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.types">
+    <Messages>
+     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
+      <Issue>
+       <Item>OpenSim.types</Item>
+      </Issue>
+     </Message>
+     <Message TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>OpenSim.types</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.types</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.UserServer">
+    <Messages>
+     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
+      <Issue>
+       <Item>OpenSim.UserServer</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.UserServer</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.world">
+    <Messages>
+     <Message TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>OpenSim.world</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.world</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+   <Namespace Name="OpenSim.world.scripting">
+    <Messages>
+     <Message TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020" Created="2007-03-27 04:29:04Z">
+      <Issue>
+       <Item>OpenSim.world.scripting</Item>
+      </Issue>
+     </Message>
+     <Message TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>OpenSim.world.scripting</Item>
+      </Issue>
+      <Issue Name="Namespace">
+       <Item>OpenSim.world.scripting</Item>
+      </Issue>
+     </Message>
+     <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+      <Issue Name="Namespace">
+       <Item>Sim</Item>
+       <Item>OpenSim.world.scripting</Item>
+      </Issue>
+     </Message>
+    </Messages>
+   </Namespace>
+  </Namespaces>
+  <Targets>
+   <Target Name="$(ProjectDir)/bin/OpenGridServices.ServerConsole.dll">
+    <Modules>
+     <Module Name="opengridservices.serverconsole.dll">
+      <Messages>
+       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenGridServices.ServerConsole</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoStrongName">
+         <Item>OpenGridServices.ServerConsole</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttr">
+         <Item>OpenGridServices.ServerConsole</Item>
+        </Issue>
+       </Message>
+      </Messages>
+      <Namespaces>
+       <Namespace Name="ServerConsole">
+        <Types>
+         <Type Name="conscmd_callback">
+          <Messages>
+           <Message TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>conscmd_callback</Item>
+            </Issue>
+           </Message>
+           <Message Id="conscmd" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>conscmd</Item>
+             <Item>ServerConsole.conscmd_callback</Item>
+            </Issue>
+           </Message>
+           <Message TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>conscmd_callback</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="RunCmd(System.String,System.String[]):System.Void">
+            <Messages>
+             <Message Id="1#cmdparams" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>conscmd_callback.RunCmd(String, String[]):Void</Item>
+               <Item>cmdparams</Item>
+               <Item>cmdparams</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Show(System.String):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ShowWhat</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="ConsoleBase">
+          <Members>
+           <Member Name="CmdPrompt(System.String,System.String):System.String">
+            <Messages>
+             <Message Id="1#defaultresponse" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ConsoleBase.CmdPrompt(String, String):String</Item>
+               <Item>defaultresponse</Item>
+               <Item>defaultresponse</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CmdPrompt(System.String,System.String,System.String,System.String):System.String">
+            <Messages>
+             <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>OptionA</Item>
+              </Issue>
+             </Message>
+             <Message Id="3#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>OptionB</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#defaultresponse" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ConsoleBase.CmdPrompt(String, String, String, String):String</Item>
+               <Item>defaultresponse</Item>
+               <Item>defaultresponse</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PasswdPrompt(System.String):System.String">
+            <Messages>
+             <Message Id="Passwd" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Passwd</Item>
+               <Item>ConsoleBase.PasswdPrompt(String):String</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RunCmd(System.String,System.String[]):System.Object">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>Cmd</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#cmdparams" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ConsoleBase.RunCmd(String, String[]):Object</Item>
+               <Item>cmdparams</Item>
+               <Item>cmdparams</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ShowCommands(System.String):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ShowWhat</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Write(System.String):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>Line</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="WriteLine(System.String):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>Line</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="ConsoleBase+ConsoleType">
+          <Members>
+           <Member Name="SimChat">
+            <Messages>
+             <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Sim</Item>
+               <Item>ConsoleType.SimChat</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="TCP">
+            <Messages>
+             <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>ConsoleType.TCP</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="MainConsole">
+          <Messages>
+           <Message TypeName="StaticHolderTypesShouldNotHaveConstructors" Category="Microsoft.Design" CheckId="CA1053" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>MainConsole</Item>
+            </Issue>
+           </Message>
+          </Messages>
+         </Type>
+        </Types>
+       </Namespace>
+      </Namespaces>
+     </Module>
+    </Modules>
+   </Target>
+   <Target Name="$(ProjectDir)/bin/OpenSim.Config.SimConfigDb4o.dll">
+    <Modules>
+     <Module Name="opensim.config.simconfigdb4o.dll">
+      <Messages>
+       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenSim.Config.SimConfigDb4o</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoStrongName">
+         <Item>OpenSim.Config.SimConfigDb4o</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttr">
+         <Item>OpenSim.Config.SimConfigDb4o</Item>
+        </Issue>
+       </Message>
+      </Messages>
+      <Namespaces>
+       <Namespace Name="OpenSim.Config.SimConfigDb4o">
+        <Types>
+         <Type Name="Db40ConfigPlugin">
+          <Messages>
+           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Plugin</Item>
+             <Item>OpenSim.Config.SimConfigDb4o.Db40ConfigPlugin</Item>
+            </Issue>
+           </Message>
+          </Messages>
+         </Type>
+         <Type Name="DbSimConfig">
+          <Messages>
+           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Sim</Item>
+             <Item>OpenSim.Config.SimConfigDb4o.DbSimConfig</Item>
+            </Issue>
+           </Message>
+           <Message TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Db</Item>
+             <Item>OpenSim.Config.SimConfigDb4o.DbSimConfig</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="InitConfig(System.Boolean):System.Void">
+            <Messages>
+             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>DbSimConfig.InitConfig(Boolean):Void</Item>
+               <Item>System.Exception</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.UInt32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>DbSimConfig.InitConfig(Boolean):Void</Item>
+               <Item>System.UInt32.ToString</Item>
+               <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.UInt64.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>DbSimConfig.InitConfig(Boolean):Void</Item>
+               <Item>System.UInt64.ToString</Item>
+               <Item>System.UInt64.ToString(System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoadDefaults():System.Void">
+            <Messages>
+             <Message Id="System.Convert.ToInt32(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>DbSimConfig.LoadDefaults():Void</Item>
+               <Item>System.Convert.ToInt32(System.String)</Item>
+               <Item>System.Convert.ToInt32(System.String,System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>DbSimConfig.LoadDefaults():Void</Item>
+               <Item>System.Convert.ToInt32(System.String)</Item>
+               <Item>System.Convert.ToInt32(System.String,System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>DbSimConfig.LoadDefaults():Void</Item>
+               <Item>System.Convert.ToInt32(System.String)</Item>
+               <Item>System.Convert.ToInt32(System.String,System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="MapStorage">
+          <Members>
+           <Member Name="Map">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Map</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+      </Namespaces>
+     </Module>
+    </Modules>
+   </Target>
+   <Target Name="$(ProjectDir)/bin/OpenSim.exe">
+    <Modules>
+     <Module Name="opensim.exe">
+      <Messages>
+       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenSim</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoStrongName">
+         <Item>OpenSim</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithAssemblyVersion" Category="Microsoft.Design" CheckId="CA1016" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenSim</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttr">
+         <Item>OpenSim</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithComVisible" Category="Microsoft.Design" CheckId="CA1017" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttribute" Level="CriticalError">
+         <Item>OpenSim</Item>
+        </Issue>
+       </Message>
+      </Messages>
+      <Namespaces>
+       <Namespace Name="OpenSim">
+        <Types>
+         <Type Name="RegionServer">
+          <Members>
+           <Member Name="Main(System.String[]):System.Void">
+            <Messages>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'args'</Item>
+               <Item>RegionServer.Main(String[]):Void</Item>
+              </Issue>
+              <Issue>
+               <Item>'args'</Item>
+               <Item>RegionServer.Main(String[]):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+      </Namespaces>
+     </Module>
+    </Modules>
+   </Target>
+   <Target Name="$(ProjectDir)/bin/OpenSim.Framework.Console.dll">
+    <Modules>
+     <Module Name="opensim.framework.console.dll">
+      <Messages>
+       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenSim.Framework.Console</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoStrongName">
+         <Item>OpenSim.Framework.Console</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttr">
+         <Item>OpenSim.Framework.Console</Item>
+        </Issue>
+       </Message>
+      </Messages>
+      <Namespaces>
+       <Namespace Name="OpenSim.Framework.Console">
+        <Types>
+         <Type Name="ConsoleBase">
+          <Members>
+           <Member Name="CmdPrompt(System.String,System.String):System.String">
+            <Messages>
+             <Message Id="1#defaultresponse" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ConsoleBase.CmdPrompt(String, String):String</Item>
+               <Item>defaultresponse</Item>
+               <Item>defaultresponse</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CmdPrompt(System.String,System.String,System.String,System.String):System.String">
+            <Messages>
+             <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>OptionA</Item>
+              </Issue>
+             </Message>
+             <Message Id="3#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>OptionB</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#defaultresponse" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ConsoleBase.CmdPrompt(String, String, String, String):String</Item>
+               <Item>defaultresponse</Item>
+               <Item>defaultresponse</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RunCmd(System.String,System.String[]):System.Object">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>Cmd</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#cmdparams" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ConsoleBase.RunCmd(String, String[]):Object</Item>
+               <Item>cmdparams</Item>
+               <Item>cmdparams</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ShowCommands(System.String):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ShowWhat</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="ConsoleBase+ConsoleType">
+          <Members>
+           <Member Name="SimChat">
+            <Messages>
+             <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Sim</Item>
+               <Item>ConsoleType.SimChat</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="TCP">
+            <Messages>
+             <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>ConsoleType.TCP</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="MainConsole">
+          <Messages>
+           <Message TypeName="StaticHolderTypesShouldNotHaveConstructors" Category="Microsoft.Design" CheckId="CA1053" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>MainConsole</Item>
+            </Issue>
+           </Message>
+          </Messages>
+         </Type>
+        </Types>
+       </Namespace>
+      </Namespaces>
+     </Module>
+    </Modules>
+   </Target>
+   <Target Name="$(ProjectDir)/bin/OpenSim.Framework.dll">
+    <Modules>
+     <Module Name="opensim.framework.dll">
+      <Messages>
+       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenSim.Framework</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoStrongName">
+         <Item>OpenSim.Framework</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttr">
+         <Item>OpenSim.Framework</Item>
+        </Issue>
+       </Message>
+      </Messages>
+      <Namespaces>
+       <Namespace Name="OpenSim.Framework.Assets">
+        <Types>
+         <Type Name="AssetBase">
+          <Members>
+           <Member Name="Data">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Data</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Description">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Description</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="FullID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>FullID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="InvType">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>InvType</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Name">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Name</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Type">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Type</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="PrimData">
+          <Members>
+           <Member Name=".ctor()">
+            <Messages>
+             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PrimData.PrimData()</Item>
+               <Item>ParentID</Item>
+               <Item>System.UInt32</Item>
+               <Item>0</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="FullID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>FullID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LocalID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LocalID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="OwnerID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>OwnerID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ParentID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ParentID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PathBegin">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PathBegin</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PathCurve">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PathCurve</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PathEnd">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PathEnd</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PathRadiusOffset">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PathRadiusOffset</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PathRevolutions">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PathRevolutions</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PathScaleX">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PathScaleX</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PathScaleY">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PathScaleY</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PathShearX">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PathShearX</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PathShearY">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PathShearY</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PathSkew">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PathSkew</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PathTaperX">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PathTaperX</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PathTaperY">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PathTaperY</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PathTwist">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PathTwist</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PathTwistBegin">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PathTwistBegin</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PCode">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PCode</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Position">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Position</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ProfileBegin">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ProfileBegin</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ProfileCurve">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ProfileCurve</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ProfileEnd">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ProfileEnd</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ProfileHollow">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ProfileHollow</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Rotation">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Rotation</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Scale">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Scale</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Texture">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Texture</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+       <Namespace Name="OpenSim.Framework.Grid">
+        <Types>
+         <Type Name="LoginService">
+          <Messages>
+           <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Login</Item>
+             <Item>LoginService</Item>
+             <Item>LogOn</Item>
+            </Issue>
+           </Message>
+          </Messages>
+         </Type>
+        </Types>
+       </Namespace>
+       <Namespace Name="OpenSim.Framework.Interfaces">
+        <Types>
+         <Type Name="AgentCircuitData">
+          <Members>
+           <Member Name="AgentID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AgentID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="circuitcode">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>circuitcode</Item>
+              </Issue>
+             </Message>
+             <Message Id="circuitcode" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>circuitcode</Item>
+               <Item>AgentCircuitData.circuitcode</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="firstname">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>firstname</Item>
+              </Issue>
+             </Message>
+             <Message Id="firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>firstname</Item>
+               <Item>AgentCircuitData.firstname</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="lastname">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>lastname</Item>
+              </Issue>
+             </Message>
+             <Message Id="lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>lastname</Item>
+               <Item>AgentCircuitData.lastname</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SecureSessionID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SecureSessionID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SessionID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SessionID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="ARequest">
+          <Messages>
+           <Message TypeName="OverrideEqualsAndOperatorEqualsOnValueTypes" Category="Microsoft.Performance" CheckId="CA1815" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Equals">
+             <Item>OpenSim.Framework.Interfaces.ARequest</Item>
+            </Issue>
+            <Issue Name="op_Equality">
+             <Item>OpenSim.Framework.Interfaces.ARequest</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="AssetID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AssetID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="IsTexture">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>IsTexture</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="AuthenticateResponse">
+          <Members>
+           <Member Name="Authorised">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Authorised</Item>
+              </Issue>
+             </Message>
+             <Message Id="Authorised" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Authorised</Item>
+               <Item>AuthenticateResponse.Authorised</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoginInfo">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LoginInfo</Item>
+              </Issue>
+             </Message>
+             <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Login</Item>
+               <Item>LoginInfo</Item>
+               <Item>LogOn</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="IAssetPlugin">
+          <Messages>
+           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Plugin</Item>
+             <Item>OpenSim.Framework.Interfaces.IAssetPlugin</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="GetAssetServer():OpenSim.Framework.Interfaces.IAssetServer">
+            <Messages>
+             <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
+              <Issue Certainty="50">
+               <Item>GetAssetServer</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="IAssetReceiver">
+          <Members>
+           <Member Name="AssetReceived(OpenSim.Framework.Assets.AssetBase,System.Boolean):System.Void">
+            <Messages>
+             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>IsTexture</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="IAssetServer">
+          <Members>
+           <Member Name="RequestAsset(libsecondlife.LLUUID,System.Boolean):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>assetID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SetServerInfo(System.String,System.String):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ServerUrl</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ServerKey</Item>
+              </Issue>
+             </Message>
+             <Message Id="0#" TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ServerUrl</Item>
+               <Item>IAssetServer.SetServerInfo(String, String):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="IGridPlugin">
+          <Messages>
+           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Plugin</Item>
+             <Item>OpenSim.Framework.Interfaces.IGridPlugin</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="GetGridServer():OpenSim.Framework.Interfaces.IGridServer">
+            <Messages>
+             <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
+              <Issue Certainty="50">
+               <Item>GetGridServer</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="IGridServer">
+          <Members>
+           <Member Name="AuthenticateSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):OpenSim.Framework.Interfaces.AuthenticateResponse">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>sessionID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>agentID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GetName():System.String">
+            <Messages>
+             <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
+              <Issue Certainty="50">
+               <Item>GetName</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>sessionID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>agentID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+             <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Logout</Item>
+               <Item>LogoutSession</Item>
+               <Item>LogOff</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RequestNeighbours():OpenSim.Framework.Interfaces.NeighbourInfo[]">
+            <Messages>
+             <Message Id="Neighbours" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Neighbours</Item>
+               <Item>IGridServer.RequestNeighbours():NeighbourInfo[]</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RequestUUIDBlock():OpenSim.Framework.Interfaces.UUIDBlock">
+            <Messages>
+             <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>IGridServer.RequestUUIDBlock():UUIDBlock</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SetServerInfo(System.String,System.String,System.String):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ServerUrl</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>SendKey</Item>
+              </Issue>
+             </Message>
+             <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>RecvKey</Item>
+              </Issue>
+             </Message>
+             <Message Id="2#Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>IGridServer.SetServerInfo(String, String, String):Void</Item>
+               <Item>Recv</Item>
+               <Item>RecvKey</Item>
+              </Issue>
+             </Message>
+             <Message Id="0#" TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ServerUrl</Item>
+               <Item>IGridServer.SetServerInfo(String, String, String):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="ILocalStorage">
+          <Members>
+           <Member Name="RemovePrim(libsecondlife.LLUUID):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>primID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ShutDown():System.Void">
+            <Messages>
+             <Message Id="ShutDown" TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ShouldBeDiscreteTerm">
+               <Item>ShutDown</Item>
+               <Item>method</Item>
+               <Item>ShutDown</Item>
+               <Item>Shutdown</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="ISimConfig">
+          <Messages>
+           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Sim</Item>
+             <Item>OpenSim.Framework.Interfaces.ISimConfig</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="GetConfigObject():OpenSim.Framework.Interfaces.SimConfig">
+            <Messages>
+             <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
+              <Issue Certainty="50">
+               <Item>GetConfigObject</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="IUserServer">
+          <Members>
+           <Member Name="RequestAgentsInventory(libsecondlife.LLUUID):OpenSim.Framework.Inventory.AgentInventory">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>agentID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SetServerInfo(System.String,System.String,System.String):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ServerUrl</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>SendKey</Item>
+              </Issue>
+             </Message>
+             <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>RecvKey</Item>
+              </Issue>
+             </Message>
+             <Message Id="2#Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>IUserServer.SetServerInfo(String, String, String):Void</Item>
+               <Item>Recv</Item>
+               <Item>RecvKey</Item>
+              </Issue>
+             </Message>
+             <Message Id="0#" TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ServerUrl</Item>
+               <Item>IUserServer.SetServerInfo(String, String, String):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="LocalGridBase">
+          <Members>
+           <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
+            <Messages>
+             <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Logout</Item>
+               <Item>LogoutSession</Item>
+               <Item>LogOff</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="Login">
+          <Messages>
+           <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Login</Item>
+             <Item>Login</Item>
+             <Item>LogOn</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="Agent">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Agent</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="BaseFolder">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>BaseFolder</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="First">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>First</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="InventoryFolder">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>InventoryFolder</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Last">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Last</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SecureSession">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SecureSession</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Session">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Session</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="NeighbourInfo">
+          <Messages>
+           <Message Id="Neighbour" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Neighbour</Item>
+             <Item>OpenSim.Framework.Interfaces.NeighbourInfo</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="regionhandle">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>regionhandle</Item>
+              </Issue>
+             </Message>
+             <Message Id="regionhandle" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>regionhandle</Item>
+               <Item>NeighbourInfo.regionhandle</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RegionLocX">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RegionLocX</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RegionLocY">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RegionLocY</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="sim_ip">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>sim_ip</Item>
+              </Issue>
+             </Message>
+             <Message Id="sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>sim</Item>
+               <Item>NeighbourInfo.sim_ip</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>sim_ip</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="sim_port">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>sim_port</Item>
+              </Issue>
+             </Message>
+             <Message Id="sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>sim</Item>
+               <Item>NeighbourInfo.sim_port</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>sim_port</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="RemoteGridBase">
+          <Members>
+           <Member Name="agentcircuits">
+            <Messages>
+             <Message TypeName="CollectionPropertiesShouldBeReadOnly" Category="Microsoft.Usage" CheckId="CA2227" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>agentcircuits</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>agentcircuits</Item>
+              </Issue>
+             </Message>
+             <Message Id="agentcircuits" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>agentcircuits</Item>
+               <Item>RemoteGridBase.agentcircuits:Dictionary`2&lt;System.UInt32,OpenSim.Framework.Interfaces.AgentCircuitData&gt;</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
+            <Messages>
+             <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Logout</Item>
+               <Item>LogoutSession</Item>
+               <Item>LogOff</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="SimConfig">
+          <Messages>
+           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Sim</Item>
+             <Item>OpenSim.Framework.Interfaces.SimConfig</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="AssetSendKey">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AssetSendKey</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AssetURL">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AssetURL</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GridRecvKey">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>GridRecvKey</Item>
+              </Issue>
+             </Message>
+             <Message Id="Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Recv</Item>
+               <Item>SimConfig.GridRecvKey</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GridSendKey">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>GridSendKey</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GridURL">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>GridURL</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="IPListenAddr">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>IPListenAddr</Item>
+              </Issue>
+             </Message>
+             <Message Id="Addr" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Addr</Item>
+               <Item>SimConfig.IPListenAddr</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="IPListenPort">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>IPListenPort</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RegionHandle">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RegionHandle</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RegionLocX">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RegionLocX</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RegionLocY">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RegionLocY</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RegionName">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RegionName</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SaveMap(System.Single[]):System.Void">
+            <Messages>
+             <Message Id="0#heightmap" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>SimConfig.SaveMap(Single[]):Void</Item>
+               <Item>heightmap</Item>
+               <Item>heightmap</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UserRecvKey">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UserRecvKey</Item>
+              </Issue>
+             </Message>
+             <Message Id="Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Recv</Item>
+               <Item>SimConfig.UserRecvKey</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UserSendKey">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UserSendKey</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UserURL">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UserURL</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="UUIDBlock">
+          <Messages>
+           <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>UUIDBlock</Item>
+            </Issue>
+           </Message>
+           <Message TypeName="OverrideEqualsAndOperatorEqualsOnValueTypes" Category="Microsoft.Performance" CheckId="CA1815" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Equals">
+             <Item>OpenSim.Framework.Interfaces.UUIDBlock</Item>
+            </Issue>
+            <Issue Name="op_Equality">
+             <Item>OpenSim.Framework.Interfaces.UUIDBlock</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="BlockEnd">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>BlockEnd</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="BlockStart">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>BlockStart</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+       <Namespace Name="OpenSim.Framework.Inventory">
+        <Types>
+         <Type Name="AgentInventory">
+          <Members>
+           <Member Name=".ctor()">
+            <Messages>
+             <Message TypeName="DoNotCallOverridableMethodsInConstructors" Category="Microsoft.Usage" CheckId="CA2214" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AgentInventory.AgentInventory()</Item>
+               <Item>&#xD;&#xA;&#xD;&#xA;AgentInventory.AgentInventory()&#xD;&#xA;AgentInventory.Initialise():Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AddToInventory(libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):libsecondlife.LLUUID">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>folderID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AgentID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AgentID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CreateNewFolder(libsecondlife.LLUUID,System.UInt16):System.Boolean">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>folderID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Initialise():System.Void">
+            <Messages>
+             <Message Id="Initialise" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Initialise</Item>
+               <Item>AgentInventory.Initialise():Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="InventoryFolders">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>InventoryFolders</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="InventoryItems">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>InventoryItems</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="InventoryRoot">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>InventoryRoot</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LastCached">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LastCached</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UpdateItem(libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):System.Boolean">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>itemID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Wearables">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Wearables</Item>
+              </Issue>
+             </Message>
+             <Message Id="Wearables" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Wearables</Item>
+               <Item>AgentInventory.Wearables</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="AvatarWearable">
+          <Members>
+           <Member Name="AssetID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AssetID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ItemID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ItemID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="InventoryFolder">
+          <Members>
+           <Member Name="DefaultType">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>DefaultType</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="FolderID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>FolderID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="FolderName">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>FolderName</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Items">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Items</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>System.Collections.Generic.List`1&lt;OpenSim.Framework.Inventory.InventoryItem&gt;</Item>
+               <Item>InventoryFolder.Items</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="OwnerID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>OwnerID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ParentID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ParentID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Version">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Version</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="InventoryItem">
+          <Members>
+           <Member Name="AssetID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AssetID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CreatorID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>CreatorID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Description">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Description</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="FolderID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>FolderID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="InvType">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>InvType</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ItemID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ItemID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Name">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Name</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="OwnerID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>OwnerID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Type">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Type</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+       <Namespace Name="OpenSim.Framework.Sims">
+        <Types>
+         <Type Name="SimProfile">
+          <Messages>
+           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Sim</Item>
+             <Item>OpenSim.Framework.Sims.SimProfile</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="LoadFromGrid(System.UInt64,System.String,System.String,System.String):OpenSim.Framework.Sims.SimProfile">
+            <Messages>
+             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
+               <Item>System.Exception</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>GridURL</Item>
+              </Issue>
+             </Message>
+             <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>SendKey</Item>
+              </Issue>
+             </Message>
+             <Message Id="3#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>RecvKey</Item>
+              </Issue>
+             </Message>
+             <Message Id="3#Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
+               <Item>Recv</Item>
+               <Item>RecvKey</Item>
+              </Issue>
+             </Message>
+             <Message Id="0#" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>region_handle</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>GridURL</Item>
+              </Issue>
+             </Message>
+             <Message Id="RecvKey" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+              <Issue>
+               <Item>RecvKey</Item>
+               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.Convert.ToUInt16(System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
+               <Item>System.Convert.ToUInt16(System.Object)</Item>
+               <Item>System.Convert.ToUInt16(System.Object,System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.Convert.ToUInt32(System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
+               <Item>System.Convert.ToUInt32(System.Object)</Item>
+               <Item>System.Convert.ToUInt32(System.Object,System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
+               <Item>System.Convert.ToUInt32(System.Object)</Item>
+               <Item>System.Convert.ToUInt32(System.Object,System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.Convert.ToUInt64(System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
+               <Item>System.Convert.ToUInt64(System.Object)</Item>
+               <Item>System.Convert.ToUInt64(System.Object,System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.UInt64.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimProfile.LoadFromGrid(UInt64, String, String, String):SimProfile</Item>
+               <Item>System.UInt64.ToString</Item>
+               <Item>System.UInt64.ToString(System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="SimProfileBase">
+          <Messages>
+           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Sim</Item>
+             <Item>OpenSim.Framework.Sims.SimProfileBase</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="caps_url">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>caps_url</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>caps_url</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="recvkey">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>recvkey</Item>
+              </Issue>
+             </Message>
+             <Message Id="recvkey" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>recvkey</Item>
+               <Item>SimProfileBase.recvkey</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="regionhandle">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>regionhandle</Item>
+              </Issue>
+             </Message>
+             <Message Id="regionhandle" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>regionhandle</Item>
+               <Item>SimProfileBase.regionhandle</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RegionLocX">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RegionLocX</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RegionLocY">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RegionLocY</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="regionname">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>regionname</Item>
+              </Issue>
+             </Message>
+             <Message Id="regionname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>regionname</Item>
+               <Item>SimProfileBase.regionname</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="sendkey">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>sendkey</Item>
+              </Issue>
+             </Message>
+             <Message Id="sendkey" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>sendkey</Item>
+               <Item>SimProfileBase.sendkey</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="sim_ip">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>sim_ip</Item>
+              </Issue>
+             </Message>
+             <Message Id="sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>sim</Item>
+               <Item>SimProfileBase.sim_ip</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>sim_ip</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="sim_port">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>sim_port</Item>
+              </Issue>
+             </Message>
+             <Message Id="sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>sim</Item>
+               <Item>SimProfileBase.sim_port</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>sim_port</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UUID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UUID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+       <Namespace Name="OpenSim.Framework.Terrain">
+        <Types>
+         <Type Name="HeightmapGenHills">
+          <Messages>
+           <Message Id="Heightmap" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Heightmap</Item>
+             <Item>OpenSim.Framework.Terrain.HeightmapGenHills</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="GenerateHeightmap(System.Int32,System.Single,System.Single,System.Boolean):System.Single[]">
+            <Messages>
+             <Message Id="0#num" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>HeightmapGenHills.GenerateHeightmap(Int32, Single, Single, Boolean):Single[]</Item>
+               <Item>num</Item>
+               <Item>numHills</Item>
+              </Issue>
+             </Message>
+             <Message Id="Heightmap" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Heightmap</Item>
+               <Item>HeightmapGenHills.GenerateHeightmap(Int32, Single, Single, Boolean):Single[]</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="NumHills">
+            <Messages>
+             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>HeightmapGenHills.NumHills</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+       <Namespace Name="OpenSim.Framework.User">
+        <Types>
+         <Type Name="UserProfile">
+          <Members>
+           <Member Name=".ctor()">
+            <Messages>
+             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UserProfile.UserProfile()</Item>
+               <Item>IsGridGod</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AddSimCircuit(System.UInt32,libsecondlife.LLUUID):System.Void">
+            <Messages>
+             <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Sim</Item>
+               <Item>UserProfile.AddSimCircuit(UInt32, LLUUID):Void</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>regionUUID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AssetURL">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AssetURL</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Circuits">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Circuits</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CurrentSecureSessionID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>CurrentSecureSessionID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CurrentSessionID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>CurrentSessionID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="firstname">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>firstname</Item>
+              </Issue>
+             </Message>
+             <Message Id="firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>firstname</Item>
+               <Item>UserProfile.firstname</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="homelookat">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>homelookat</Item>
+              </Issue>
+             </Message>
+             <Message Id="homelookat" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>homelookat</Item>
+               <Item>UserProfile.homelookat</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="homepos">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>homepos</Item>
+              </Issue>
+             </Message>
+             <Message Id="homepos" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>homepos</Item>
+               <Item>UserProfile.homepos</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="homeregionhandle">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>homeregionhandle</Item>
+              </Issue>
+             </Message>
+             <Message Id="homeregionhandle" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>homeregionhandle</Item>
+               <Item>UserProfile.homeregionhandle</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Inventory">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Inventory</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="IsGridGod">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>IsGridGod</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="IsLocal">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>IsLocal</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="lastname">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>lastname</Item>
+              </Issue>
+             </Message>
+             <Message Id="lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>lastname</Item>
+               <Item>UserProfile.lastname</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="MD5passwd">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>MD5passwd</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UUID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UUID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="UserProfileManager">
+          <Members>
+           <Member Name="CustomiseResponse(System.Collections.Hashtable&amp;,OpenSim.Framework.User.UserProfile):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="DoNotPassTypesByReference" Category="Microsoft.Design" CheckId="CA1045" Created="2007-03-27 04:29:04Z">
+              <Issue Level="CriticalWarning">
+               <Item>response</Item>
+              </Issue>
+             </Message>
+             <Message Id="Customise" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Customise</Item>
+               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+              </Issue>
+             </Message>
+             <Message Id="GridResp" TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>GridResp</Item>
+               <Item>Nwc.XmlRpc.XmlRpcResponse</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.Single.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.UInt32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.UInt32.ToString</Item>
+               <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.UInt32.ToString</Item>
+               <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="DefaultStartupMsg">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>DefaultStartupMsg</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GridRecvKey">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>GridRecvKey</Item>
+              </Issue>
+             </Message>
+             <Message Id="Recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Recv</Item>
+               <Item>UserProfileManager.GridRecvKey</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GridSendKey">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>GridSendKey</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GridURL">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>GridURL</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ParseXMLRPC(System.String):System.String">
+            <Messages>
+             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
+               <Item>System.Exception</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.Int32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
+               <Item>System.Int32.ToString</Item>
+               <Item>System.Int32.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
+               <Item>System.Int32.ToString</Item>
+               <Item>System.Int32.ToString(System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.Single.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>UserProfileManager.ParseXMLRPC(String):String</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SetKeys(System.String,System.String,System.String,System.String):System.Void">
+            <Messages>
+             <Message Id="1#recv" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>UserProfileManager.SetKeys(String, String, String, String):Void</Item>
+               <Item>recv</Item>
+               <Item>recvKey</Item>
+              </Issue>
+             </Message>
+             <Message Id="2#" TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>url</Item>
+               <Item>UserProfileManager.SetKeys(String, String, String, String):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="UserProfileManagerBase">
+          <Members>
+           <Member Name="AuthenticateUser(System.String,System.String,System.String):System.Boolean">
+            <Messages>
+             <Message Id="0#firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>UserProfileManagerBase.AuthenticateUser(String, String, String):Boolean</Item>
+               <Item>firstname</Item>
+               <Item>firstname</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>UserProfileManagerBase.AuthenticateUser(String, String, String):Boolean</Item>
+               <Item>lastname</Item>
+               <Item>lastname</Item>
+              </Issue>
+             </Message>
+             <Message Id="2#passwd" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>UserProfileManagerBase.AuthenticateUser(String, String, String):Boolean</Item>
+               <Item>passwd</Item>
+               <Item>passwd</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CreateNewProfile(System.String,System.String,System.String):OpenSim.Framework.User.UserProfile">
+            <Messages>
+             <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>MD5passwd</Item>
+              </Issue>
+             </Message>
+             <Message Id="0#firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>UserProfileManagerBase.CreateNewProfile(String, String, String):UserProfile</Item>
+               <Item>firstname</Item>
+               <Item>firstname</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>UserProfileManagerBase.CreateNewProfile(String, String, String):UserProfile</Item>
+               <Item>lastname</Item>
+               <Item>lastname</Item>
+              </Issue>
+             </Message>
+             <Message Id="2#M" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>UserProfileManagerBase.CreateNewProfile(String, String, String):UserProfile</Item>
+               <Item>M</Item>
+               <Item>MD5passwd</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GetProfileByLLUUID(libsecondlife.LLUUID):OpenSim.Framework.User.UserProfile">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ProfileLLUUID</Item>
+              </Issue>
+             </Message>
+             <Message Id="0#" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ProfileLLUUID</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>UserProfileManagerBase.GetProfileByLLUUID(LLUUID):UserProfile</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GetProfileByName(System.String,System.String):OpenSim.Framework.User.UserProfile">
+            <Messages>
+             <Message Id="0#firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>UserProfileManagerBase.GetProfileByName(String, String):UserProfile</Item>
+               <Item>firstname</Item>
+               <Item>firstname</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>UserProfileManagerBase.GetProfileByName(String, String):UserProfile</Item>
+               <Item>lastname</Item>
+               <Item>lastname</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GetUsersInventory(libsecondlife.LLUUID):OpenSim.Framework.Inventory.AgentInventory">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>agentID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SetGod(libsecondlife.LLUUID):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>GodID</Item>
+              </Issue>
+             </Message>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>GodID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UserProfiles">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UserProfiles</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+       <Namespace Name="OpenSim.Framework.Utilities">
+        <Types>
+         <Type Name="BlockingQueue`1">
+          <Messages>
+           <Message TypeName="IdentifiersShouldNotHaveIncorrectSuffix" Category="Microsoft.Naming" CheckId="CA1711" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>OpenSim.Framework.Utilities.BlockingQueue`1</Item>
+             <Item>Queue</Item>
+            </Issue>
+           </Message>
+          </Messages>
+         </Type>
+         <Type Name="Util">
+          <Messages>
+           <Message Id="Util" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Util</Item>
+             <Item>OpenSim.Framework.Utilities.Util</Item>
+            </Issue>
+           </Message>
+           <Message TypeName="StaticHolderTypesShouldNotHaveConstructors" Category="Microsoft.Design" CheckId="CA1053" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>Util</Item>
+            </Issue>
+           </Message>
+           <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>Util</Item>
+             <Item>System.Web.Util</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="GetNextXferID():System.UInt32">
+            <Messages>
+             <Message Id="Xfer" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Xfer</Item>
+               <Item>Util.GetNextXferID():UInt32</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="MemberId">
+               <Item>Util.GetNextXferID():UInt32</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>GetNextXferID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UIntsToLong(System.UInt32,System.UInt32):System.UInt64">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>X</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>Y</Item>
+              </Issue>
+             </Message>
+             <Message Id="0#X" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterOneLetter">
+               <Item>Util.UIntsToLong(UInt32, UInt32):UInt64</Item>
+               <Item>X</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#Y" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterOneLetter">
+               <Item>Util.UIntsToLong(UInt32, UInt32):UInt64</Item>
+               <Item>Y</Item>
+              </Issue>
+             </Message>
+             <Message Id="Ints" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Ints</Item>
+               <Item>Util.UIntsToLong(UInt32, UInt32):UInt64</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+      </Namespaces>
+     </Module>
+    </Modules>
+   </Target>
+   <Target Name="$(ProjectDir)/bin/OpenSim.GridInterfaces.Local.dll">
+    <Modules>
+     <Module Name="opensim.gridinterfaces.local.dll">
+      <Messages>
+       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenSim.GridInterfaces.Local</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoStrongName">
+         <Item>OpenSim.GridInterfaces.Local</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttr">
+         <Item>OpenSim.GridInterfaces.Local</Item>
+        </Issue>
+       </Message>
+      </Messages>
+      <Namespaces>
+       <Namespace Name="OpenSim.GridInterfaces.Local">
+        <Types>
+         <Type Name="AssetStorage">
+          <Members>
+           <Member Name="Data">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Data</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Name">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Name</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Type">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Type</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UUID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UUID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="AssetUUIDQuery">
+          <Messages>
+           <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>AssetUUIDQuery</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="Match(OpenSim.GridInterfaces.Local.AssetStorage):System.Boolean">
+            <Messages>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'asset'</Item>
+               <Item>AssetUUIDQuery.Match(AssetStorage):Boolean</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="LocalAssetPlugin">
+          <Messages>
+           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Plugin</Item>
+             <Item>OpenSim.GridInterfaces.Local.LocalAssetPlugin</Item>
+            </Issue>
+           </Message>
+          </Messages>
+         </Type>
+         <Type Name="LocalAssetServer">
+          <Members>
+           <Member Name=".ctor()">
+            <Messages>
+             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LocalAssetServer.LocalAssetServer()</Item>
+               <Item>System.Exception</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoadAsset(OpenSim.Framework.Assets.AssetBase,System.Boolean,System.String):System.Void">
+            <Messages>
+             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
+              <Issue>
+               <Item>LocalAssetServer.LoadAsset(AssetBase, Boolean, String):Void</Item>
+              </Issue>
+             </Message>
+             <Message Id="image" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
+              <Issue>
+               <Item>image</Item>
+               <Item>LocalAssetServer.LoadAsset(AssetBase, Boolean, String):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UploadNewAsset(OpenSim.Framework.Assets.AssetBase):System.Void">
+            <Messages>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'asset'</Item>
+               <Item>LocalAssetServer.UploadNewAsset(AssetBase):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="LocalGridPlugin">
+          <Messages>
+           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Plugin</Item>
+             <Item>OpenSim.GridInterfaces.Local.LocalGridPlugin</Item>
+            </Issue>
+           </Message>
+          </Messages>
+         </Type>
+         <Type Name="LocalGridServer">
+          <Members>
+           <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
+            <Messages>
+             <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Logout</Item>
+               <Item>LogoutSession</Item>
+               <Item>LogOff</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Sessions">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Sessions</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>System.Collections.Generic.List`1&lt;OpenSim.Framework.Interfaces.Login&gt;</Item>
+               <Item>LocalGridServer.Sessions</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+      </Namespaces>
+     </Module>
+    </Modules>
+   </Target>
+   <Target Name="$(ProjectDir)/bin/OpenSim.GridInterfaces.Remote.dll">
+    <Modules>
+     <Module Name="opensim.gridinterfaces.remote.dll">
+      <Messages>
+       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenSim.GridInterfaces.Remote</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoStrongName">
+         <Item>OpenSim.GridInterfaces.Remote</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttr">
+         <Item>OpenSim.GridInterfaces.Remote</Item>
+        </Issue>
+       </Message>
+      </Messages>
+      <Namespaces>
+       <Namespace Name="OpenSim.GridInterfaces.Remote">
+        <Types>
+         <Type Name="RemoteAssetPlugin">
+          <Messages>
+           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Plugin</Item>
+             <Item>OpenSim.GridInterfaces.Remote.RemoteAssetPlugin</Item>
+            </Issue>
+           </Message>
+          </Messages>
+         </Type>
+         <Type Name="RemoteGridPlugin">
+          <Messages>
+           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Plugin</Item>
+             <Item>OpenSim.GridInterfaces.Remote.RemoteGridPlugin</Item>
+            </Issue>
+           </Message>
+          </Messages>
+         </Type>
+         <Type Name="RemoteGridServer">
+          <Members>
+           <Member Name="agentcircuits">
+            <Messages>
+             <Message TypeName="CollectionPropertiesShouldBeReadOnly" Category="Microsoft.Usage" CheckId="CA2227" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>agentcircuits</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AuthenticateSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):OpenSim.Framework.Interfaces.AuthenticateResponse">
+            <Messages>
+             <Message Id="2#" TypeName="ParameterNamesShouldMatchBaseDeclaration" Category="Microsoft.Naming" CheckId="CA1725" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>circuitcode</Item>
+               <Item>RemoteGridServer.AuthenticateSession(LLUUID, LLUUID, UInt32):AuthenticateResponse</Item>
+               <Item>circuitCode</Item>
+               <Item>IGridServer.AuthenticateSession(LLUUID, LLUUID, UInt32):AuthenticateResponse</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GridRecvKey">
+            <Messages>
+             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RemoteGridServer.GridRecvKey</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GridSendKey">
+            <Messages>
+             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RemoteGridServer.GridSendKey</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LogoutSession(libsecondlife.LLUUID,libsecondlife.LLUUID,System.UInt32):System.Boolean">
+            <Messages>
+             <Message TypeName="PassSystemUriObjectsInsteadOfStrings" Category="Microsoft.Usage" CheckId="CA2234" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RemoteGridServer.LogoutSession(LLUUID, LLUUID, UInt32):Boolean</Item>
+               <Item>WebRequest.Create(Uri):WebRequest</Item>
+               <Item>WebRequest.Create(String):WebRequest</Item>
+              </Issue>
+             </Message>
+             <Message Id="GridResponse" TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RemoteGridServer.LogoutSession(LLUUID, LLUUID, UInt32):Boolean</Item>
+               <Item>GridResponse</Item>
+               <Item>System.String</Item>
+              </Issue>
+             </Message>
+             <Message Id="Logout" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Logout</Item>
+               <Item>LogoutSession</Item>
+               <Item>LogOff</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'sessionID'</Item>
+               <Item>RemoteGridServer.LogoutSession(LLUUID, LLUUID, UInt32):Boolean</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+      </Namespaces>
+     </Module>
+    </Modules>
+   </Target>
+   <Target Name="$(ProjectDir)/bin/OpenSim.Physics.Manager.dll">
+    <Modules>
+     <Module Name="opensim.physics.manager.dll">
+      <Messages>
+       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenSim.Physics.Manager</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoStrongName">
+         <Item>OpenSim.Physics.Manager</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttr">
+         <Item>OpenSim.Physics.Manager</Item>
+        </Issue>
+       </Message>
+      </Messages>
+      <Namespaces>
+       <Namespace Name="OpenSim.Physics.Manager">
+        <Types>
+         <Type Name="IPhysicsPlugin">
+          <Messages>
+           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Plugin</Item>
+             <Item>OpenSim.Physics.Manager.IPhysicsPlugin</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="GetName():System.String">
+            <Messages>
+             <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
+              <Issue Certainty="50">
+               <Item>GetName</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GetScene():OpenSim.Physics.Manager.PhysicsScene">
+            <Messages>
+             <Message TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024" Created="2007-03-27 04:29:04Z">
+              <Issue Certainty="50">
+               <Item>GetScene</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="NullPhysicsScene">
+          <Members>
+           <Member Name="SetTerrain(System.Single[]):System.Void">
+            <Messages>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'heightMap'</Item>
+               <Item>NullPhysicsScene.SetTerrain(Single[]):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Simulate(System.Single):System.Void">
+            <Messages>
+             <Message Id="System.Int32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>NullPhysicsScene.Simulate(Single):Void</Item>
+               <Item>System.Int32.ToString</Item>
+               <Item>System.Int32.ToString(System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="PhysicsActor">
+          <Members>
+           <Member Name="Kinematic">
+            <Messages>
+             <Message Id="Kinematic" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Kinematic</Item>
+               <Item>PhysicsActor.Kinematic:Boolean</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="PhysicsManager">
+          <Members>
+           <Member Name="GetPhysicsScene(System.String):OpenSim.Physics.Manager.PhysicsScene">
+            <Messages>
+             <Message Id="System.String.Format(System.String,System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PhysicsManager.GetPhysicsScene(String):PhysicsScene</Item>
+               <Item>System.String.Format(System.String,System.Object)</Item>
+               <Item>System.String.Format(System.IFormatProvider,System.String,System.Object[])</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoadPlugins():System.Void">
+            <Messages>
+             <Message Id="Plugins" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Plugins</Item>
+               <Item>PhysicsManager.LoadPlugins():Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="PhysicsVector">
+          <Members>
+           <Member Name=".ctor(System.Single,System.Single,System.Single)">
+            <Messages>
+             <Message Id="0#x" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterOneLetter">
+               <Item>PhysicsVector.PhysicsVector(Single, Single, Single)</Item>
+               <Item>x</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#y" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterOneLetter">
+               <Item>PhysicsVector.PhysicsVector(Single, Single, Single)</Item>
+               <Item>y</Item>
+              </Issue>
+             </Message>
+             <Message Id="2#z" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterOneLetter">
+               <Item>PhysicsVector.PhysicsVector(Single, Single, Single)</Item>
+               <Item>z</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="X">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>X</Item>
+              </Issue>
+             </Message>
+             <Message Id="X" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="MemberOneLetter">
+               <Item>X</Item>
+               <Item>PhysicsVector.X</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Y">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Y</Item>
+              </Issue>
+             </Message>
+             <Message Id="Y" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="MemberOneLetter">
+               <Item>Y</Item>
+               <Item>PhysicsVector.Y</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Z">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Z</Item>
+              </Issue>
+             </Message>
+             <Message Id="Z" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="MemberOneLetter">
+               <Item>Z</Item>
+               <Item>PhysicsVector.Z</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Zero">
+            <Messages>
+             <Message TypeName="DoNotDeclareReadOnlyMutableReferenceTypes" Category="Microsoft.Security" CheckId="CA2104" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PhysicsVector.Zero</Item>
+               <Item>OpenSim.Physics.Manager.PhysicsVector</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+      </Namespaces>
+     </Module>
+    </Modules>
+   </Target>
+   <Target Name="$(ProjectDir)/bin/OpenSim.RegionServer.dll">
+    <Modules>
+     <Module Name="opensim.regionserver.dll">
+      <Messages>
+       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenSim.RegionServer</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoStrongName">
+         <Item>OpenSim.RegionServer</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithAssemblyVersion" Category="Microsoft.Design" CheckId="CA1016" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenSim.RegionServer</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttr">
+         <Item>OpenSim.RegionServer</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithComVisible" Category="Microsoft.Design" CheckId="CA1017" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttribute" Level="CriticalError">
+         <Item>OpenSim.RegionServer</Item>
+        </Issue>
+       </Message>
+      </Messages>
+      <Namespaces>
+       <Namespace Name="OpenSim">
+        <Types>
+         <Type Name="AgentAssetUpload">
+          <Members>
+           <Member Name="AddUpload(libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>transactionID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AddUploadToAssetCache(libsecondlife.LLUUID):OpenSim.Framework.Assets.AssetBase">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>transactionID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GetUpload(libsecondlife.LLUUID):OpenSim.Framework.Assets.AssetBase">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>transactionID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="HandleUploadPacket(libsecondlife.Packets.AssetUploadRequestPacket,libsecondlife.LLUUID):System.Void">
+            <Messages>
+             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>assetID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.Int32.ToString(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AgentAssetUpload.HandleUploadPacket(AssetUploadRequestPacket, LLUUID):Void</Item>
+               <Item>System.Int32.ToString(System.String)</Item>
+               <Item>System.Int32.ToString(System.String,System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>AgentAssetUpload.HandleUploadPacket(AssetUploadRequestPacket, LLUUID):Void</Item>
+               <Item>System.Int32.ToString(System.String)</Item>
+               <Item>System.Int32.ToString(System.String,System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'assetID'</Item>
+               <Item>AgentAssetUpload.HandleUploadPacket(AssetUploadRequestPacket, LLUUID):Void</Item>
+              </Issue>
+              <Issue>
+               <Item>'pack'</Item>
+               <Item>AgentAssetUpload.HandleUploadPacket(AssetUploadRequestPacket, LLUUID):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="HandleXferPacket(libsecondlife.Packets.SendXferPacketPacket):System.Void">
+            <Messages>
+             <Message Id="0#xfer" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>AgentAssetUpload.HandleXferPacket(SendXferPacketPacket):Void</Item>
+               <Item>xfer</Item>
+               <Item>xferPacket</Item>
+              </Issue>
+             </Message>
+             <Message Id="Xfer" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Xfer</Item>
+               <Item>AgentAssetUpload.HandleXferPacket(SendXferPacketPacket):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="AssetTransaction">
+          <Members>
+           <Member Name=".ctor()">
+            <Messages>
+             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AssetTransaction.AssetTransaction()</Item>
+               <Item>UploadComplete</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AddToInventory">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AddToInventory</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Asset">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Asset</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="InventFolder">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>InventFolder</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="TransactionID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>TransactionID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UploadComplete">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>UploadComplete</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="XferID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>XferID</Item>
+              </Issue>
+             </Message>
+             <Message Id="Xfer" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Xfer</Item>
+               <Item>AssetTransaction.XferID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="Grid">
+          <Messages>
+           <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>Grid</Item>
+             <Item>OpenSim.Framework.Grid</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="AssetDll">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AssetDll</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AssetServer">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AssetServer</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GridDll">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>GridDll</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GridServer">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>GridServer</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Initialise():System.Void">
+            <Messages>
+             <Message Id="Initialise" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Initialise</Item>
+               <Item>Grid.Initialise():Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoadAssetDll(System.String):OpenSim.Framework.Interfaces.IAssetServer">
+            <Messages>
+             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
+              <Issue>
+               <Item>Grid.LoadAssetDll(String):IAssetServer</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoadGridDll(System.String):OpenSim.Framework.Interfaces.IGridServer">
+            <Messages>
+             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
+              <Issue>
+               <Item>Grid.LoadGridDll(String):IGridServer</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="OpenSimApplication">
+          <Messages>
+           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Sim</Item>
+             <Item>OpenSim.OpenSimApplication</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="RemoveClientCircuit(System.UInt32):System.Void">
+            <Messages>
+             <Message Id="0#circuitcode" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>OpenSimApplication.RemoveClientCircuit(UInt32):Void</Item>
+               <Item>circuitcode</Item>
+               <Item>circuitcode</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SendPacketTo(System.Byte[],System.Int32,System.Net.Sockets.SocketFlags,System.UInt32):System.Void">
+            <Messages>
+             <Message Id="3#circuitcode" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>OpenSimApplication.SendPacketTo(Byte[], Int32, SocketFlags, UInt32):Void</Item>
+               <Item>circuitcode</Item>
+               <Item>circuitcode</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="StartUp():System.Void">
+            <Messages>
+             <Message Id="StartUp" TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ShouldBeDiscreteTerm">
+               <Item>StartUp</Item>
+               <Item>method</Item>
+               <Item>StartUp</Item>
+               <Item>Startup</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="OpenSimMain">
+          <Messages>
+           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Sim</Item>
+             <Item>OpenSim.OpenSimMain</Item>
+            </Issue>
+           </Message>
+           <Message TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+            <Issue>
+             <Item>OpenSim.OpenSimMain</Item>
+             <Item>System.Timers.Timer, System.Net.Sockets.Socket</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name=".ctor()">
+            <Messages>
+             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>OpenSimMain.OpenSimMain()</Item>
+               <Item>loginserver</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+              <Issue>
+               <Item>OpenSimMain.OpenSimMain()</Item>
+               <Item>sandbox</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="_physicsEngine">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>_physicsEngine</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>_physicsEngine</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoadConfigDll(System.String):OpenSim.Framework.Interfaces.SimConfig">
+            <Messages>
+             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
+              <Issue>
+               <Item>OpenSimMain.LoadConfigDll(String):SimConfig</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="loginserver">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>loginserver</Item>
+              </Issue>
+             </Message>
+             <Message Id="loginserver" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>loginserver</Item>
+               <Item>OpenSimMain.loginserver</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="sandbox">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>sandbox</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Server">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Server</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="StartUp():System.Void">
+            <Messages>
+             <Message TypeName="DoNotUseTimersThatPreventPowerStateChanges" Category="Microsoft.Mobility" CheckId="CA1601" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Timer.set_Interval(Double):Void</Item>
+               <Item>OpenSimMain.StartUp():Void</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.UInt32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>OpenSimMain.StartUp():Void</Item>
+               <Item>System.UInt32.ToString</Item>
+               <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>OpenSimMain.StartUp():Void</Item>
+               <Item>System.UInt32.ToString</Item>
+               <Item>System.UInt32.ToString(System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="OpenSimRoot">
+          <Messages>
+           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Sim</Item>
+             <Item>OpenSim.OpenSimRoot</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name=".ctor()">
+            <Messages>
+             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>OpenSimRoot.OpenSimRoot()</Item>
+               <Item>Sandbox</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Application">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Application</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AssetCache">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AssetCache</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Cfg">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Cfg</Item>
+              </Issue>
+             </Message>
+             <Message Id="Cfg" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Cfg</Item>
+               <Item>OpenSimRoot.Cfg</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ClientThreads">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ClientThreads</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GridServers">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>GridServers</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="HttpServer">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>HttpServer</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="InventoryCache">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>InventoryCache</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LocalWorld">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LocalWorld</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Sandbox">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Sandbox</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="StartUp():System.Void">
+            <Messages>
+             <Message Id="StartUp" TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ShouldBeDiscreteTerm">
+               <Item>StartUp</Item>
+               <Item>method</Item>
+               <Item>StartUp</Item>
+               <Item>Startup</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="startuptime">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>startuptime</Item>
+              </Issue>
+             </Message>
+             <Message Id="startuptime" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>startuptime</Item>
+               <Item>OpenSimRoot.startuptime</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="QueItem">
+          <Messages>
+           <Message Id="Que" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Que</Item>
+             <Item>OpenSim.QueItem</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="Incoming">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Incoming</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Packet">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Packet</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="SimClient">
+          <Messages>
+           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Sim</Item>
+             <Item>OpenSim.SimClient</Item>
+            </Issue>
+           </Message>
+           <Message TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+            <Issue>
+             <Item>OpenSim.SimClient</Item>
+             <Item>System.Timers.Timer</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name=".ctor(System.Net.EndPoint,libsecondlife.Packets.UseCircuitCodePacket)">
+            <Messages>
+             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimClient.SimClient(EndPoint, UseCircuitCodePacket)</Item>
+               <Item>Sequence</Item>
+               <Item>System.UInt32</Item>
+               <Item>0</Item>
+              </Issue>
+              <Issue>
+               <Item>SimClient.SimClient(EndPoint, UseCircuitCodePacket)</Item>
+               <Item>debug</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="DoNotUseTimersThatPreventPowerStateChanges" Category="Microsoft.Mobility" CheckId="CA1601" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Timer.Timer(Double)</Item>
+               <Item>SimClient.SimClient(EndPoint, UseCircuitCodePacket)</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#initialcirpack" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>SimClient.SimClient(EndPoint, UseCircuitCodePacket)</Item>
+               <Item>initialcirpack</Item>
+               <Item>initialcirpack</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AgentID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AgentID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CircuitCode">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>CircuitCode</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ClientAvatar">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ClientAvatar</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="InPacket(libsecondlife.Packets.Packet):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>NewPack</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="newAssetFolder">
+            <Messages>
+             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimClient.newAssetFolder</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="OutPacket(libsecondlife.Packets.Packet):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>NewPack</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ProcessInPacket(libsecondlife.Packets.Packet):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>Pack</Item>
+              </Issue>
+             </Message>
+             <Message Id="wear" TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimClient.ProcessInPacket(Packet):Void</Item>
+               <Item>wear</Item>
+               <Item>libsecondlife.Packets.AgentIsNowWearingPacket</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="TestForEmptyStringsUsingStringLength" Category="Microsoft.Performance" CheckId="CA1820" Created="2007-03-27 04:29:04Z">
+              <Issue Name="IsNullOrEmpty">
+               <Item>op_Equality</Item>
+               <Item>""</Item>
+               <Item>SimClient.ProcessInPacket(Packet):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ProcessOutPacket(libsecondlife.Packets.Packet):System.Void">
+            <Messages>
+             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimClient.ProcessOutPacket(Packet):Void</Item>
+               <Item>System.Exception</Item>
+              </Issue>
+             </Message>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>Pack</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SecureSessionID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SecureSessionID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SessionID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SessionID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="userEP">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>userEP</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="SimConsole">
+          <Messages>
+           <Message TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>OpenSim.SimConsole</Item>
+             <Item> OpenSim.Framework.Console.ConsoleBase</Item>
+            </Issue>
+           </Message>
+           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Sim</Item>
+             <Item>OpenSim.SimConsole</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name=".ctor(OpenSim.Framework.Console.ConsoleBase+ConsoleType,System.String,System.Int32)">
+            <Messages>
+             <Message Id="0#constype" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
+               <Item>constype</Item>
+               <Item>constype</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#sparam" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
+               <Item>sparam</Item>
+               <Item>sparam</Item>
+              </Issue>
+             </Message>
+             <Message Id="2#iparam" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
+               <Item>iparam</Item>
+               <Item>iparam</Item>
+              </Issue>
+             </Message>
+             <Message Id="iparam" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+              <Issue>
+               <Item>iparam</Item>
+               <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
+              </Issue>
+             </Message>
+             <Message Id="sparam" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+              <Issue>
+               <Item>sparam</Item>
+               <Item>SimConsole.SimConsole(ConsoleType, String, Int32)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CmdPrompt(System.String,System.String):System.String">
+            <Messages>
+             <Message TypeName="TestForEmptyStringsUsingStringLength" Category="Microsoft.Performance" CheckId="CA1820" Created="2007-03-27 04:29:04Z">
+              <Issue Name="IsNullOrEmpty">
+               <Item>op_Equality</Item>
+               <Item>""</Item>
+               <Item>SimConsole.CmdPrompt(String, String):String</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ConsType">
+            <Messages>
+             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimConsole.ConsType</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="MainConsolePrompt():System.Void">
+            <Messages>
+             <Message Id="System.UInt64.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimConsole.MainConsolePrompt():Void</Item>
+               <Item>System.UInt64.ToString</Item>
+               <Item>System.UInt64.ToString(System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RunCmd(System.String,System.String[]):System.Object">
+            <Messages>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'cmdparams'</Item>
+               <Item>SimConsole.RunCmd(String, String[]):Object</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ShowCommands(System.String):System.Void">
+            <Messages>
+             <Message Id="System.String.Format(System.String,System.Object[])" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimConsole.ShowCommands(String):Void</Item>
+               <Item>System.String.Format(System.String,System.Object[])</Item>
+               <Item>System.String.Format(System.IFormatProvider,System.String,System.Object[])</Item>
+              </Issue>
+              <Issue>
+               <Item>SimConsole.ShowCommands(String):Void</Item>
+               <Item>System.String.Format(System.String,System.Object[])</Item>
+               <Item>System.String.Format(System.IFormatProvider,System.String,System.Object[])</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="VersionInfo">
+          <Members>
+           <Member Name="Version">
+            <Messages>
+             <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Version</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+       <Namespace Name="OpenSim.Assets">
+        <Types>
+         <Type Name="AssetCache">
+          <Members>
+           <Member Name="AddTextureRequest(OpenSim.SimClient,libsecondlife.LLUUID):System.Void">
+            <Messages>
+             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>imageID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AssetRequests">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AssetRequests</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>System.Collections.Generic.List`1&lt;OpenSim.Assets.AssetRequest&gt;</Item>
+               <Item>AssetCache.AssetRequests</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Assets">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Assets</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CloneAsset(libsecondlife.LLUUID,OpenSim.Assets.AssetInfo):OpenSim.Assets.AssetInfo">
+            <Messages>
+             <Message TypeName="ConsiderPassingBaseTypesAsParameters" Category="Microsoft.Design" CheckId="CA1011" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>sourceAsset</Item>
+               <Item>AssetCache.CloneAsset(LLUUID, AssetInfo):AssetInfo</Item>
+               <Item>OpenSim.Assets.AssetInfo</Item>
+               <Item>OpenSim.Framework.Assets.AssetBase</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+              <Issue>
+               <Item>AssetCache.CloneAsset(LLUUID, AssetInfo):AssetInfo</Item>
+              </Issue>
+             </Message>
+             <Message Id="newOwner" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+              <Issue>
+               <Item>newOwner</Item>
+               <Item>AssetCache.CloneAsset(LLUUID, AssetInfo):AssetInfo</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'sourceAsset'</Item>
+               <Item>AssetCache.CloneAsset(LLUUID, AssetInfo):AssetInfo</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CloneImage(libsecondlife.LLUUID,OpenSim.Assets.TextureImage):OpenSim.Assets.TextureImage">
+            <Messages>
+             <Message TypeName="ConsiderPassingBaseTypesAsParameters" Category="Microsoft.Design" CheckId="CA1011" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>source</Item>
+               <Item>AssetCache.CloneImage(LLUUID, TextureImage):TextureImage</Item>
+               <Item>OpenSim.Assets.TextureImage</Item>
+               <Item>OpenSim.Framework.Assets.AssetBase</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+              <Issue>
+               <Item>AssetCache.CloneImage(LLUUID, TextureImage):TextureImage</Item>
+              </Issue>
+             </Message>
+             <Message Id="newOwner" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+              <Issue>
+               <Item>newOwner</Item>
+               <Item>AssetCache.CloneImage(LLUUID, TextureImage):TextureImage</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'source'</Item>
+               <Item>AssetCache.CloneImage(LLUUID, TextureImage):TextureImage</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CreateNewInventorySet(libsecondlife.LLUUID):OpenSim.Framework.Assets.AssetBase[]">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>agentID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GetAsset(libsecondlife.LLUUID):OpenSim.Framework.Assets.AssetBase">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>assetID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RequestedAssets">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RequestedAssets</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RequestedTextures">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RequestedTextures</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RunAssetManager():System.Void">
+            <Messages>
+             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AssetCache.RunAssetManager():Void</Item>
+               <Item>System.Exception</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="TextureRequests">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>TextureRequests</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>System.Collections.Generic.List`1&lt;OpenSim.Assets.AssetRequest&gt;</Item>
+               <Item>AssetCache.TextureRequests</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Textures">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Textures</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="AssetInfo">
+          <Messages>
+           <Message TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>OpenSim.Assets.AssetInfo</Item>
+             <Item> OpenSim.Framework.Assets.AssetBase</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name=".ctor(OpenSim.Framework.Assets.AssetBase)">
+            <Messages>
+             <Message Id="0#a" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>AssetInfo.AssetInfo(AssetBase)</Item>
+               <Item>a</Item>
+               <Item>aBase</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'aBase'</Item>
+               <Item>AssetInfo.AssetInfo(AssetBase)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="AssetRequest">
+          <Members>
+           <Member Name=".ctor()">
+            <Messages>
+             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AssetRequest.AssetRequest()</Item>
+               <Item>DataPointer</Item>
+               <Item>System.Int64</Item>
+               <Item>0</Item>
+              </Issue>
+              <Issue>
+               <Item>AssetRequest.AssetRequest()</Item>
+               <Item>NumPackets</Item>
+               <Item>System.Int32</Item>
+               <Item>0</Item>
+              </Issue>
+              <Issue>
+               <Item>AssetRequest.AssetRequest()</Item>
+               <Item>PacketCounter</Item>
+               <Item>System.Int32</Item>
+               <Item>0</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AssetInf">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AssetInf</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="DataPointer">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>DataPointer</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ImageInfo">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ImageInfo</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="IsTextureRequest">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>IsTextureRequest</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="NumPackets">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>NumPackets</Item>
+              </Issue>
+             </Message>
+             <Message Id="Num" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Num</Item>
+               <Item>AssetRequest.NumPackets</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PacketCounter">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PacketCounter</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RequestAssetID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RequestAssetID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RequestUser">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>RequestUser</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="TransferRequestID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>TransferRequestID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="InventoryCache">
+          <Members>
+           <Member Name="AddNewInventoryItem(OpenSim.SimClient,libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):libsecondlife.LLUUID">
+            <Messages>
+             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>folderID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ClientLeaving(libsecondlife.LLUUID):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>clientID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CreateNewInventoryFolder(OpenSim.SimClient,libsecondlife.LLUUID):System.Boolean">
+            <Messages>
+             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>folderID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CreateNewInventoryFolder(OpenSim.SimClient,libsecondlife.LLUUID,System.UInt16):System.Boolean">
+            <Messages>
+             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>folderID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="FetchInventory(OpenSim.SimClient,libsecondlife.Packets.FetchInventoryPacket):System.Void">
+            <Messages>
+             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>FetchItems</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="FetchInventoryDescendents(OpenSim.SimClient,libsecondlife.Packets.FetchInventoryDescendentsPacket):System.Void">
+            <Messages>
+             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>FetchDescend</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GetAgentsInventory(libsecondlife.LLUUID):OpenSim.Framework.Inventory.AgentInventory">
+            <Messages>
+             <Message Id="0#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>agentID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UpdateInventoryItem(OpenSim.SimClient,libsecondlife.LLUUID,OpenSim.Framework.Assets.AssetBase):System.Boolean">
+            <Messages>
+             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>itemID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="TextureImage">
+          <Messages>
+           <Message TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>OpenSim.Assets.TextureImage</Item>
+             <Item> OpenSim.Framework.Assets.AssetBase</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name=".ctor(OpenSim.Framework.Assets.AssetBase)">
+            <Messages>
+             <Message Id="0#a" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>TextureImage.TextureImage(AssetBase)</Item>
+               <Item>a</Item>
+               <Item>aBase</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'aBase'</Item>
+               <Item>TextureImage.TextureImage(AssetBase)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+       <Namespace Name="OpenSim.CAPS">
+        <Types>
+         <Type Name="SimCAPSHTTPServer">
+          <Messages>
+           <Message Id="Sim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Sim</Item>
+             <Item>OpenSim.CAPS.SimCAPSHTTPServer</Item>
+            </Issue>
+           </Message>
+           <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>SimCAPSHTTPServer</Item>
+            </Issue>
+           </Message>
+           <Message TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+            <Issue>
+             <Item>OpenSim.CAPS.SimCAPSHTTPServer</Item>
+             <Item>System.Net.HttpListener</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="HandleRequest(System.Object):System.Void">
+            <Messages>
+             <Message Id="0#stateinfo" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>SimCAPSHTTPServer.HandleRequest(Object):Void</Item>
+               <Item>stateinfo</Item>
+               <Item>stateinfo</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="HTTPD">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>HTTPD</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Listener">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Listener</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoadAdminPage():System.Void">
+            <Messages>
+             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimCAPSHTTPServer.LoadAdminPage():Void</Item>
+               <Item>System.Exception</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ParseLLSDXML(System.String):System.String">
+            <Messages>
+             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
+              <Issue>
+               <Item>SimCAPSHTTPServer.ParseLLSDXML(String):String</Item>
+              </Issue>
+             </Message>
+             <Message Id="requestBody" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
+              <Issue>
+               <Item>requestBody</Item>
+               <Item>SimCAPSHTTPServer.ParseLLSDXML(String):String</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ParseREST(System.String,System.String,System.String):System.String">
+            <Messages>
+             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimCAPSHTTPServer.ParseREST(String, String, String):String</Item>
+               <Item>System.Exception</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.String.Format(System.String,System.Object[])" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimCAPSHTTPServer.ParseREST(String, String, String):String</Item>
+               <Item>System.String.Format(System.String,System.Object[])</Item>
+               <Item>System.String.Format(System.IFormatProvider,System.String,System.Object[])</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ParseXMLRPC(System.String):System.String">
+            <Messages>
+             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimCAPSHTTPServer.ParseXMLRPC(String):String</Item>
+               <Item>System.Exception</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="NonBreaking">
+              <Issue>
+               <Item>SimCAPSHTTPServer.ParseXMLRPC(String):String</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.Convert.ToUInt32(System.Object)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimCAPSHTTPServer.ParseXMLRPC(String):String</Item>
+               <Item>System.Convert.ToUInt32(System.Object)</Item>
+               <Item>System.Convert.ToUInt32(System.Object,System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="StartHTTP():System.Void">
+            <Messages>
+             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>SimCAPSHTTPServer.StartHTTP():Void</Item>
+               <Item>System.Exception</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>SimCAPSHTTPServer.StartHTTP():Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+       <Namespace Name="OpenSim.types">
+        <Types>
+         <Type Name="Mesh">
+          <Members>
+           <Member Name="mesh">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>mesh</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>System.Collections.Generic.List`1&lt;OpenSim.types.Triangle&gt;</Item>
+               <Item>Mesh.mesh</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="op_Addition(OpenSim.types.Mesh,OpenSim.types.Mesh):OpenSim.types.Mesh">
+            <Messages>
+             <Message Id="0#a" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterOneLetter">
+               <Item>Mesh.op_Addition(Mesh, Mesh):Mesh</Item>
+               <Item>a</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#b" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterOneLetter">
+               <Item>Mesh.op_Addition(Mesh, Mesh):Mesh</Item>
+               <Item>b</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="OperatorOverloadsHaveNamedAlternates" Category="Microsoft.Usage" CheckId="CA2225" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Add</Item>
+               <Item>Mesh.op_Addition(Mesh, Mesh):Mesh</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="OverloadOperatorEqualsOnOverloadingAddAndSubtract" Category="Microsoft.Design" CheckId="CA1013" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Mesh</Item>
+               <Item>Mesh.op_Addition(Mesh, Mesh):Mesh</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="Triangle">
+          <Members>
+           <Member Name=".ctor(Axiom.MathLib.Vector3,Axiom.MathLib.Vector3,Axiom.MathLib.Vector3)">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>A</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>B</Item>
+              </Issue>
+             </Message>
+             <Message Id="2#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>C</Item>
+              </Issue>
+             </Message>
+             <Message Id="0#A" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterOneLetter">
+               <Item>Triangle.Triangle(Vector3, Vector3, Vector3)</Item>
+               <Item>A</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#B" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterOneLetter">
+               <Item>Triangle.Triangle(Vector3, Vector3, Vector3)</Item>
+               <Item>B</Item>
+              </Issue>
+             </Message>
+             <Message Id="2#C" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterOneLetter">
+               <Item>Triangle.Triangle(Vector3, Vector3, Vector3)</Item>
+               <Item>C</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+       <Namespace Name="OpenSim.UserServer">
+        <Types>
+         <Type Name="LocalUserProfileManager">
+          <Members>
+           <Member Name="CustomiseResponse(System.Collections.Hashtable&amp;,OpenSim.Framework.User.UserProfile):System.Void">
+            <Messages>
+             <Message Id="System.Int32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.Int32.ToString</Item>
+               <Item>System.Int32.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.Int32.ToString</Item>
+               <Item>System.Int32.ToString(System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.Single.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+              <Issue>
+               <Item>LocalUserProfileManager.CustomiseResponse(Hashtable&amp;, UserProfile):Void</Item>
+               <Item>System.Single.ToString</Item>
+               <Item>System.Single.ToString(System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="LoginServer">
+          <Messages>
+           <Message TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>OpenSim.UserServer.LoginServer</Item>
+             <Item> OpenSim.Framework.Grid.LoginService</Item>
+            </Issue>
+           </Message>
+           <Message TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+            <Issue>
+             <Item>OpenSim.UserServer.LoginServer</Item>
+             <Item>System.Net.Sockets.Socket</Item>
+            </Issue>
+           </Message>
+           <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Login</Item>
+             <Item>LoginServer</Item>
+             <Item>LogOn</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name=".ctor(OpenSim.Framework.Interfaces.IGridServer)">
+            <Messages>
+             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LoginServer.LoginServer(IGridServer)</Item>
+               <Item>_needPasswd</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+              <Issue>
+               <Item>LoginServer.LoginServer(IGridServer)</Item>
+               <Item>userAccounts</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Authenticate(System.String,System.String,System.String):System.Boolean">
+            <Messages>
+             <Message Id="2#passwd" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>LoginServer.Authenticate(String, String, String):Boolean</Item>
+               <Item>passwd</Item>
+               <Item>passwd</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="clientAddress">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>clientAddress</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CustomiseLoginResponse(System.Collections.Hashtable,System.String,System.String):System.Void">
+            <Messages>
+             <Message Id="Customise" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Customise</Item>
+               <Item>LoginServer.CustomiseLoginResponse(Hashtable, String, String):Void</Item>
+              </Issue>
+             </Message>
+             <Message Id="Login" TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Login</Item>
+               <Item>CustomiseLoginResponse</Item>
+               <Item>LogOn</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="EncodePassword(System.String):System.String">
+            <Messages>
+             <Message Id="System.String.ToLower" TypeName="SpecifyCultureInfo" Category="Microsoft.Globalization" CheckId="CA1304" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LoginServer.EncodePassword(String):String</Item>
+               <Item>System.String.ToLower</Item>
+               <Item>System.String.ToLower(System.Globalization.CultureInfo)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GetAgentId(System.String,System.String):libsecondlife.LLUUID">
+            <Messages>
+             <Message Id="System.Int32.ToString(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LoginServer.GetAgentId(String, String):LLUUID</Item>
+               <Item>System.Int32.ToString(System.String)</Item>
+               <Item>System.Int32.ToString(System.String,System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="InitializeLogin():System.Void">
+            <Messages>
+             <Message Id="OpenSim.Framework.User.UserProfileManager.SetKeys(System.String,System.String,System.String,System.String)" TypeName="DoNotPassLiteralsAsLocalizedParameters" Category="Microsoft.Globalization" CheckId="CA1303" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LoginServer.InitializeLogin():Void</Item>
+               <Item>4</Item>
+               <Item>UserProfileManager.SetKeys(String, String, String, String):Void</Item>
+               <Item>Welcome to OpenSim</Item>
+              </Issue>
+             </Message>
+             <Message Id="Sim" TypeName="LiteralsShouldBeSpelledCorrectly" Category="Microsoft.Usage" CheckId="CA2204" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Sim</Item>
+               <Item>OpenSim</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoginRequest(System.IO.StreamReader,System.IO.StreamWriter):System.Void">
+            <Messages>
+             <Message TypeName="DoNotRaiseReservedExceptionTypes" Category="Microsoft.Usage" CheckId="CA2201" Created="2007-03-27 04:29:04Z">
+              <Issue Name="TooGeneric">
+               <Item>LoginServer.LoginRequest(StreamReader, StreamWriter):Void</Item>
+               <Item>System.Exception</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.Convert.ToInt32(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LoginServer.LoginRequest(StreamReader, StreamWriter):Void</Item>
+               <Item>System.Convert.ToInt32(System.String)</Item>
+               <Item>System.Convert.ToInt32(System.String,System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="TestForEmptyStringsUsingStringLength" Category="Microsoft.Performance" CheckId="CA1820" Created="2007-03-27 04:29:04Z">
+              <Issue Name="IsNullOrEmpty">
+               <Item>op_Inequality</Item>
+               <Item>""</Item>
+               <Item>LoginServer.LoginRequest(StreamReader, StreamWriter):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ProcessXmlRequest(Nwc.XmlRpc.XmlRpcRequest,System.IO.StreamWriter):System.Boolean">
+            <Messages>
+             <Message TypeName="ConsiderPassingBaseTypesAsParameters" Category="Microsoft.Design" CheckId="CA1011" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>writer</Item>
+               <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
+               <Item>System.IO.StreamWriter</Item>
+               <Item>System.IO.TextWriter</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.Int32.ToString" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
+               <Item>System.Int32.ToString</Item>
+               <Item>System.Int32.ToString(System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.Int32.ToString(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
+               <Item>System.Int32.ToString(System.String)</Item>
+               <Item>System.Int32.ToString(System.String,System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'request'</Item>
+               <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
+              </Issue>
+              <Issue>
+               <Item>'writer'</Item>
+               <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
+              </Issue>
+              <Issue>
+               <Item>'writer'</Item>
+               <Item>LoginServer.ProcessXmlRequest(XmlRpcRequest, StreamWriter):Boolean</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="remoteAddress">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>remoteAddress</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="RunLogin():System.Void">
+            <Messages>
+             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LoginServer.RunLogin():Void</Item>
+               <Item>System.Exception</Item>
+              </Issue>
+              <Issue>
+               <Item>LoginServer.RunLogin():Void</Item>
+               <Item>System.Exception</Item>
+              </Issue>
+             </Message>
+             <Message Id="clientEndPoint" TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LoginServer.RunLogin():Void</Item>
+               <Item>clientEndPoint</Item>
+               <Item>System.Net.IPEndPoint</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+       <Namespace Name="OpenSim.world">
+        <Types>
+         <Type Name="Avatar">
+          <Members>
+           <Member Name=".cctor()">
+            <Messages>
+             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Avatar.Avatar()</Item>
+               <Item>PhysicsEngineFlying</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name=".ctor(OpenSim.SimClient)">
+            <Messages>
+             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Avatar.Avatar(SimClient)</Item>
+               <Item>_updateCount</Item>
+               <Item>System.Int16</Item>
+               <Item>0</Item>
+              </Issue>
+              <Issue>
+               <Item>Avatar.Avatar(SimClient)</Item>
+               <Item>avatarAppearanceTexture</Item>
+               <Item>libsecondlife.LLObject+TextureEntry</Item>
+               <Item>null</Item>
+              </Issue>
+              <Issue>
+               <Item>Avatar.Avatar(SimClient)</Item>
+               <Item>movementflag</Item>
+               <Item>System.Byte</Item>
+               <Item>0</Item>
+              </Issue>
+              <Issue>
+               <Item>Avatar.Avatar(SimClient)</Item>
+               <Item>updateflag</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+             </Message>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>TheClient</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="anim_seq">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>anim_seq</Item>
+              </Issue>
+             </Message>
+             <Message Id="anim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>anim</Item>
+               <Item>Avatar.anim_seq</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>anim_seq</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Animations">
+            <Messages>
+             <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Animations</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CompleteMovement(OpenSim.world.World):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>RegionInfo</Item>
+              </Issue>
+             </Message>
+             <Message Id="RegionInfo" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+              <Issue>
+               <Item>RegionInfo</Item>
+               <Item>Avatar.CompleteMovement(World):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="ControllingClient">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>ControllingClient</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="current_anim">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>current_anim</Item>
+              </Issue>
+             </Message>
+             <Message Id="anim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>anim</Item>
+               <Item>Avatar.current_anim</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>current_anim</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="firstname">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>firstname</Item>
+              </Issue>
+             </Message>
+             <Message Id="firstname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>firstname</Item>
+               <Item>Avatar.firstname</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="lastname">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>lastname</Item>
+              </Issue>
+             </Message>
+             <Message Id="lastname" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>lastname</Item>
+               <Item>Avatar.lastname</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoadAnims():System.Void">
+            <Messages>
+             <Message Id="Anims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Anims</Item>
+               <Item>Avatar.LoadAnims():Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PhysActor">
+            <Messages>
+             <Message TypeName="PropertiesShouldNotBeWriteOnly" Category="Microsoft.Design" CheckId="CA1044" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PhysActor</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PhysicsEngineFlying">
+            <Messages>
+             <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PhysicsEngineFlying</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SendAnimPack():System.Void">
+            <Messages>
+             <Message Id="Anim" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Anim</Item>
+               <Item>Avatar.SendAnimPack():Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SendAppearanceToOtherAgent(OpenSim.SimClient):System.Void">
+            <Messages>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'userInfo'</Item>
+               <Item>Avatar.SendAppearanceToOtherAgent(SimClient):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SendRegionHandshake(OpenSim.world.World):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>RegionInfo</Item>
+              </Issue>
+             </Message>
+             <Message Id="RegionInfo" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+              <Issue>
+               <Item>RegionInfo</Item>
+               <Item>Avatar.SendRegionHandshake(World):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="AvatarAnimations">
+          <Members>
+           <Member Name="AnimsLLUUID">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AnimsLLUUID</Item>
+              </Issue>
+             </Message>
+             <Message Id="Anims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Anims</Item>
+               <Item>AvatarAnimations.AnimsLLUUID</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AnimsNames">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>AnimsNames</Item>
+              </Issue>
+             </Message>
+             <Message Id="Anims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Anims</Item>
+               <Item>AvatarAnimations.AnimsNames</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoadAnims():System.Void">
+            <Messages>
+             <Message Id="Anims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Anims</Item>
+               <Item>AvatarAnimations.LoadAnims():Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="Entity">
+          <Members>
+           <Member Name=".ctor()">
+            <Messages>
+             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Entity.Entity()</Item>
+               <Item>localid</Item>
+               <Item>System.UInt32</Item>
+               <Item>0</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="addForces():System.Void">
+            <Messages>
+             <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>addForces</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="BackUp():System.Void">
+            <Messages>
+             <Message Id="BackUp" TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ShouldBeDiscreteTerm">
+               <Item>BackUp</Item>
+               <Item>method</Item>
+               <Item>BackUp</Item>
+               <Item>Backup</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="children">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>children</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>System.Collections.Generic.List`1&lt;OpenSim.world.Entity&gt;</Item>
+               <Item>Entity.children</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="getMesh():OpenSim.types.Mesh">
+            <Messages>
+             <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>getMesh</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="getName():System.String">
+            <Messages>
+             <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>getName</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="localid">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>localid</Item>
+              </Issue>
+             </Message>
+             <Message Id="localid" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>localid</Item>
+               <Item>Entity.localid</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="name">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>name</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="position">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>position</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="rotation">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>rotation</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="update():System.Void">
+            <Messages>
+             <Message Id="Member" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>update</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="uuid">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>uuid</Item>
+              </Issue>
+             </Message>
+             <Message Id="uuid" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>uuid</Item>
+               <Item>Entity.uuid</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="velocity">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>velocity</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="NewForce">
+          <Members>
+           <Member Name="X">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>X</Item>
+              </Issue>
+             </Message>
+             <Message Id="X" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="MemberOneLetter">
+               <Item>X</Item>
+               <Item>NewForce.X</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Y">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Y</Item>
+              </Issue>
+             </Message>
+             <Message Id="Y" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="MemberOneLetter">
+               <Item>Y</Item>
+               <Item>NewForce.Y</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Z">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Z</Item>
+              </Issue>
+             </Message>
+             <Message Id="Z" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="MemberOneLetter">
+               <Item>Z</Item>
+               <Item>NewForce.Z</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="Primitive">
+          <Messages>
+           <Message TypeName="IdentifiersShouldDifferByMoreThanCase" Category="Microsoft.Naming" CheckId="CA1708" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Member">
+             <Item>'UpdateFlag'</Item>
+             <Item>updateFlag</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name=".ctor()">
+            <Messages>
+             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Primitive.Primitive()</Item>
+               <Item>dirtyFlag</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+              <Issue>
+               <Item>Primitive.Primitive()</Item>
+               <Item>mesh_cutbegin</Item>
+               <Item>System.Single</Item>
+               <Item>0.0</Item>
+              </Issue>
+              <Issue>
+               <Item>Primitive.Primitive()</Item>
+               <Item>newPrimFlag</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+              <Issue>
+               <Item>Primitive.Primitive()</Item>
+               <Item>physicsEnabled</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+              <Issue>
+               <Item>Primitive.Primitive()</Item>
+               <Item>physicstest</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+              <Issue>
+               <Item>Primitive.Primitive()</Item>
+               <Item>updateFlag</Item>
+               <Item>System.Boolean</Item>
+               <Item>false</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CreateFromPacket(libsecondlife.Packets.ObjectAddPacket,libsecondlife.LLUUID,System.UInt32):System.Void">
+            <Messages>
+             <Message Id="localID-702000" TypeName="OperationsShouldNotOverflow" Category="Microsoft.Usage" CheckId="CA2233" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>localID-702000</Item>
+               <Item>Primitive.CreateFromPacket(ObjectAddPacket, LLUUID, UInt32):Void</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>agentID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+             <Message Id="2#" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="ParameterId">
+               <Item>ID</Item>
+               <Item>localID</Item>
+               <Item>Id</Item>
+              </Issue>
+             </Message>
+             <Message Id="System.UInt32.ToString(System.String)" TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Primitive.CreateFromPacket(ObjectAddPacket, LLUUID, UInt32):Void</Item>
+               <Item>System.UInt32.ToString(System.String)</Item>
+               <Item>System.UInt32.ToString(System.String,System.IFormatProvider)</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'addPacket'</Item>
+               <Item>Primitive.CreateFromPacket(ObjectAddPacket, LLUUID, UInt32):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="CreateFromStorage(OpenSim.Framework.Assets.PrimData):System.Void">
+            <Messages>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'store'</Item>
+               <Item>Primitive.CreateFromStorage(PrimData):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="dirtyFlag">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>dirtyFlag</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="mesh_cutbegin">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>mesh_cutbegin</Item>
+              </Issue>
+             </Message>
+             <Message Id="cutbegin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>cutbegin</Item>
+               <Item>Primitive.mesh_cutbegin</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>mesh_cutbegin</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="mesh_cutend">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>mesh_cutend</Item>
+              </Issue>
+             </Message>
+             <Message Id="cutend" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>cutend</Item>
+               <Item>Primitive.mesh_cutend</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>mesh_cutend</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="newPrimFlag">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>newPrimFlag</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="PhysActor">
+            <Messages>
+             <Message TypeName="PropertiesShouldNotBeWriteOnly" Category="Microsoft.Design" CheckId="CA1044" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PhysActor</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="primData">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>primData</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UpdateClient(OpenSim.SimClient):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>RemoteClient</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'RemoteClient'</Item>
+               <Item>Primitive.UpdateClient(SimClient):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="updateFlag">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>updateFlag</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UpdateObjectFlags(libsecondlife.Packets.ObjectFlagUpdatePacket):System.Void">
+            <Messages>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'pack'</Item>
+               <Item>Primitive.UpdateObjectFlags(ObjectFlagUpdatePacket):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="UpdateShape(libsecondlife.Packets.ObjectShapePacket+ObjectDataBlock):System.Void">
+            <Messages>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'addPacket'</Item>
+               <Item>Primitive.UpdateShape(ObjectDataBlock):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="ScriptEngine">
+          <Members>
+           <Member Name=".ctor(OpenSim.world.World)">
+            <Messages>
+             <Message Id="0#env" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>ScriptEngine.ScriptEngine(World)</Item>
+               <Item>env</Item>
+               <Item>env</Item>
+              </Issue>
+             </Message>
+             <Message Id="env" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+              <Issue>
+               <Item>env</Item>
+               <Item>ScriptEngine.ScriptEngine(World)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoadScript():System.Void">
+            <Messages>
+             <Message TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+              <Issue>
+               <Item>ScriptEngine.LoadScript():Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="SurfacePatch">
+          <Members>
+           <Member Name="HeightMap">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>HeightMap</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="World">
+          <Messages>
+           <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>World</Item>
+             <Item>OpenSim.world</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name=".ctor()">
+            <Messages>
+             <Message TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>World.World()</Item>
+               <Item>_localNumber</Item>
+               <Item>System.UInt32</Item>
+               <Item>0</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="_localNumber">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>_localNumber</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>_localNumber</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AddNewPrim(libsecondlife.Packets.ObjectAddPacket,OpenSim.SimClient):System.Void">
+            <Messages>
+             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>AgentClient</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="AddViewerAgent(OpenSim.SimClient):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>AgentClient</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="DeRezObject(libsecondlife.Packets.DeRezObjectPacket,OpenSim.SimClient):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>DeRezPacket</Item>
+              </Issue>
+             </Message>
+             <Message Id="1#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>AgentClient</Item>
+              </Issue>
+             </Message>
+             <Message Id="0#Rez" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>World.DeRezObject(DeRezObjectPacket, SimClient):Void</Item>
+               <Item>Rez</Item>
+               <Item>DeRezPacket</Item>
+              </Issue>
+             </Message>
+             <Message Id="Rez" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Rez</Item>
+               <Item>World.DeRezObject(DeRezObjectPacket, SimClient):Void</Item>
+              </Issue>
+             </Message>
+             <Message Id="AgentClient" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+              <Issue>
+               <Item>AgentClient</Item>
+               <Item>World.DeRezObject(DeRezObjectPacket, SimClient):Void</Item>
+              </Issue>
+             </Message>
+             <Message Id="Member" TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>De</Item>
+               <Item>World.DeRezObject(DeRezObjectPacket, SimClient):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Entities">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Entities</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="GetInitialPrims(OpenSim.SimClient):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>RemoteClient</Item>
+              </Issue>
+             </Message>
+             <Message Id="Prims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Prims</Item>
+               <Item>World.GetInitialPrims(SimClient):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LandMap">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>LandMap</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoadPrimsFromStorage():System.Void">
+            <Messages>
+             <Message Id="Prims" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>Prims</Item>
+               <Item>World.LoadPrimsFromStorage():Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoadStorageDLL(System.String):System.Boolean">
+            <Messages>
+             <Message Id="Member" TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Member">
+               <Item>World.LoadStorageDLL(String):Boolean</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="localStorage">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>localStorage</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Rand">
+            <Messages>
+             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>World.Rand</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Scripts">
+            <Messages>
+             <Message TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Scripts</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SendLayerData(OpenSim.SimClient):System.Void">
+            <Messages>
+             <Message Id="0#" TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>RemoteClient</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'RemoteClient'</Item>
+               <Item>World.SendLayerData(SimClient):Void</Item>
+              </Issue>
+              <Issue>
+               <Item>'RemoteClient'</Item>
+               <Item>World.SendLayerData(SimClient):Void</Item>
+              </Issue>
+              <Issue>
+               <Item>'RemoteClient'</Item>
+               <Item>World.SendLayerData(SimClient):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+       <Namespace Name="OpenSim.world.scripting">
+        <Types>
+         <Type Name="IScriptHost">
+          <Members>
+           <Member Name="Register(OpenSim.world.scripting.IScript):System.Boolean">
+            <Messages>
+             <Message Id="0#iscript" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>IScriptHost.Register(IScript):Boolean</Item>
+               <Item>iscript</Item>
+               <Item>iscript</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+      </Namespaces>
+     </Module>
+    </Modules>
+   </Target>
+   <Target Name="$(ProjectDir)/bin/OpenSim.Storage.LocalStorageDb4o.dll">
+    <Modules>
+     <Module Name="opensim.storage.localstoragedb4o.dll">
+      <Messages>
+       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenSim.Storage.LocalStorageDb4o</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoStrongName">
+         <Item>OpenSim.Storage.LocalStorageDb4o</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttr">
+         <Item>OpenSim.Storage.LocalStorageDb4o</Item>
+        </Issue>
+       </Message>
+      </Messages>
+      <Namespaces>
+       <Namespace Name="OpenSim.Storage.LocalStorageDb4o">
+        <Types>
+         <Type Name="Db4LocalStorage">
+          <Members>
+           <Member Name=".ctor()">
+            <Messages>
+             <Message TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>Db4LocalStorage.Db4LocalStorage()</Item>
+               <Item>System.Exception</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LoadPrimitives(OpenSim.Framework.Interfaces.ILocalStorageReceiver):System.Void">
+            <Messages>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'receiver'</Item>
+               <Item>Db4LocalStorage.LoadPrimitives(ILocalStorageReceiver):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="StorePrim(OpenSim.Framework.Assets.PrimData):System.Void">
+            <Messages>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'prim'</Item>
+               <Item>Db4LocalStorage.StorePrim(PrimData):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="UUIDQuery">
+          <Messages>
+           <Message TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>UUIDQuery</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name="Match(OpenSim.Framework.Assets.PrimData):System.Boolean">
+            <Messages>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'prim'</Item>
+               <Item>UUIDQuery.Match(PrimData):Boolean</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+      </Namespaces>
+     </Module>
+    </Modules>
+   </Target>
+   <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.BasicPhysicsPlugin.dll">
+    <Modules>
+     <Module Name="opensim.physics.basicphysicsplugin.dll">
+      <Messages>
+       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Status="Excluded" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
+        </Issue>
+        <Notes>
+         <User Name="Stefan">
+          <Note Id="2" />
+         </User>
+        </Notes>
+       </Message>
+       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Status="Excluded" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoStrongName">
+         <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
+        </Issue>
+        <Notes>
+         <User Name="Stefan">
+          <Note Id="0" />
+         </User>
+        </Notes>
+       </Message>
+       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Status="Excluded" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttr">
+         <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
+        </Issue>
+        <Notes>
+         <User Name="Stefan">
+          <Note Id="1" />
+         </User>
+        </Notes>
+       </Message>
+      </Messages>
+      <Namespaces>
+       <Namespace Name="OpenSim.Physics.BasicPhysicsPlugin">
+        <Types>
+         <Type Name="BasicActor">
+          <Members>
+           <Member Name="flying">
+            <Messages>
+             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>BasicActor.flying</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
+            <Messages>
+             <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>BasicActor.SetAcceleration(PhysicsVector):Void</Item>
+               <Item>accel</Item>
+               <Item>accel</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="BasicPhysicsPlugin">
+          <Messages>
+           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Plugin</Item>
+             <Item>OpenSim.Physics.BasicPhysicsPlugin.BasicPhysicsPlugin</Item>
+            </Issue>
+           </Message>
+           <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>BasicPhysicsPlugin</Item>
+             <Item>OpenSim.Physics.BasicPhysicsPlugin</Item>
+            </Issue>
+           </Message>
+          </Messages>
+         </Type>
+        </Types>
+       </Namespace>
+      </Namespaces>
+     </Module>
+    </Modules>
+   </Target>
+   <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.OdePlugin.dll">
+    <Modules>
+     <Module Name="opensim.physics.odeplugin.dll">
+      <Messages>
+       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenSim.Physics.OdePlugin</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoStrongName">
+         <Item>OpenSim.Physics.OdePlugin</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttr">
+         <Item>OpenSim.Physics.OdePlugin</Item>
+        </Issue>
+       </Message>
+      </Messages>
+      <Namespaces>
+       <Namespace Name="OpenSim.Physics.OdePlugin">
+        <Types>
+         <Type Name="OdeCharacter">
+          <Messages>
+           <Message TypeName="TypesThatOwnNativeResourcesShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1049" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>OdeCharacter</Item>
+            </Issue>
+           </Message>
+          </Messages>
+          <Members>
+           <Member Name=".ctor(OpenSim.Physics.OdePlugin.OdeScene,OpenSim.Physics.Manager.PhysicsVector)">
+            <Messages>
+             <Message Id="parent_scene" TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801" Created="2007-03-27 04:29:04Z" FixCategory="Breaking">
+              <Issue>
+               <Item>parent_scene</Item>
+               <Item>OdeCharacter.OdeCharacter(OdeScene, PhysicsVector)</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'pos'</Item>
+               <Item>OdeCharacter.OdeCharacter(OdeScene, PhysicsVector)</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="capsule_geom">
+            <Messages>
+             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>OdeCharacter.capsule_geom</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="gravityAccel">
+            <Messages>
+             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>OdeCharacter.gravityAccel</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
+            <Messages>
+             <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>OdeCharacter.SetAcceleration(PhysicsVector):Void</Item>
+               <Item>accel</Item>
+               <Item>accel</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="OdePlugin">
+          <Messages>
+           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Plugin</Item>
+             <Item>OpenSim.Physics.OdePlugin.OdePlugin</Item>
+            </Issue>
+           </Message>
+           <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>OdePlugin</Item>
+             <Item>OpenSim.Physics.OdePlugin</Item>
+            </Issue>
+           </Message>
+          </Messages>
+         </Type>
+         <Type Name="OdePrim">
+          <Members>
+           <Member Name="_position">
+            <Messages>
+             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>OdePrim._position</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
+            <Messages>
+             <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>OdePrim.SetAcceleration(PhysicsVector):Void</Item>
+               <Item>accel</Item>
+               <Item>accel</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="OdeScene">
+          <Members>
+           <Member Name="AddPrim(OpenSim.Physics.Manager.PhysicsVector,OpenSim.Physics.Manager.PhysicsVector):OpenSim.Physics.Manager.PhysicsActor">
+            <Messages>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'position'</Item>
+               <Item>OdeScene.AddPrim(PhysicsVector, PhysicsVector):PhysicsActor</Item>
+              </Issue>
+              <Issue>
+               <Item>'size'</Item>
+               <Item>OdeScene.AddPrim(PhysicsVector, PhysicsVector):PhysicsActor</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="Land">
+            <Messages>
+             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>OdeScene.Land</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="LandGeom">
+            <Messages>
+             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>OdeScene.LandGeom</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SetTerrain(System.Single[]):System.Void">
+            <Messages>
+             <Message TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>'heightMap'</Item>
+               <Item>OdeScene.SetTerrain(Single[]):Void</Item>
+              </Issue>
+              <Issue>
+               <Item>'heightMap'</Item>
+               <Item>OdeScene.SetTerrain(Single[]):Void</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="space">
+            <Messages>
+             <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>space</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="PointersShouldNotBeVisible" Category="Microsoft.Security" CheckId="CA2111" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>space</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="world">
+            <Messages>
+             <Message TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>world</Item>
+              </Issue>
+             </Message>
+             <Message TypeName="PointersShouldNotBeVisible" Category="Microsoft.Security" CheckId="CA2111" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>world</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+      </Namespaces>
+     </Module>
+    </Modules>
+   </Target>
+   <Target Name="$(ProjectDir)/bin/Physics/OpenSim.Physics.PhysXPlugin.dll">
+    <Modules>
+     <Module Name="opensim.physics.physxplugin.dll">
+      <Messages>
+       <Message TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209" Created="2007-03-27 04:29:04Z">
+        <Issue>
+         <Item>OpenSim.Physics.PhysXPlugin</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoStrongName">
+         <Item>OpenSim.Physics.PhysXPlugin</Item>
+        </Issue>
+       </Message>
+       <Message TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014" Created="2007-03-27 04:29:04Z">
+        <Issue Name="NoAttr">
+         <Item>OpenSim.Physics.PhysXPlugin</Item>
+        </Issue>
+       </Message>
+      </Messages>
+      <Namespaces>
+       <Namespace Name="OpenSim.Physics.PhysXPlugin">
+        <Types>
+         <Type Name="PhysXCharacter">
+          <Members>
+           <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
+            <Messages>
+             <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>PhysXCharacter.SetAcceleration(PhysicsVector):Void</Item>
+               <Item>accel</Item>
+               <Item>accel</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+         <Type Name="PhysXPlugin">
+          <Messages>
+           <Message Id="Plugin" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+            <Issue Name="Type">
+             <Item>Plugin</Item>
+             <Item>OpenSim.Physics.PhysXPlugin.PhysXPlugin</Item>
+            </Issue>
+           </Message>
+           <Message TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724" Created="2007-03-27 04:29:04Z">
+            <Issue>
+             <Item>PhysXPlugin</Item>
+             <Item>OpenSim.Physics.PhysXPlugin</Item>
+            </Issue>
+           </Message>
+          </Messages>
+         </Type>
+         <Type Name="PhysXPrim">
+          <Members>
+           <Member Name="_position">
+            <Messages>
+             <Message TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823" Created="2007-03-27 04:29:04Z">
+              <Issue>
+               <Item>PhysXPrim._position</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+           <Member Name="SetAcceleration(OpenSim.Physics.Manager.PhysicsVector):System.Void">
+            <Messages>
+             <Message Id="0#accel" TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704" Created="2007-03-27 04:29:04Z">
+              <Issue Name="Parameter">
+               <Item>PhysXPrim.SetAcceleration(PhysicsVector):Void</Item>
+               <Item>accel</Item>
+               <Item>accel</Item>
+              </Issue>
+             </Message>
+            </Messages>
+           </Member>
+          </Members>
+         </Type>
+        </Types>
+       </Namespace>
+      </Namespaces>
+     </Module>
+    </Modules>
+   </Target>
+  </Targets>
+  <Notes>
+   <User Name="Stefan">
+    <Note Id="0" Modified="2007-03-27 04:30:24Z">Save it for a rainy day.</Note>
+    <Note Id="1" Modified="2007-03-27 04:30:31Z">Save it for a rainy day.</Note>
+    <Note Id="2" Modified="2007-03-27 04:30:38Z">Save it for a rainy day.</Note>
+   </User>
+  </Notes>
+  <Rules>
+   <Rule TypeName="AssembliesShouldDeclareMinimumSecurity" Category="Microsoft.Usage" CheckId="CA2209">
+    <Resolution Name="Default">No valid permission requests were found for assembly '{0}'. You should always specify the minimum security permissions using SecurityAction.RequestMinimum.</Resolution>
+   </Rule>
+   <Rule TypeName="AssembliesShouldHaveValidStrongNames" Category="Microsoft.Design" CheckId="CA2210">
+    <Resolution Name="NoStrongName">Sign '{0}' with a strong name key.</Resolution>
+   </Rule>
+   <Rule TypeName="AvoidNamespacesWithFewTypes" Category="Microsoft.Design" CheckId="CA1020">
+    <Resolution Name="Default">Consider merging the types defined in '{0}' with another namespace.</Resolution>
+   </Rule>
+   <Rule TypeName="AvoidUnusedPrivateFields" Category="Microsoft.Performance" CheckId="CA1823">
+    <Resolution Name="Default">It appears that field '{0}' is never used or is only ever assigned to. Use this field or remove it.</Resolution>
+   </Rule>
+   <Rule TypeName="CollectionPropertiesShouldBeReadOnly" Category="Microsoft.Usage" CheckId="CA2227">
+    <Resolution Name="Default">Change '{0}' to be read-only by removing the property setter.</Resolution>
+   </Rule>
+   <Rule TypeName="CompoundWordsShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1702">
+    <Resolution Name="ShouldBeDiscreteTerm">The compound word '{0}' in {1} '{2}' exists as a discrete term. If your usage is intended to be single word, case it as '{3}'.</Resolution>
+   </Rule>
+   <Rule TypeName="ComVisibleTypeBaseTypesShouldBeComVisible" Category="Microsoft.Interoperability" CheckId="CA1405">
+    <Resolution Name="Default">'{0}' is marked ComVisible(true) but has the following ComVisible(false) types in its object hierarchy: {1}</Resolution>
+   </Rule>
+   <Rule TypeName="ConsiderPassingBaseTypesAsParameters" Category="Microsoft.Design" CheckId="CA1011">
+    <Resolution Name="Default">Consider changing the type of parameter '{0}' in {1} from {2} to its base type {3}. This method appears to only require base class members in its implementation. Suppress this violation if there is a compelling reason to require the more derived type in the method signature.</Resolution>
+   </Rule>
+   <Rule TypeName="DoNotCallOverridableMethodsInConstructors" Category="Microsoft.Usage" CheckId="CA2214">
+    <Resolution Name="Default">'{0}' contains a call chain that results in a call to a virtual method defined by the class. Review the following call stack for unintended consequences: {1}</Resolution>
+   </Rule>
+   <Rule TypeName="DoNotCatchGeneralExceptionTypes" Category="Microsoft.Design" CheckId="CA1031">
+    <Resolution Name="Default">Modify '{0}' to catch a more specific exception than '{1}' or rethrow the exception.</Resolution>
+   </Rule>
+   <Rule TypeName="DoNotDeclareReadOnlyMutableReferenceTypes" Category="Microsoft.Security" CheckId="CA2104">
+    <Resolution Name="Default">Remove the readonly declaration from '{0}' or change the field to one that is an immutable reference type. If the reference type '{1}' is, in fact, immutable, exclude this message.</Resolution>
+   </Rule>
+   <Rule TypeName="DoNotDeclareVisibleInstanceFields" Category="Microsoft.Design" CheckId="CA1051">
+    <Resolution Name="Default">Make '{0}' private or internal (Friend in VB, public private in C++) and provide a public or protected property to access it.</Resolution>
+   </Rule>
+   <Rule TypeName="DoNotExposeGenericLists" Category="Microsoft.Design" CheckId="CA1002">
+    <Resolution Name="Default">Change '{0}' in {1} to use Collection&lt;T&gt;, ReadOnlyCollection&lt;T&gt; or KeyedCollection&lt;K,V&gt;</Resolution>
+   </Rule>
+   <Rule TypeName="DoNotInitializeUnnecessarily" Category="Microsoft.Performance" CheckId="CA1805">
+    <Resolution Name="Default">{0} initializes field {1} of type {2} to {3}. Remove this initialization as it will be done automatically by the runtime.</Resolution>
+   </Rule>
+   <Rule TypeName="DoNotPassLiteralsAsLocalizedParameters" Category="Microsoft.Globalization" CheckId="CA1303">
+    <Resolution Name="Default">{0} passes a literal as parameter {1} of a call to {2}. Retrieve the following string argument from a resource table instead: '{3}'</Resolution>
+   </Rule>
+   <Rule TypeName="DoNotPassTypesByReference" Category="Microsoft.Design" CheckId="CA1045">
+    <Resolution Name="Default">Consider a design that does not require that '{0}' be a reference parameter.</Resolution>
+   </Rule>
+   <Rule TypeName="DoNotRaiseReservedExceptionTypes" Category="Microsoft.Usage" CheckId="CA2201">
+    <Resolution Name="TooGeneric">{0} creates an exception of type '{1}', an exception type that is not sufficiently specific and should never be raised by user code. If this exception instance might be thrown, use a different exception type.</Resolution>
+   </Rule>
+   <Rule TypeName="DoNotUseTimersThatPreventPowerStateChanges" Category="Microsoft.Mobility" CheckId="CA1601">
+    <Resolution Name="Default">Modify the call to {0} in method {1} to set the timer interval to a value that's greater than or equal to one second.</Resolution>
+   </Rule>
+   <Rule TypeName="IdentifiersShouldBeCasedCorrectly" Category="Microsoft.Naming" CheckId="CA1709">
+    <Resolution Name="Member">Correct the casing of member name '{0}'.</Resolution>
+    <Resolution Name="Namespace">Correct the casing of namespace name '{0}'.</Resolution>
+    <Resolution Name="Parameter">Correct the casing of parameter name '{0}'.</Resolution>
+    <Resolution Name="Type">Correct the casing of type name '{0}'.</Resolution>
+   </Rule>
+   <Rule TypeName="IdentifiersShouldBeSpelledCorrectly" Category="Microsoft.Naming" CheckId="CA1704">
+    <Resolution Name="Member">Correct the spelling of the unrecognized token '{0}' in member name '{1}'.</Resolution>
+    <Resolution Name="MemberOneLetter">Consider providing a more meaningful name than the one-letter token '{0}' in member name '{1}'.</Resolution>
+    <Resolution Name="Namespace">Correct the spelling of the unrecognized token '{0}' in namespace '{1}'.</Resolution>
+    <Resolution Name="Parameter">In method {0}, correct the spelling of the unrecognized token '{1}' in parameter name '{2}' or strip it entirely if it represents any sort of hungarian notation.</Resolution>
+    <Resolution Name="ParameterOneLetter">In method {0}, consider providing a more meaningful name than the one-letter parameter name '{1}'.</Resolution>
+    <Resolution Name="Type">Correct the spelling of the unrecognized token '{0}' in type name '{1}'.</Resolution>
+   </Rule>
+   <Rule TypeName="IdentifiersShouldDifferByMoreThanCase" Category="Microsoft.Naming" CheckId="CA1708">
+    <Resolution Name="Member">Change member names {0} and '{1}' so that they differ by more than case.</Resolution>
+   </Rule>
+   <Rule TypeName="IdentifiersShouldNotContainUnderscores" Category="Microsoft.Naming" CheckId="CA1707">
+    <Resolution Name="Member">Remove all underscores from member '{0}'.</Resolution>
+    <Resolution Name="Parameter">Remove all underscores from parameter '{0}'.</Resolution>
+    <Resolution Name="Type">Remove all underscores from type '{0}'.</Resolution>
+   </Rule>
+   <Rule TypeName="IdentifiersShouldNotHaveIncorrectSuffix" Category="Microsoft.Naming" CheckId="CA1711">
+    <Resolution Name="Default">Rename '{0}' so that it does not end in '{1}'.</Resolution>
+   </Rule>
+   <Rule TypeName="LiteralsShouldBeSpelledCorrectly" Category="Microsoft.Usage" CheckId="CA2204">
+    <Resolution Name="Default">Correct the spelling of the unrecognized token '{0}' in the literal '{1}'.</Resolution>
+   </Rule>
+   <Rule TypeName="LongAcronymsShouldBePascalCased" Category="Microsoft.Naming" CheckId="CA1705">
+    <Resolution Name="Member">Correct the capitalization of member name '{0}'.</Resolution>
+    <Resolution Name="Namespace">Correct the capitalization of namespace name '{0}'.</Resolution>
+    <Resolution Name="Parameter">Correct the capitalization of parameter name '{0}'.</Resolution>
+    <Resolution Name="Type">Correct the capitalization of type name '{0}'.</Resolution>
+   </Rule>
+   <Rule TypeName="MarkAssembliesWithAssemblyVersion" Category="Microsoft.Design" CheckId="CA1016">
+    <Resolution Name="Default">Add an AssemblyVersion attribute to '{0}'.</Resolution>
+   </Rule>
+   <Rule TypeName="MarkAssembliesWithClsCompliant" Category="Microsoft.Design" CheckId="CA1014">
+    <Resolution Name="NoAttr">'{0}' should be marked with CLSCompliantAttribute and its value should be true.</Resolution>
+   </Rule>
+   <Rule TypeName="MarkAssembliesWithComVisible" Category="Microsoft.Design" CheckId="CA1017">
+    <Resolution Name="NoAttribute">Mark '{0}' as ComVisible(false) at the assembly level, then mark all types within the assembly that should be exposed to Com clients as ComVisible(true).</Resolution>
+   </Rule>
+   <Rule TypeName="MarkMembersAsStatic" Category="Microsoft.Performance" CheckId="CA1822">
+    <Resolution Name="Default">The 'this' parameter (or 'Me' in VB) of {0} is never used. Mark the member as static (or Shared in VB) or use 'this'/'Me' in the method body or at least one property accessor, if appropriate.</Resolution>
+   </Rule>
+   <Rule TypeName="NonConstantFieldsShouldNotBeVisible" Category="Microsoft.Usage" CheckId="CA2211">
+    <Resolution Name="Default">Consider making '{0}' non-public or a constant.</Resolution>
+   </Rule>
+   <Rule TypeName="OperationsShouldNotOverflow" Category="Microsoft.Usage" CheckId="CA2233">
+    <Resolution Name="Default">Correct the potential overflow in the operation '{0}' in '{1}'.</Resolution>
+   </Rule>
+   <Rule TypeName="OperatorOverloadsHaveNamedAlternates" Category="Microsoft.Usage" CheckId="CA2225">
+    <Resolution Name="Default">Provide a method named '{0}' as a friendly alternate for operator {1}.</Resolution>
+   </Rule>
+   <Rule TypeName="OverloadOperatorEqualsOnOverloadingAddAndSubtract" Category="Microsoft.Design" CheckId="CA1013">
+    <Resolution Name="Default">Consider adding an overload of the equality operator for '{0}' that takes the same parameters as {1}.</Resolution>
+   </Rule>
+   <Rule TypeName="OverrideEqualsAndOperatorEqualsOnValueTypes" Category="Microsoft.Performance" CheckId="CA1815">
+    <Resolution Name="Equals">'{0}' should override Equals.</Resolution>
+    <Resolution Name="op_Equality">'{0}' should override the equality (==) and inequality (!=) operators.</Resolution>
+   </Rule>
+   <Rule TypeName="ParameterNamesShouldMatchBaseDeclaration" Category="Microsoft.Naming" CheckId="CA1725">
+    <Resolution Name="Default">Change parameter name '{0}' of method {1} to '{2}' in order to match the identifier as it has been declared in {3}.</Resolution>
+   </Rule>
+   <Rule TypeName="PassSystemUriObjectsInsteadOfStrings" Category="Microsoft.Usage" CheckId="CA2234">
+    <Resolution Name="Default">Modify {0} to call {1} instead of {2}.</Resolution>
+   </Rule>
+   <Rule TypeName="PointersShouldNotBeVisible" Category="Microsoft.Security" CheckId="CA2111">
+    <Resolution Name="Default">Make '{0}' private.</Resolution>
+   </Rule>
+   <Rule TypeName="PropertiesShouldNotBeWriteOnly" Category="Microsoft.Design" CheckId="CA1044">
+    <Resolution Name="Default">Add a property getter to '{0}'.</Resolution>
+   </Rule>
+   <Rule TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804">
+    <Resolution Name="Default">{0} declares a local, '{1}', of type {2}, which is never used or is only assigned to. Use this local or remove it.</Resolution>
+   </Rule>
+   <Rule TypeName="ReviewUnusedParameters" Category="Microsoft.Usage" CheckId="CA1801">
+    <Resolution Name="Default">Parameter '{0}' of {1} is never used. Remove the parameter or use it in the method body.</Resolution>
+   </Rule>
+   <Rule TypeName="ShortAcronymsShouldBeUppercase" Category="Microsoft.Naming" CheckId="CA1706">
+    <Resolution Name="Member">Correct the capitalization of '{0}' in member name '{1}'.</Resolution>
+    <Resolution Name="MemberId">'Id' is an abbreviation and therefore is not subject to acronym casing guidelines. Correct the capitalization of 'ID' in member name '{0}' by changing it to 'Id'.</Resolution>
+    <Resolution Name="ParameterId">'Id' is an abbreviation and therefore is not subject to acronym casing guidelines. Correct the capitalization of '{0}' in parameter name '{1}' by changing it to '{2}'.</Resolution>
+    <Resolution Name="Type">Correct the capitalization of '{0}' in type name '{1}'.</Resolution>
+   </Rule>
+   <Rule TypeName="SpecifyCultureInfo" Category="Microsoft.Globalization" CheckId="CA1304">
+    <Resolution Name="Default">{0} makes a call to {1} that does not explicitly provide a CultureInfo. This should be replaced with a call to {2}.</Resolution>
+   </Rule>
+   <Rule TypeName="SpecifyIFormatProvider" Category="Microsoft.Globalization" CheckId="CA1305">
+    <Resolution Name="Default">{0} makes a call to {1} that does not explicitly provide an IFormatProvider. This should be replaced with a call to {2}.</Resolution>
+   </Rule>
+   <Rule TypeName="StaticHolderTypesShouldNotHaveConstructors" Category="Microsoft.Design" CheckId="CA1053">
+    <Resolution Name="Default">Remove the public constructors from '{0}'.</Resolution>
+   </Rule>
+   <Rule TypeName="TestForEmptyStringsUsingStringLength" Category="Microsoft.Performance" CheckId="CA1820">
+    <Resolution Name="IsNullOrEmpty">Replace the call to String.{0}({1}) in '{2}' with a call to String.IsNullOrEmpty.</Resolution>
+   </Rule>
+   <Rule TypeName="TypeNamesShouldNotMatchNamespaces" Category="Microsoft.Naming" CheckId="CA1724">
+    <Resolution Name="Default">The type name '{0}' conflicts in whole or in part with the namespace name '{1}'. Change either name to eliminate the conflict.</Resolution>
+   </Rule>
+   <Rule TypeName="TypesThatOwnDisposableFieldsShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1001">
+    <Resolution Name="Default">Implement IDisposable on '{0}' as it instantiates members of the following IDisposable types: {1}</Resolution>
+   </Rule>
+   <Rule TypeName="TypesThatOwnNativeResourcesShouldBeDisposable" Category="Microsoft.Design" CheckId="CA1049">
+    <Resolution Name="Default">Implement IDisposable on '{0}'.</Resolution>
+   </Rule>
+   <Rule TypeName="UriParametersShouldNotBeStrings" Category="Microsoft.Design" CheckId="CA1054">
+    <Resolution Name="Default">Change the type of parameter '{0}' of method {1} from string to System.Uri, or provide an overload of {1}, that allows '{0}' to be passed as a System.Uri object.</Resolution>
+   </Rule>
+   <Rule TypeName="UsePreferredTerms" Category="Microsoft.Naming" CheckId="CA1726">
+    <Resolution Name="Member">Replace the term '{0}' in member name '{1}' with the preferred alternate '{2}'.</Resolution>
+    <Resolution Name="Type">Replace the term '{0}' in type name '{1}' with the preferred alternate '{2}'.</Resolution>
+   </Rule>
+   <Rule TypeName="UsePropertiesWhereAppropriate" Category="Microsoft.Design" CheckId="CA1024">
+    <Resolution Name="Default">Change '{0}' to a property if appropriate.</Resolution>
+   </Rule>
+   <Rule TypeName="ValidateArgumentsOfPublicMethods" Category="Microsoft.Design" CheckId="CA1062">
+    <Resolution Name="Default">Validate parameter {0} passed to externally visible method {1}.</Resolution>
+   </Rule>
+  </Rules>
+ </FxCopReport>
+</FxCopProject>

+ 71 - 71
OpenSim/Framework/Communications/CommunicationsManager.cs

@@ -1,71 +1,71 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Text;
-using libsecondlife;
-using libsecondlife.Packets;
-using OpenSim.Framework.Data;
-using OpenSim.Framework.Interfaces;
-using OpenSim.Framework.Types;
-using OpenSim.Framework.Servers;
-using OpenSim.Framework.Communications.Caches;
-
-namespace OpenSim.Framework.Communications
-{
- 
-    public class CommunicationsManager
-    {
-        public IUserServices UserServer;
-        public IGridServices GridServer;
-        public IInventoryServices InventoryServer;
-        public IInterRegionCommunications InterRegion;
-        public UserProfileCache UserProfilesCache;
-
-        public NetworkServersInfo ServersInfo;
-        public CommunicationsManager(NetworkServersInfo serversInfo, BaseHttpServer httpServer)
-        {
-            ServersInfo = serversInfo;
-            UserProfilesCache = new UserProfileCache(this);
-        }
-
-        #region Packet Handlers
-        public void HandleUUIDNameRequest(LLUUID uuid, IClientAPI remote_client)
-        {
-            UserProfileData profileData = this.UserServer.GetUserProfile(uuid);
-            if (profileData != null)
-            {
-                LLUUID profileId = profileData.UUID;
-                string firstname = profileData.username;
-                string lastname = profileData.surname;
-
-                remote_client.SendNameReply(profileId, firstname, lastname);
-            }            
-        }
-
-        #endregion
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Text;
+using libsecondlife;
+using libsecondlife.Packets;
+using OpenSim.Framework.Data;
+using OpenSim.Framework.Interfaces;
+using OpenSim.Framework.Types;
+using OpenSim.Framework.Servers;
+using OpenSim.Framework.Communications.Caches;
+
+namespace OpenSim.Framework.Communications
+{
+ 
+    public class CommunicationsManager
+    {
+        public IUserServices UserServer;
+        public IGridServices GridServer;
+        public IInventoryServices InventoryServer;
+        public IInterRegionCommunications InterRegion;
+        public UserProfileCache UserProfilesCache;
+
+        public NetworkServersInfo ServersInfo;
+        public CommunicationsManager(NetworkServersInfo serversInfo, BaseHttpServer httpServer)
+        {
+            ServersInfo = serversInfo;
+            UserProfilesCache = new UserProfileCache(this);
+        }
+
+        #region Packet Handlers
+        public void HandleUUIDNameRequest(LLUUID uuid, IClientAPI remote_client)
+        {
+            UserProfileData profileData = this.UserServer.GetUserProfile(uuid);
+            if (profileData != null)
+            {
+                LLUUID profileId = profileData.UUID;
+                string firstname = profileData.username;
+                string lastname = profileData.surname;
+
+                remote_client.SendNameReply(profileId, firstname, lastname);
+            }            
+        }
+
+        #endregion
+    }
+}

+ 41 - 41
OpenSim/Framework/Communications/IGridServices.cs

@@ -1,41 +1,41 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-using System.Collections.Generic;
-using OpenSim.Framework.Types;
-
-namespace OpenSim.Framework.Communications
-{
-    public interface IGridServices
-    {
-        RegionCommsListener RegisterRegion(RegionInfo regionInfos);
-        List<RegionInfo> RequestNeighbours(RegionInfo regionInfo);
-        RegionInfo RequestNeighbourInfo(ulong regionHandle);
-        List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY);
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System.Collections.Generic;
+using OpenSim.Framework.Types;
+
+namespace OpenSim.Framework.Communications
+{
+    public interface IGridServices
+    {
+        RegionCommsListener RegisterRegion(RegionInfo regionInfos);
+        List<RegionInfo> RequestNeighbours(RegionInfo regionInfo);
+        RegionInfo RequestNeighbourInfo(ulong regionHandle);
+        List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY);
+    }
+}

+ 38 - 38
OpenSim/Framework/Communications/IInterRegionCommunications.cs

@@ -1,38 +1,38 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-using OpenSim.Framework.Types;
-
-namespace OpenSim.Framework.Communications
-{
-    public  interface IInterRegionCommunications
-    {
-         bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData);
-         bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position); 
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+using OpenSim.Framework.Types;
+
+namespace OpenSim.Framework.Communications
+{
+    public  interface IInterRegionCommunications
+    {
+         bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData);
+         bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position); 
+    }
+}

+ 17 - 17
OpenSim/Framework/Communications/IInventoryServices.cs

@@ -1,17 +1,17 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OpenSim.Framework.Data;
-using libsecondlife;
-using OpenSim.Framework.Communications.Caches;
-
-namespace OpenSim.Framework.Communications
-{
-    public delegate void InventoryFolderInfo(LLUUID userID, InventoryFolder folderInfo);
-    public delegate void InventoryItemInfo(LLUUID userID, InventoryItemBase itemInfo);
-
-    public interface IInventoryServices
-    {
-        void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack);
-    }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using OpenSim.Framework.Data;
+using libsecondlife;
+using OpenSim.Framework.Communications.Caches;
+
+namespace OpenSim.Framework.Communications
+{
+    public delegate void InventoryFolderInfo(LLUUID userID, InventoryFolder folderInfo);
+    public delegate void InventoryItemInfo(LLUUID userID, InventoryItemBase itemInfo);
+
+    public interface IInventoryServices
+    {
+        void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack);
+    }
+}

+ 43 - 43
OpenSim/Framework/Communications/IUserServices.cs

@@ -1,43 +1,43 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-using OpenSim.Framework.Data;
-
-namespace OpenSim.Framework.Communications
-{
-    public interface IUserServices
-    {
-        UserProfileData GetUserProfile(string firstName, string lastName);
-        UserProfileData GetUserProfile(string name);
-        UserProfileData GetUserProfile(LLUUID avatarID);
-
-        UserProfileData SetupMasterUser(string firstName, string lastName);
-        UserProfileData SetupMasterUser(string firstName, string lastName, string password);
-
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+using OpenSim.Framework.Data;
+
+namespace OpenSim.Framework.Communications
+{
+    public interface IUserServices
+    {
+        UserProfileData GetUserProfile(string firstName, string lastName);
+        UserProfileData GetUserProfile(string name);
+        UserProfileData GetUserProfile(LLUUID avatarID);
+
+        UserProfileData SetupMasterUser(string firstName, string lastName);
+        UserProfileData SetupMasterUser(string firstName, string lastName, string password);
+
+    }
+}

+ 60 - 60
OpenSim/Framework/Communications/Properties/AssemblyInfo.cs

@@ -1,60 +1,60 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Reflection;
-using System.Runtime.InteropServices;
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("OpenGrid.Framework.Communications")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("OpenGrid.Framework.Communications")]
-[assembly: AssemblyCopyright("Copyright ©  2007")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("13e7c396-78a9-4a5c-baf2-6f980ea75d95")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Reflection;
+using System.Runtime.InteropServices;
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OpenGrid.Framework.Communications")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OpenGrid.Framework.Communications")]
+[assembly: AssemblyCopyright("Copyright ©  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("13e7c396-78a9-4a5c-baf2-6f980ea75d95")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 77 - 77
OpenSim/Framework/Communications/caches/CachedUserInfo.cs

@@ -1,77 +1,77 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OpenSim.Framework.Data;
-using libsecondlife;
-
-namespace OpenSim.Framework.Communications.Caches
-{
-    public class CachedUserInfo
-    {
-        public UserProfileData UserProfile;
-        //public Dictionary<LLUUID, InventoryFolder> Folders = new Dictionary<LLUUID, InventoryFolder>();
-        public InventoryFolder RootFolder;
-
-        public CachedUserInfo()
-        {
-
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="userID"></param>
-        /// <param name="folderInfo"></param>
-        public void FolderReceive(LLUUID userID, InventoryFolder folderInfo)
-        {
-            if (userID == UserProfile.UUID)
-            {
-                if (this.RootFolder == null)
-                {
-                    if (folderInfo.parentID == LLUUID.Zero)
-                    {
-                        this.RootFolder = folderInfo;
-                    }
-                }
-                else
-                {
-                    if (this.RootFolder.folderID == folderInfo.parentID)
-                    {
-                        this.RootFolder.SubFolders.Add(folderInfo.folderID, folderInfo);
-                    }
-                    else
-                    {
-                        InventoryFolder pFolder = this.RootFolder.HasSubFolder(folderInfo.parentID);
-                        if (pFolder != null)
-                        {
-                            pFolder.SubFolders.Add(folderInfo.folderID, folderInfo);
-                        }
-                    }
-                }
-            }
-        }
-
-        public void ItemReceive(LLUUID userID, InventoryItemBase itemInfo)
-        {
-            if (userID == UserProfile.UUID)
-            {
-                if (this.RootFolder != null)
-                {
-                    if (itemInfo.parentFolderID == this.RootFolder.folderID)
-                    {
-                        this.RootFolder.Items.Add(itemInfo.inventoryID, itemInfo);
-                    }
-                    else
-                    {
-                        InventoryFolder pFolder = this.RootFolder.HasSubFolder(itemInfo.parentFolderID);
-                        if (pFolder != null)
-                        {
-                            pFolder.Items.Add(itemInfo.inventoryID, itemInfo);
-                        }
-                    }
-                }
-
-            }
-        }
-    }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using OpenSim.Framework.Data;
+using libsecondlife;
+
+namespace OpenSim.Framework.Communications.Caches
+{
+    public class CachedUserInfo
+    {
+        public UserProfileData UserProfile;
+        //public Dictionary<LLUUID, InventoryFolder> Folders = new Dictionary<LLUUID, InventoryFolder>();
+        public InventoryFolder RootFolder;
+
+        public CachedUserInfo()
+        {
+
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="userID"></param>
+        /// <param name="folderInfo"></param>
+        public void FolderReceive(LLUUID userID, InventoryFolder folderInfo)
+        {
+            if (userID == UserProfile.UUID)
+            {
+                if (this.RootFolder == null)
+                {
+                    if (folderInfo.parentID == LLUUID.Zero)
+                    {
+                        this.RootFolder = folderInfo;
+                    }
+                }
+                else
+                {
+                    if (this.RootFolder.folderID == folderInfo.parentID)
+                    {
+                        this.RootFolder.SubFolders.Add(folderInfo.folderID, folderInfo);
+                    }
+                    else
+                    {
+                        InventoryFolder pFolder = this.RootFolder.HasSubFolder(folderInfo.parentID);
+                        if (pFolder != null)
+                        {
+                            pFolder.SubFolders.Add(folderInfo.folderID, folderInfo);
+                        }
+                    }
+                }
+            }
+        }
+
+        public void ItemReceive(LLUUID userID, InventoryItemBase itemInfo)
+        {
+            if (userID == UserProfile.UUID)
+            {
+                if (this.RootFolder != null)
+                {
+                    if (itemInfo.parentFolderID == this.RootFolder.folderID)
+                    {
+                        this.RootFolder.Items.Add(itemInfo.inventoryID, itemInfo);
+                    }
+                    else
+                    {
+                        InventoryFolder pFolder = this.RootFolder.HasSubFolder(itemInfo.parentFolderID);
+                        if (pFolder != null)
+                        {
+                            pFolder.Items.Add(itemInfo.inventoryID, itemInfo);
+                        }
+                    }
+                }
+
+            }
+        }
+    }
+}

+ 51 - 51
OpenSim/Framework/Communications/caches/InventoryFolder.cs

@@ -1,51 +1,51 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using libsecondlife;
-using OpenSim.Framework.Data;
-
-namespace OpenSim.Framework.Communications.Caches
-{
-    public class InventoryFolder : InventoryFolderBase
-    {
-        public Dictionary<LLUUID, InventoryFolder> SubFolders = new Dictionary<LLUUID, InventoryFolder>();
-        public Dictionary<LLUUID, InventoryItemBase> Items = new Dictionary<LLUUID, InventoryItemBase>();
-
-        public InventoryFolder()
-        {
-        }
-
-        public InventoryFolder HasSubFolder(LLUUID folderID)
-        {
-            InventoryFolder returnFolder = null;
-            if (this.SubFolders.ContainsKey(folderID))
-            {
-                returnFolder = this.SubFolders[folderID];
-            }
-            else
-            {
-                foreach (InventoryFolder folder in this.SubFolders.Values)
-                {
-                   returnFolder = folder.HasSubFolder(folderID);
-                   if (returnFolder != null)
-                   {
-                       break;
-                   }
-                }
-            }
-            return returnFolder;
-        }
-
-        public InventoryFolder CreateNewSubFolder(LLUUID folderID, string folderName, ushort type)
-        {
-            InventoryFolder subFold = new InventoryFolder();
-            subFold.name = folderName;
-            subFold.folderID = folderID;
-            subFold.type = type;
-            subFold.parentID = this.folderID;
-            subFold.agentID = this.agentID;
-            this.SubFolders.Add(subFold.folderID, subFold);
-            return subFold;
-        }
-    }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using libsecondlife;
+using OpenSim.Framework.Data;
+
+namespace OpenSim.Framework.Communications.Caches
+{
+    public class InventoryFolder : InventoryFolderBase
+    {
+        public Dictionary<LLUUID, InventoryFolder> SubFolders = new Dictionary<LLUUID, InventoryFolder>();
+        public Dictionary<LLUUID, InventoryItemBase> Items = new Dictionary<LLUUID, InventoryItemBase>();
+
+        public InventoryFolder()
+        {
+        }
+
+        public InventoryFolder HasSubFolder(LLUUID folderID)
+        {
+            InventoryFolder returnFolder = null;
+            if (this.SubFolders.ContainsKey(folderID))
+            {
+                returnFolder = this.SubFolders[folderID];
+            }
+            else
+            {
+                foreach (InventoryFolder folder in this.SubFolders.Values)
+                {
+                   returnFolder = folder.HasSubFolder(folderID);
+                   if (returnFolder != null)
+                   {
+                       break;
+                   }
+                }
+            }
+            return returnFolder;
+        }
+
+        public InventoryFolder CreateNewSubFolder(LLUUID folderID, string folderName, ushort type)
+        {
+            InventoryFolder subFold = new InventoryFolder();
+            subFold.name = folderName;
+            subFold.folderID = folderID;
+            subFold.type = type;
+            subFold.parentID = this.folderID;
+            subFold.agentID = this.agentID;
+            this.SubFolders.Add(subFold.folderID, subFold);
+            return subFold;
+        }
+    }
+}

+ 107 - 107
OpenSim/Framework/Communications/caches/UserProfileCache.cs

@@ -1,107 +1,107 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using libsecondlife;
-using OpenSim.Framework.Data;
-using OpenSim.Framework.Communications;
-
-namespace OpenSim.Framework.Communications.Caches
-{
-    public class UserProfileCache
-    {
-        public Dictionary<LLUUID, CachedUserInfo> UserProfiles = new Dictionary<LLUUID, CachedUserInfo>();
-
-        private CommunicationsManager m_parent;
-
-        public UserProfileCache(CommunicationsManager parent)
-        {
-            m_parent = parent;
-        }
-
-        /// <summary>
-        /// A new user has moved into a region in this instance
-        /// so get info from servers
-        /// </summary>
-        /// <param name="userID"></param>
-        public void AddNewUser(LLUUID userID)
-        {
-            if (!this.UserProfiles.ContainsKey(userID))
-            {
-                CachedUserInfo userInfo = new CachedUserInfo();
-                userInfo.UserProfile = this.RequestUserProfileForUser(userID);
-                this.m_parent.InventoryServer.RequestInventoryForUser(userID, userInfo.FolderReceive, userInfo.ItemReceive);
-                if (userInfo.UserProfile != null)
-                {
-                    this.UserProfiles.Add(userID, userInfo);
-                }
-                else
-                {
-                    //no profile for this user, what do we do now?
-                }
-            }
-            else
-            {
-                //already have a cached profile for this user
-                //we should make sure its upto date with the user server version
-            }
-        }
-
-        /// <summary>
-        /// A new user has moved into a region in this instance
-        /// so get info from servers
-        /// </summary>
-        /// <param name="firstName"></param>
-        /// <param name="lastName"></param>
-        public void AddNewUser(string firstName, string lastName)
-        {
-            
-        }
-
-        /// <summary>
-        /// A user has left this instance 
-        /// so make sure servers have been updated
-        /// Then remove cached info
-        /// </summary>
-        /// <param name="userID"></param>
-        public void UserLogOut(LLUUID userID)
-        {
-
-        }
-
-        /// <summary>
-        /// Request the user profile from User server
-        /// </summary>
-        /// <param name="userID"></param>
-        private UserProfileData RequestUserProfileForUser(LLUUID userID)
-        {
-            return this.m_parent.UserServer.GetUserProfile(userID);
-        }
-
-        /// <summary>
-        /// Request Iventory Info from Inventory server
-        /// </summary>
-        /// <param name="userID"></param>
-        private void RequestInventoryForUser(LLUUID userID)
-        {
-
-        }
-
-        /// <summary>
-        /// Make sure UserProfile is updated on user server
-        /// </summary>
-        /// <param name="userID"></param>
-        private void UpdateUserProfileToServer(LLUUID userID)
-        {
-
-        }
-
-        /// <summary>
-        /// Update Inventory data to Inventory server
-        /// </summary>
-        /// <param name="userID"></param>
-        private void UpdateInventoryToServer(LLUUID userID)
-        {
-
-        }
-    }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using libsecondlife;
+using OpenSim.Framework.Data;
+using OpenSim.Framework.Communications;
+
+namespace OpenSim.Framework.Communications.Caches
+{
+    public class UserProfileCache
+    {
+        public Dictionary<LLUUID, CachedUserInfo> UserProfiles = new Dictionary<LLUUID, CachedUserInfo>();
+
+        private CommunicationsManager m_parent;
+
+        public UserProfileCache(CommunicationsManager parent)
+        {
+            m_parent = parent;
+        }
+
+        /// <summary>
+        /// A new user has moved into a region in this instance
+        /// so get info from servers
+        /// </summary>
+        /// <param name="userID"></param>
+        public void AddNewUser(LLUUID userID)
+        {
+            if (!this.UserProfiles.ContainsKey(userID))
+            {
+                CachedUserInfo userInfo = new CachedUserInfo();
+                userInfo.UserProfile = this.RequestUserProfileForUser(userID);
+                this.m_parent.InventoryServer.RequestInventoryForUser(userID, userInfo.FolderReceive, userInfo.ItemReceive);
+                if (userInfo.UserProfile != null)
+                {
+                    this.UserProfiles.Add(userID, userInfo);
+                }
+                else
+                {
+                    //no profile for this user, what do we do now?
+                }
+            }
+            else
+            {
+                //already have a cached profile for this user
+                //we should make sure its upto date with the user server version
+            }
+        }
+
+        /// <summary>
+        /// A new user has moved into a region in this instance
+        /// so get info from servers
+        /// </summary>
+        /// <param name="firstName"></param>
+        /// <param name="lastName"></param>
+        public void AddNewUser(string firstName, string lastName)
+        {
+            
+        }
+
+        /// <summary>
+        /// A user has left this instance 
+        /// so make sure servers have been updated
+        /// Then remove cached info
+        /// </summary>
+        /// <param name="userID"></param>
+        public void UserLogOut(LLUUID userID)
+        {
+
+        }
+
+        /// <summary>
+        /// Request the user profile from User server
+        /// </summary>
+        /// <param name="userID"></param>
+        private UserProfileData RequestUserProfileForUser(LLUUID userID)
+        {
+            return this.m_parent.UserServer.GetUserProfile(userID);
+        }
+
+        /// <summary>
+        /// Request Iventory Info from Inventory server
+        /// </summary>
+        /// <param name="userID"></param>
+        private void RequestInventoryForUser(LLUUID userID)
+        {
+
+        }
+
+        /// <summary>
+        /// Make sure UserProfile is updated on user server
+        /// </summary>
+        /// <param name="userID"></param>
+        private void UpdateUserProfileToServer(LLUUID userID)
+        {
+
+        }
+
+        /// <summary>
+        /// Update Inventory data to Inventory server
+        /// </summary>
+        /// <param name="userID"></param>
+        private void UpdateInventoryToServer(LLUUID userID)
+        {
+
+        }
+    }
+}

+ 56 - 56
OpenSim/Framework/Console/AssemblyInfo.cs

@@ -1,56 +1,56 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Reflection;
-using System.Runtime.InteropServices;
-// Information about this assembly is defined by the following
-// attributes.
-//
-// change them to the information which is associated with the assembly
-// you compile.
-
-[assembly: AssemblyTitle("ServerConsole")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("ServerConsole")]
-[assembly: AssemblyCopyright("")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// This sets the default COM visibility of types in the assembly to invisible.
-// If you need to expose a type to COM, use [ComVisible(true)] on that type.
-[assembly: ComVisible(false)]
-
-// The assembly version has following format :
-//
-// Major.Minor.Build.Revision
-//
-// You can specify all values by your own or you can build default build and revision
-// numbers with the '*' character (the default):
-
-[assembly: AssemblyVersion("1.0.*")]
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Reflection;
+using System.Runtime.InteropServices;
+// Information about this assembly is defined by the following
+// attributes.
+//
+// change them to the information which is associated with the assembly
+// you compile.
+
+[assembly: AssemblyTitle("ServerConsole")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ServerConsole")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// This sets the default COM visibility of types in the assembly to invisible.
+// If you need to expose a type to COM, use [ComVisible(true)] on that type.
+[assembly: ComVisible(false)]
+
+// The assembly version has following format :
+//
+// Major.Minor.Build.Revision
+//
+// You can specify all values by your own or you can build default build and revision
+// numbers with the '*' character (the default):
+
+[assembly: AssemblyVersion("1.0.*")]

+ 35 - 35
OpenSim/Framework/Console/ConsoleCallbacksBase.cs

@@ -1,35 +1,35 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-namespace OpenSim.Framework.Console
-{    
-    public interface conscmd_callback
-    {
-        void RunCmd(string cmd, string[] cmdparams);
-        void Show(string ShowWhat);
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+namespace OpenSim.Framework.Console
+{    
+    public interface conscmd_callback
+    {
+        void RunCmd(string cmd, string[] cmdparams);
+        void Show(string ShowWhat);
+    }
+}

+ 282 - 282
OpenSim/Framework/Console/LogBase.cs

@@ -1,282 +1,282 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.IO;
-using System.Net;
-
-namespace OpenSim.Framework.Console
-{
-    public enum LogPriority : int
-    {
-        CRITICAL,
-        HIGH,
-        MEDIUM,
-        NORMAL,
-        LOW,
-        VERBOSE,
-        EXTRAVERBOSE
-    }
-
-    public class LogBase
-    {
-        StreamWriter Log;
-        public conscmd_callback cmdparser;
-        public string componentname;
-        private bool m_silent;
-
-        public LogBase(string LogFile, string componentname, conscmd_callback cmdparser, bool silent)
-        {
-            this.componentname = componentname;
-            this.cmdparser = cmdparser;
-            this.m_silent = silent;
-            System.Console.WriteLine("ServerConsole.cs - creating new local console");
-
-            if (String.IsNullOrEmpty(LogFile))
-            {
-                LogFile = componentname + ".log";
-            }
-
-            System.Console.WriteLine("Logs will be saved to current directory in " + LogFile);
-            Log = File.AppendText(LogFile);
-            Log.WriteLine("========================================================================");
-            Log.WriteLine(componentname + " Started at " + DateTime.Now.ToString());
-        }
-
-        public void Close()
-        {
-            Log.WriteLine("Shutdown at " + DateTime.Now.ToString());
-            Log.Close();
-        }
-
-        public void Write(string format, params object[] args)
-        {
-            Notice(format, args);
-            return;
-        }
-
-        public void WriteLine(LogPriority importance, string format, params object[] args)
-        {
-            Log.WriteLine(format, args);
-            Log.Flush();
-            if (!m_silent)
-            {
-                System.Console.WriteLine(format, args);
-            }
-            return;
-        }
-
-        public void Warn(string format, params object[] args)
-        {
-            WriteNewLine(ConsoleColor.Yellow, format, args);
-            return;
-        }
-
-        public void Notice(string format, params object[] args)
-        {
-            WriteNewLine(ConsoleColor.White, format, args);
-            return;
-        }
-
-        public void Error(string format, params object[] args)
-        {
-            WriteNewLine(ConsoleColor.Red, format, args);
-            return;
-        }
-
-        public void Verbose(string format, params object[] args)
-        {
-            WriteNewLine(ConsoleColor.Gray, format, args);
-            return;
-        }
-
-        public void Status(string format, params object[] args)
-        {
-            WriteNewLine(ConsoleColor.Blue, format, args);
-            return;
-        }
-
-        private void WriteNewLine(ConsoleColor color, string format, params object[] args)
-        {
-            Log.WriteLine(format, args);
-            Log.Flush();
-            if (!m_silent)
-            {
-                try
-                {
-                    System.Console.ForegroundColor = color;
-                    System.Console.WriteLine(format, args);
-                    System.Console.ResetColor();
-                }
-                catch (ArgumentNullException)
-                {
-                    // Some older systems dont support coloured text.
-                    System.Console.WriteLine(format, args);
-                }
-            }
-            return;
-        }
-
-        public string ReadLine()
-        {
-            string TempStr = System.Console.ReadLine();
-            Log.WriteLine(TempStr);
-            return TempStr;
-        }
-
-        public int Read()
-        {
-            int TempInt = System.Console.Read();
-            Log.Write((char)TempInt);
-            return TempInt;
-        }
-
-        public IPAddress CmdPromptIPAddress(string prompt, string defaultvalue)
-        {
-            IPAddress address;
-            string addressStr;
-
-            while (true)
-            {
-                addressStr = MainLog.Instance.CmdPrompt(prompt, defaultvalue);
-                if (IPAddress.TryParse(addressStr, out address))
-                {
-                    break;
-                }
-                else
-                {
-                    MainLog.Instance.Error("Illegal address. Please re-enter.");
-                }
-            }
-
-            return address;
-        }
-
-        public int CmdPromptIPPort(string prompt, string defaultvalue)
-        {
-            int port;
-            string portStr;
-
-            while (true)
-            {
-                portStr = MainLog.Instance.CmdPrompt(prompt, defaultvalue);
-                if (int.TryParse(portStr, out port))
-                {
-                    if (port >= IPEndPoint.MinPort && port <= IPEndPoint.MaxPort)
-                    {
-                        break;
-                    }
-                }
-
-                MainLog.Instance.Error("Illegal address. Please re-enter.");
-            }
-
-            return port;
-        }
-
-        // Displays a prompt and waits for the user to enter a string, then returns that string
-        // Done with no echo and suitable for passwords
-        public string PasswdPrompt(string prompt)
-        {
-            // FIXME: Needs to be better abstracted
-            Log.WriteLine(prompt);
-            this.Write(prompt);
-            ConsoleColor oldfg = System.Console.ForegroundColor;
-            System.Console.ForegroundColor = System.Console.BackgroundColor;
-            string temp = System.Console.ReadLine();
-            System.Console.ForegroundColor = oldfg;
-            return temp;
-        }
-
-        // Displays a command prompt and waits for the user to enter a string, then returns that string
-        public string CmdPrompt(string prompt)
-        {
-            this.Write(String.Format("{0}: ", prompt));
-            return this.ReadLine();
-        }
-
-        // Displays a command prompt and returns a default value if the user simply presses enter
-        public string CmdPrompt(string prompt, string defaultresponse)
-        {
-            string temp = CmdPrompt(String.Format("{0} [{1}]", prompt, defaultresponse));
-            if (temp == "")
-            {
-                return defaultresponse;
-            }
-            else
-            {
-                return temp;
-            }
-        }
-
-        // Displays a command prompt and returns a default value, user may only enter 1 of 2 options
-        public string CmdPrompt(string prompt, string defaultresponse, string OptionA, string OptionB)
-        {
-            bool itisdone = false;
-            string temp = CmdPrompt(prompt, defaultresponse);
-            while (itisdone == false)
-            {
-                if ((temp == OptionA) || (temp == OptionB))
-                {
-                    itisdone = true;
-                }
-                else
-                {
-                    Notice("Valid options are " + OptionA + " or " + OptionB);
-                    temp = CmdPrompt(prompt, defaultresponse);
-                }
-            }
-            return temp;
-        }
-
-        // Runs a command with a number of parameters
-        public Object RunCmd(string Cmd, string[] cmdparams)
-        {
-            cmdparser.RunCmd(Cmd, cmdparams);
-            return null;
-        }
-
-        // Shows data about something
-        public void ShowCommands(string ShowWhat)
-        {
-            cmdparser.Show(ShowWhat);
-        }
-
-        public void MainLogPrompt()
-        {
-            string[] tempstrarray;
-            string tempstr = this.CmdPrompt(this.componentname + "# ");
-            tempstrarray = tempstr.Split(' ');
-            string cmd = tempstrarray[0];
-            Array.Reverse(tempstrarray);
-            Array.Resize<string>(ref tempstrarray, tempstrarray.Length - 1);
-            Array.Reverse(tempstrarray);
-            string[] cmdparams = (string[])tempstrarray;
-            RunCmd(cmd, cmdparams);
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.IO;
+using System.Net;
+
+namespace OpenSim.Framework.Console
+{
+    public enum LogPriority : int
+    {
+        CRITICAL,
+        HIGH,
+        MEDIUM,
+        NORMAL,
+        LOW,
+        VERBOSE,
+        EXTRAVERBOSE
+    }
+
+    public class LogBase
+    {
+        StreamWriter Log;
+        public conscmd_callback cmdparser;
+        public string componentname;
+        private bool m_silent;
+
+        public LogBase(string LogFile, string componentname, conscmd_callback cmdparser, bool silent)
+        {
+            this.componentname = componentname;
+            this.cmdparser = cmdparser;
+            this.m_silent = silent;
+            System.Console.WriteLine("ServerConsole.cs - creating new local console");
+
+            if (String.IsNullOrEmpty(LogFile))
+            {
+                LogFile = componentname + ".log";
+            }
+
+            System.Console.WriteLine("Logs will be saved to current directory in " + LogFile);
+            Log = File.AppendText(LogFile);
+            Log.WriteLine("========================================================================");
+            Log.WriteLine(componentname + " Started at " + DateTime.Now.ToString());
+        }
+
+        public void Close()
+        {
+            Log.WriteLine("Shutdown at " + DateTime.Now.ToString());
+            Log.Close();
+        }
+
+        public void Write(string format, params object[] args)
+        {
+            Notice(format, args);
+            return;
+        }
+
+        public void WriteLine(LogPriority importance, string format, params object[] args)
+        {
+            Log.WriteLine(format, args);
+            Log.Flush();
+            if (!m_silent)
+            {
+                System.Console.WriteLine(format, args);
+            }
+            return;
+        }
+
+        public void Warn(string format, params object[] args)
+        {
+            WriteNewLine(ConsoleColor.Yellow, format, args);
+            return;
+        }
+
+        public void Notice(string format, params object[] args)
+        {
+            WriteNewLine(ConsoleColor.White, format, args);
+            return;
+        }
+
+        public void Error(string format, params object[] args)
+        {
+            WriteNewLine(ConsoleColor.Red, format, args);
+            return;
+        }
+
+        public void Verbose(string format, params object[] args)
+        {
+            WriteNewLine(ConsoleColor.Gray, format, args);
+            return;
+        }
+
+        public void Status(string format, params object[] args)
+        {
+            WriteNewLine(ConsoleColor.Blue, format, args);
+            return;
+        }
+
+        private void WriteNewLine(ConsoleColor color, string format, params object[] args)
+        {
+            Log.WriteLine(format, args);
+            Log.Flush();
+            if (!m_silent)
+            {
+                try
+                {
+                    System.Console.ForegroundColor = color;
+                    System.Console.WriteLine(format, args);
+                    System.Console.ResetColor();
+                }
+                catch (ArgumentNullException)
+                {
+                    // Some older systems dont support coloured text.
+                    System.Console.WriteLine(format, args);
+                }
+            }
+            return;
+        }
+
+        public string ReadLine()
+        {
+            string TempStr = System.Console.ReadLine();
+            Log.WriteLine(TempStr);
+            return TempStr;
+        }
+
+        public int Read()
+        {
+            int TempInt = System.Console.Read();
+            Log.Write((char)TempInt);
+            return TempInt;
+        }
+
+        public IPAddress CmdPromptIPAddress(string prompt, string defaultvalue)
+        {
+            IPAddress address;
+            string addressStr;
+
+            while (true)
+            {
+                addressStr = MainLog.Instance.CmdPrompt(prompt, defaultvalue);
+                if (IPAddress.TryParse(addressStr, out address))
+                {
+                    break;
+                }
+                else
+                {
+                    MainLog.Instance.Error("Illegal address. Please re-enter.");
+                }
+            }
+
+            return address;
+        }
+
+        public int CmdPromptIPPort(string prompt, string defaultvalue)
+        {
+            int port;
+            string portStr;
+
+            while (true)
+            {
+                portStr = MainLog.Instance.CmdPrompt(prompt, defaultvalue);
+                if (int.TryParse(portStr, out port))
+                {
+                    if (port >= IPEndPoint.MinPort && port <= IPEndPoint.MaxPort)
+                    {
+                        break;
+                    }
+                }
+
+                MainLog.Instance.Error("Illegal address. Please re-enter.");
+            }
+
+            return port;
+        }
+
+        // Displays a prompt and waits for the user to enter a string, then returns that string
+        // Done with no echo and suitable for passwords
+        public string PasswdPrompt(string prompt)
+        {
+            // FIXME: Needs to be better abstracted
+            Log.WriteLine(prompt);
+            this.Write(prompt);
+            ConsoleColor oldfg = System.Console.ForegroundColor;
+            System.Console.ForegroundColor = System.Console.BackgroundColor;
+            string temp = System.Console.ReadLine();
+            System.Console.ForegroundColor = oldfg;
+            return temp;
+        }
+
+        // Displays a command prompt and waits for the user to enter a string, then returns that string
+        public string CmdPrompt(string prompt)
+        {
+            this.Write(String.Format("{0}: ", prompt));
+            return this.ReadLine();
+        }
+
+        // Displays a command prompt and returns a default value if the user simply presses enter
+        public string CmdPrompt(string prompt, string defaultresponse)
+        {
+            string temp = CmdPrompt(String.Format("{0} [{1}]", prompt, defaultresponse));
+            if (temp == "")
+            {
+                return defaultresponse;
+            }
+            else
+            {
+                return temp;
+            }
+        }
+
+        // Displays a command prompt and returns a default value, user may only enter 1 of 2 options
+        public string CmdPrompt(string prompt, string defaultresponse, string OptionA, string OptionB)
+        {
+            bool itisdone = false;
+            string temp = CmdPrompt(prompt, defaultresponse);
+            while (itisdone == false)
+            {
+                if ((temp == OptionA) || (temp == OptionB))
+                {
+                    itisdone = true;
+                }
+                else
+                {
+                    Notice("Valid options are " + OptionA + " or " + OptionB);
+                    temp = CmdPrompt(prompt, defaultresponse);
+                }
+            }
+            return temp;
+        }
+
+        // Runs a command with a number of parameters
+        public Object RunCmd(string Cmd, string[] cmdparams)
+        {
+            cmdparser.RunCmd(Cmd, cmdparams);
+            return null;
+        }
+
+        // Shows data about something
+        public void ShowCommands(string ShowWhat)
+        {
+            cmdparser.Show(ShowWhat);
+        }
+
+        public void MainLogPrompt()
+        {
+            string[] tempstrarray;
+            string tempstr = this.CmdPrompt(this.componentname + "# ");
+            tempstrarray = tempstr.Split(' ');
+            string cmd = tempstrarray[0];
+            Array.Reverse(tempstrarray);
+            Array.Resize<string>(ref tempstrarray, tempstrarray.Length - 1);
+            Array.Reverse(tempstrarray);
+            string[] cmdparams = (string[])tempstrarray;
+            RunCmd(cmd, cmdparams);
+        }
+    }
+}

+ 47 - 47
OpenSim/Framework/Console/MainLog.cs

@@ -1,47 +1,47 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-namespace OpenSim.Framework.Console
-{
-	public class MainLog {
-		
-		private static LogBase instance;
-		
-		public static LogBase Instance 
-		{
-			get 
-			{
-				return instance;
-			}
-			set
-			{
-				instance = value;
-			}
-		}
-    }
-
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+namespace OpenSim.Framework.Console
+{
+	public class MainLog {
+		
+		private static LogBase instance;
+		
+		public static LogBase Instance 
+		{
+			get 
+			{
+				return instance;
+			}
+			set
+			{
+				instance = value;
+			}
+		}
+    }
+
+}

+ 162 - 162
OpenSim/Framework/Data.DB4o/DB4oGridData.cs

@@ -1,162 +1,162 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-using System;
-using libsecondlife;
-
-namespace OpenSim.Framework.Data.DB4o
-{
-    /// <summary>
-    /// A grid server storage mechanism employing the DB4o database system
-    /// </summary>
-    class DB4oGridData : IGridData
-    {
-        /// <summary>
-        /// The database manager object
-        /// </summary>
-        DB4oGridManager manager;
-
-        /// <summary>
-        /// Called when the plugin is first loaded (as constructors are not called)
-        /// </summary>
-        public void Initialise() {
-             manager = new DB4oGridManager("gridserver.yap");
-        }
-
-        /// <summary>
-        /// Returns a list of regions within the specified ranges
-        /// </summary>
-        /// <param name="a">minimum X coordinate</param>
-        /// <param name="b">minimum Y coordinate</param>
-        /// <param name="c">maximum X coordinate</param>
-        /// <param name="d">maximum Y coordinate</param>
-        /// <returns>An array of region profiles</returns>
-        public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
-        {
-            return null;
-        }
-
-        /// <summary>
-        /// Returns a region located at the specified regionHandle (warning multiple regions may occupy the one spot, first found is returned)
-        /// </summary>
-        /// <param name="handle">The handle to search for</param>
-        /// <returns>A region profile</returns>
-        public SimProfileData GetProfileByHandle(ulong handle) {
-            lock (manager.simProfiles)
-            {
-                foreach (LLUUID UUID in manager.simProfiles.Keys)
-                {
-                    if (manager.simProfiles[UUID].regionHandle == handle)
-                    {
-                        return manager.simProfiles[UUID];
-                    }
-                }
-            }
-            throw new Exception("Unable to find profile with handle (" + handle.ToString() + ")");
-        }
-
-        /// <summary>
-        /// Returns a specific region
-        /// </summary>
-        /// <param name="uuid">The region ID code</param>
-        /// <returns>A region profile</returns>
-        public SimProfileData GetProfileByLLUUID(LLUUID uuid)
-        {
-            lock (manager.simProfiles)
-            {
-                if (manager.simProfiles.ContainsKey(uuid))
-                    return manager.simProfiles[uuid];
-            }
-            throw new Exception("Unable to find profile with UUID (" + uuid.ToStringHyphenated() + "). Total Registered Regions: " + manager.simProfiles.Count);
-        }
-
-        /// <summary>
-        /// Adds a new specified region to the database
-        /// </summary>
-        /// <param name="profile">The profile to add</param>
-        /// <returns>A dataresponse enum indicating success</returns>
-        public DataResponse AddProfile(SimProfileData profile)
-        {
-            lock (manager.simProfiles)
-            {
-                if (manager.AddRow(profile))
-                {
-                    return DataResponse.RESPONSE_OK;
-                }
-                else
-                {
-                    return DataResponse.RESPONSE_ERROR;
-                }
-            }
-        }
-
-        /// <summary>
-        /// Authenticates a new region using the shared secrets. NOT SECURE.
-        /// </summary>
-        /// <param name="uuid">The UUID the region is authenticating with</param>
-        /// <param name="handle">The location the region is logging into (unused in Db4o)</param>
-        /// <param name="key">The shared secret</param>
-        /// <returns>Authenticated?</returns>
-        public bool AuthenticateSim(LLUUID uuid, ulong handle, string key) {
-            if (manager.simProfiles[uuid].regionRecvKey == key)
-                return true;
-            return false;
-        }
-
-        /// <summary>
-        /// Shuts down the database
-        /// </summary>
-        public void Close()
-        {
-            manager = null;
-        }
-
-        /// <summary>
-        /// Returns the providers name
-        /// </summary>
-        /// <returns>The name of the storage system</returns>
-        public string getName()
-        {
-            return "DB4o Grid Provider";
-        }
-
-        /// <summary>
-        /// Returns the providers version
-        /// </summary>
-        /// <returns>The version of the storage system</returns>
-        public string getVersion()
-        {
-            return "0.1";
-        }
-
-        public ReservationData GetReservationAtPoint(uint x, uint y)
-        {
-            return null;
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using libsecondlife;
+
+namespace OpenSim.Framework.Data.DB4o
+{
+    /// <summary>
+    /// A grid server storage mechanism employing the DB4o database system
+    /// </summary>
+    class DB4oGridData : IGridData
+    {
+        /// <summary>
+        /// The database manager object
+        /// </summary>
+        DB4oGridManager manager;
+
+        /// <summary>
+        /// Called when the plugin is first loaded (as constructors are not called)
+        /// </summary>
+        public void Initialise() {
+             manager = new DB4oGridManager("gridserver.yap");
+        }
+
+        /// <summary>
+        /// Returns a list of regions within the specified ranges
+        /// </summary>
+        /// <param name="a">minimum X coordinate</param>
+        /// <param name="b">minimum Y coordinate</param>
+        /// <param name="c">maximum X coordinate</param>
+        /// <param name="d">maximum Y coordinate</param>
+        /// <returns>An array of region profiles</returns>
+        public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
+        {
+            return null;
+        }
+
+        /// <summary>
+        /// Returns a region located at the specified regionHandle (warning multiple regions may occupy the one spot, first found is returned)
+        /// </summary>
+        /// <param name="handle">The handle to search for</param>
+        /// <returns>A region profile</returns>
+        public SimProfileData GetProfileByHandle(ulong handle) {
+            lock (manager.simProfiles)
+            {
+                foreach (LLUUID UUID in manager.simProfiles.Keys)
+                {
+                    if (manager.simProfiles[UUID].regionHandle == handle)
+                    {
+                        return manager.simProfiles[UUID];
+                    }
+                }
+            }
+            throw new Exception("Unable to find profile with handle (" + handle.ToString() + ")");
+        }
+
+        /// <summary>
+        /// Returns a specific region
+        /// </summary>
+        /// <param name="uuid">The region ID code</param>
+        /// <returns>A region profile</returns>
+        public SimProfileData GetProfileByLLUUID(LLUUID uuid)
+        {
+            lock (manager.simProfiles)
+            {
+                if (manager.simProfiles.ContainsKey(uuid))
+                    return manager.simProfiles[uuid];
+            }
+            throw new Exception("Unable to find profile with UUID (" + uuid.ToStringHyphenated() + "). Total Registered Regions: " + manager.simProfiles.Count);
+        }
+
+        /// <summary>
+        /// Adds a new specified region to the database
+        /// </summary>
+        /// <param name="profile">The profile to add</param>
+        /// <returns>A dataresponse enum indicating success</returns>
+        public DataResponse AddProfile(SimProfileData profile)
+        {
+            lock (manager.simProfiles)
+            {
+                if (manager.AddRow(profile))
+                {
+                    return DataResponse.RESPONSE_OK;
+                }
+                else
+                {
+                    return DataResponse.RESPONSE_ERROR;
+                }
+            }
+        }
+
+        /// <summary>
+        /// Authenticates a new region using the shared secrets. NOT SECURE.
+        /// </summary>
+        /// <param name="uuid">The UUID the region is authenticating with</param>
+        /// <param name="handle">The location the region is logging into (unused in Db4o)</param>
+        /// <param name="key">The shared secret</param>
+        /// <returns>Authenticated?</returns>
+        public bool AuthenticateSim(LLUUID uuid, ulong handle, string key) {
+            if (manager.simProfiles[uuid].regionRecvKey == key)
+                return true;
+            return false;
+        }
+
+        /// <summary>
+        /// Shuts down the database
+        /// </summary>
+        public void Close()
+        {
+            manager = null;
+        }
+
+        /// <summary>
+        /// Returns the providers name
+        /// </summary>
+        /// <returns>The name of the storage system</returns>
+        public string getName()
+        {
+            return "DB4o Grid Provider";
+        }
+
+        /// <summary>
+        /// Returns the providers version
+        /// </summary>
+        /// <returns>The version of the storage system</returns>
+        public string getVersion()
+        {
+            return "0.1";
+        }
+
+        public ReservationData GetReservationAtPoint(uint x, uint y)
+        {
+            return null;
+        }
+    }
+}

+ 163 - 163
OpenSim/Framework/Data.DB4o/DB4oManager.cs

@@ -1,163 +1,163 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections.Generic;
-using Db4objects.Db4o;
-using libsecondlife;
-
-namespace OpenSim.Framework.Data.DB4o
-{
-    /// <summary>
-    /// A Database manager for Db4o
-    /// </summary>
-    class DB4oGridManager
-    {
-        /// <summary>
-        /// A list of the current regions connected (in-memory cache)
-        /// </summary>
-        public Dictionary<LLUUID, SimProfileData> simProfiles = new Dictionary<LLUUID, SimProfileData>();
-        /// <summary>
-        /// Database File Name
-        /// </summary>
-        string dbfl;
-
-        /// <summary>
-        /// Creates a new grid storage manager
-        /// </summary>
-        /// <param name="db4odb">Filename to the database file</param>
-        public DB4oGridManager(string db4odb)
-        {
-            dbfl = db4odb;
-            IObjectContainer database;
-            database = Db4oFactory.OpenFile(dbfl);
-            IObjectSet result = database.Get(typeof(SimProfileData));
-            // Loads the file into the in-memory cache
-            foreach(SimProfileData row in result) {
-                simProfiles.Add(row.UUID, row);
-            }
-            database.Close();
-        }
-
-        /// <summary>
-        /// Adds a new profile to the database (Warning: Probably slow.)
-        /// </summary>
-        /// <param name="row">The profile to add</param>
-        /// <returns>Successful?</returns>
-        public bool AddRow(SimProfileData row)
-        {
-            if (simProfiles.ContainsKey(row.UUID))
-            {
-                simProfiles[row.UUID] = row;
-            }
-            else
-            {
-                simProfiles.Add(row.UUID, row);
-            }
-
-            try
-            {
-                IObjectContainer database;
-                database = Db4oFactory.OpenFile(dbfl);
-                database.Set(row);
-                database.Close();
-                return true;
-            }
-            catch (Exception)
-            {
-                return false;
-            }
-        }
-
-
-    }
-
-    /// <summary>
-    /// A manager for the DB4o database (user profiles)
-    /// </summary>
-    class DB4oUserManager
-    {
-        /// <summary>
-        /// A list of the user profiles (in memory cache)
-        /// </summary>
-        public Dictionary<LLUUID, UserProfileData> userProfiles = new Dictionary<LLUUID, UserProfileData>();
-        /// <summary>
-        /// Database filename
-        /// </summary>
-        string dbfl;
-
-        /// <summary>
-        /// Initialises a new DB manager
-        /// </summary>
-        /// <param name="db4odb">The filename to the database</param>
-        public DB4oUserManager(string db4odb)
-        {
-            dbfl = db4odb;
-            IObjectContainer database;
-            database = Db4oFactory.OpenFile(dbfl);
-            // Load to cache
-            IObjectSet result = database.Get(typeof(UserProfileData));
-            foreach (UserProfileData row in result)
-            {
-                userProfiles.Add(row.UUID, row);
-            }
-            database.Close();
-        }
-
-        /// <summary>
-        /// Adds a new profile to the database (Warning: Probably slow.)
-        /// </summary>
-        /// <param name="row">The profile to add</param>
-        /// <returns>Successful?</returns>
-        public bool AddRow(UserProfileData row)
-        { 
-            if (userProfiles.ContainsKey(row.UUID))
-            {
-                userProfiles[row.UUID] = row;
-            }
-            else
-            {
-                userProfiles.Add(row.UUID, row);
-            }
-
-            try
-            {
-                IObjectContainer database;
-                database = Db4oFactory.OpenFile(dbfl);
-                database.Set(row);
-                database.Close();
-                return true;
-            }
-            catch (Exception)
-            {
-                return false;
-            }
-        }
-
-
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Collections.Generic;
+using Db4objects.Db4o;
+using libsecondlife;
+
+namespace OpenSim.Framework.Data.DB4o
+{
+    /// <summary>
+    /// A Database manager for Db4o
+    /// </summary>
+    class DB4oGridManager
+    {
+        /// <summary>
+        /// A list of the current regions connected (in-memory cache)
+        /// </summary>
+        public Dictionary<LLUUID, SimProfileData> simProfiles = new Dictionary<LLUUID, SimProfileData>();
+        /// <summary>
+        /// Database File Name
+        /// </summary>
+        string dbfl;
+
+        /// <summary>
+        /// Creates a new grid storage manager
+        /// </summary>
+        /// <param name="db4odb">Filename to the database file</param>
+        public DB4oGridManager(string db4odb)
+        {
+            dbfl = db4odb;
+            IObjectContainer database;
+            database = Db4oFactory.OpenFile(dbfl);
+            IObjectSet result = database.Get(typeof(SimProfileData));
+            // Loads the file into the in-memory cache
+            foreach(SimProfileData row in result) {
+                simProfiles.Add(row.UUID, row);
+            }
+            database.Close();
+        }
+
+        /// <summary>
+        /// Adds a new profile to the database (Warning: Probably slow.)
+        /// </summary>
+        /// <param name="row">The profile to add</param>
+        /// <returns>Successful?</returns>
+        public bool AddRow(SimProfileData row)
+        {
+            if (simProfiles.ContainsKey(row.UUID))
+            {
+                simProfiles[row.UUID] = row;
+            }
+            else
+            {
+                simProfiles.Add(row.UUID, row);
+            }
+
+            try
+            {
+                IObjectContainer database;
+                database = Db4oFactory.OpenFile(dbfl);
+                database.Set(row);
+                database.Close();
+                return true;
+            }
+            catch (Exception)
+            {
+                return false;
+            }
+        }
+
+
+    }
+
+    /// <summary>
+    /// A manager for the DB4o database (user profiles)
+    /// </summary>
+    class DB4oUserManager
+    {
+        /// <summary>
+        /// A list of the user profiles (in memory cache)
+        /// </summary>
+        public Dictionary<LLUUID, UserProfileData> userProfiles = new Dictionary<LLUUID, UserProfileData>();
+        /// <summary>
+        /// Database filename
+        /// </summary>
+        string dbfl;
+
+        /// <summary>
+        /// Initialises a new DB manager
+        /// </summary>
+        /// <param name="db4odb">The filename to the database</param>
+        public DB4oUserManager(string db4odb)
+        {
+            dbfl = db4odb;
+            IObjectContainer database;
+            database = Db4oFactory.OpenFile(dbfl);
+            // Load to cache
+            IObjectSet result = database.Get(typeof(UserProfileData));
+            foreach (UserProfileData row in result)
+            {
+                userProfiles.Add(row.UUID, row);
+            }
+            database.Close();
+        }
+
+        /// <summary>
+        /// Adds a new profile to the database (Warning: Probably slow.)
+        /// </summary>
+        /// <param name="row">The profile to add</param>
+        /// <returns>Successful?</returns>
+        public bool AddRow(UserProfileData row)
+        { 
+            if (userProfiles.ContainsKey(row.UUID))
+            {
+                userProfiles[row.UUID] = row;
+            }
+            else
+            {
+                userProfiles.Add(row.UUID, row);
+            }
+
+            try
+            {
+                IObjectContainer database;
+                database = Db4oFactory.OpenFile(dbfl);
+                database.Set(row);
+                database.Close();
+                return true;
+            }
+            catch (Exception)
+            {
+                return false;
+            }
+        }
+
+
+    }
+}

+ 202 - 202
OpenSim/Framework/Data.DB4o/DB4oUserData.cs

@@ -1,202 +1,202 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using libsecondlife;
-
-namespace OpenSim.Framework.Data.DB4o
-{
-    /// <summary>
-    /// A User storage interface for the DB4o database system
-    /// </summary>
-    public class DB4oUserData : IUserData
-    {
-        /// <summary>
-        /// The database manager
-        /// </summary>
-        DB4oUserManager manager;
-
-        /// <summary>
-        /// Artificial constructor called upon plugin load
-        /// </summary>
-        public void Initialise()
-        {
-            manager = new DB4oUserManager("userprofiles.yap");
-        }
-
-        /// <summary>
-        /// Loads a specified user profile from a UUID
-        /// </summary>
-        /// <param name="uuid">The users UUID</param>
-        /// <returns>A user profile</returns>
-        public UserProfileData getUserByUUID(LLUUID uuid)
-        {
-            if(manager.userProfiles.ContainsKey(uuid))
-                return manager.userProfiles[uuid];
-            return null;
-        }
-
-        /// <summary>
-        /// Returns a user by searching for its name
-        /// </summary>
-        /// <param name="name">The users account name</param>
-        /// <returns>A matching users profile</returns>
-        public UserProfileData getUserByName(string name)
-        {
-            return getUserByName(name.Split(' ')[0], name.Split(' ')[1]);
-        }
-
-        /// <summary>
-        /// Returns a user by searching for its name
-        /// </summary>
-        /// <param name="fname">The first part of the users account name</param>
-        /// <param name="lname">The second part of the users account name</param>
-        /// <returns>A matching users profile</returns>
-        public UserProfileData getUserByName(string fname, string lname)
-        {
-            foreach (UserProfileData profile in manager.userProfiles.Values)
-            {
-                if (profile.username == fname && profile.surname == lname)
-                    return profile;
-            }
-            return null;
-        }
-
-        /// <summary>
-        /// Returns a user by UUID direct
-        /// </summary>
-        /// <param name="uuid">The users account ID</param>
-        /// <returns>A matching users profile</returns>
-        public UserAgentData getAgentByUUID(LLUUID uuid)
-        {   
-            try
-            {
-                return getUserByUUID(uuid).currentAgent;
-            }
-            catch (Exception)
-            {
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Returns a session by account name
-        /// </summary>
-        /// <param name="name">The account name</param>
-        /// <returns>The users session agent</returns>
-        public UserAgentData getAgentByName(string name)
-        {
-            return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]);
-        }
-
-        /// <summary>
-        /// Returns a session by account name
-        /// </summary>
-        /// <param name="fname">The first part of the users account name</param>
-        /// <param name="lname">The second part of the users account name</param>
-        /// <returns>A user agent</returns>
-        public UserAgentData getAgentByName(string fname, string lname)
-        {
-            try
-            {
-                return getUserByName(fname,lname).currentAgent;
-            }
-            catch (Exception)
-            {
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Creates a new user profile
-        /// </summary>
-        /// <param name="user">The profile to add to the database</param>
-        public void addNewUserProfile(UserProfileData user)
-        {
-            try
-            {
-                manager.AddRow(user);
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine(e.ToString());
-            }
-        }
-
-        /// <summary>
-        /// Creates a new user agent
-        /// </summary>
-        /// <param name="agent">The agent to add to the database</param>
-        public void addNewUserAgent(UserAgentData agent)
-        {
-            // Do nothing. yet.
-        }
-
-        /// <summary>
-        /// Transfers money between two user accounts
-        /// </summary>
-        /// <param name="from">Starting account</param>
-        /// <param name="to">End account</param>
-        /// <param name="amount">The amount to move</param>
-        /// <returns>Success?</returns>
-        public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount)
-        {
-            return true;
-        }
-
-        /// <summary>
-        /// Transfers inventory between two accounts
-        /// </summary>
-        /// <remarks>Move to inventory server</remarks>
-        /// <param name="from">Senders account</param>
-        /// <param name="to">Recievers account</param>
-        /// <param name="item">Inventory item</param>
-        /// <returns>Success?</returns>
-        public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item)
-        {
-            return true;
-        }
-
-        /// <summary>
-        /// Returns the name of the storage provider
-        /// </summary>
-        /// <returns>Storage provider name</returns>
-        public string getName()
-        {
-            return "DB4o Userdata";
-        }
-
-        /// <summary>
-        /// Returns the version of the storage provider
-        /// </summary>
-        /// <returns>Storage provider version</returns>
-        public string getVersion()
-        {
-            return "0.1";
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using libsecondlife;
+
+namespace OpenSim.Framework.Data.DB4o
+{
+    /// <summary>
+    /// A User storage interface for the DB4o database system
+    /// </summary>
+    public class DB4oUserData : IUserData
+    {
+        /// <summary>
+        /// The database manager
+        /// </summary>
+        DB4oUserManager manager;
+
+        /// <summary>
+        /// Artificial constructor called upon plugin load
+        /// </summary>
+        public void Initialise()
+        {
+            manager = new DB4oUserManager("userprofiles.yap");
+        }
+
+        /// <summary>
+        /// Loads a specified user profile from a UUID
+        /// </summary>
+        /// <param name="uuid">The users UUID</param>
+        /// <returns>A user profile</returns>
+        public UserProfileData getUserByUUID(LLUUID uuid)
+        {
+            if(manager.userProfiles.ContainsKey(uuid))
+                return manager.userProfiles[uuid];
+            return null;
+        }
+
+        /// <summary>
+        /// Returns a user by searching for its name
+        /// </summary>
+        /// <param name="name">The users account name</param>
+        /// <returns>A matching users profile</returns>
+        public UserProfileData getUserByName(string name)
+        {
+            return getUserByName(name.Split(' ')[0], name.Split(' ')[1]);
+        }
+
+        /// <summary>
+        /// Returns a user by searching for its name
+        /// </summary>
+        /// <param name="fname">The first part of the users account name</param>
+        /// <param name="lname">The second part of the users account name</param>
+        /// <returns>A matching users profile</returns>
+        public UserProfileData getUserByName(string fname, string lname)
+        {
+            foreach (UserProfileData profile in manager.userProfiles.Values)
+            {
+                if (profile.username == fname && profile.surname == lname)
+                    return profile;
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// Returns a user by UUID direct
+        /// </summary>
+        /// <param name="uuid">The users account ID</param>
+        /// <returns>A matching users profile</returns>
+        public UserAgentData getAgentByUUID(LLUUID uuid)
+        {   
+            try
+            {
+                return getUserByUUID(uuid).currentAgent;
+            }
+            catch (Exception)
+            {
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Returns a session by account name
+        /// </summary>
+        /// <param name="name">The account name</param>
+        /// <returns>The users session agent</returns>
+        public UserAgentData getAgentByName(string name)
+        {
+            return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]);
+        }
+
+        /// <summary>
+        /// Returns a session by account name
+        /// </summary>
+        /// <param name="fname">The first part of the users account name</param>
+        /// <param name="lname">The second part of the users account name</param>
+        /// <returns>A user agent</returns>
+        public UserAgentData getAgentByName(string fname, string lname)
+        {
+            try
+            {
+                return getUserByName(fname,lname).currentAgent;
+            }
+            catch (Exception)
+            {
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Creates a new user profile
+        /// </summary>
+        /// <param name="user">The profile to add to the database</param>
+        public void addNewUserProfile(UserProfileData user)
+        {
+            try
+            {
+                manager.AddRow(user);
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e.ToString());
+            }
+        }
+
+        /// <summary>
+        /// Creates a new user agent
+        /// </summary>
+        /// <param name="agent">The agent to add to the database</param>
+        public void addNewUserAgent(UserAgentData agent)
+        {
+            // Do nothing. yet.
+        }
+
+        /// <summary>
+        /// Transfers money between two user accounts
+        /// </summary>
+        /// <param name="from">Starting account</param>
+        /// <param name="to">End account</param>
+        /// <param name="amount">The amount to move</param>
+        /// <returns>Success?</returns>
+        public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount)
+        {
+            return true;
+        }
+
+        /// <summary>
+        /// Transfers inventory between two accounts
+        /// </summary>
+        /// <remarks>Move to inventory server</remarks>
+        /// <param name="from">Senders account</param>
+        /// <param name="to">Recievers account</param>
+        /// <param name="item">Inventory item</param>
+        /// <returns>Success?</returns>
+        public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item)
+        {
+            return true;
+        }
+
+        /// <summary>
+        /// Returns the name of the storage provider
+        /// </summary>
+        /// <returns>Storage provider name</returns>
+        public string getName()
+        {
+            return "DB4o Userdata";
+        }
+
+        /// <summary>
+        /// Returns the version of the storage provider
+        /// </summary>
+        /// <returns>Storage provider version</returns>
+        public string getVersion()
+        {
+            return "0.1";
+        }
+    }
+}

+ 33 - 33
OpenSim/Framework/Data.DB4o/Properties/AssemblyInfo.cs

@@ -1,33 +1,33 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("OpenSim.Framework.Data.DB4o")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("OpenSim.Framework.Data.DB4o")]
-[assembly: AssemblyCopyright("Copyright ©  2007")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("57991e15-79da-41b7-aa06-2e6b49165a63")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+using System.Reflection;
+using System.Runtime.InteropServices;
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OpenSim.Framework.Data.DB4o")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OpenSim.Framework.Data.DB4o")]
+[assembly: AssemblyCopyright("Copyright ©  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("57991e15-79da-41b7-aa06-2e6b49165a63")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 194 - 194
OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs

@@ -1,194 +1,194 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Security.Cryptography;
-using System.Text;
-using libsecondlife;
-
-namespace OpenSim.Framework.Data.MSSQL
-{
-    /// <summary>
-    /// A grid data interface for Microsoft SQL Server
-    /// </summary>
-    public class SqlGridData : IGridData
-    {
-        /// <summary>
-        /// Database manager
-        /// </summary>
-        private MSSqlManager database;
-
-        /// <summary>
-        /// Initialises the Grid Interface
-        /// </summary>
-        public void Initialise()
-        {
-            database = new MSSqlManager("localhost", "db", "user", "password", "false");
-        }
-
-        /// <summary>
-        /// Shuts down the grid interface
-        /// </summary>
-        public void Close()
-        {
-            database.Close();
-        }
-
-        /// <summary>
-        /// Returns the storage system name
-        /// </summary>
-        /// <returns>A string containing the storage system name</returns>
-        public string getName()
-        {
-            return "Sql OpenGridData";
-        }
-
-        /// <summary>
-        /// Returns the storage system version
-        /// </summary>
-        /// <returns>A string containing the storage system version</returns>
-        public string getVersion()
-        {
-            return "0.1";
-        }
-
-        /// <summary>
-        /// Returns a list of regions within the specified ranges
-        /// </summary>
-        /// <param name="a">minimum X coordinate</param>
-        /// <param name="b">minimum Y coordinate</param>
-        /// <param name="c">maximum X coordinate</param>
-        /// <param name="d">maximum Y coordinate</param>
-        /// <returns>An array of region profiles</returns>
-        public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
-        {
-            return null;
-        }
-
-        /// <summary>
-        /// Returns a sim profile from it's location
-        /// </summary>
-        /// <param name="handle">Region location handle</param>
-        /// <returns>Sim profile</returns>
-        public SimProfileData GetProfileByHandle(ulong handle)
-        {
-            Dictionary<string, string> param = new Dictionary<string, string>();
-            param["handle"] = handle.ToString();
-
-            IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param);
-            IDataReader reader = result.ExecuteReader();
-
-            SimProfileData row = database.getRow(reader);
-            reader.Close();
-            result.Dispose();
-
-            return row;
-        }
-
-        /// <summary>
-        /// Returns a sim profile from it's UUID
-        /// </summary>
-        /// <param name="uuid">The region UUID</param>
-        /// <returns>The sim profile</returns>
-        public SimProfileData GetProfileByLLUUID(LLUUID uuid)
-        {
-            Dictionary<string, string> param = new Dictionary<string, string>();
-            param["uuid"] = uuid.ToStringHyphenated();
-
-            IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param);
-            IDataReader reader = result.ExecuteReader();
-
-            SimProfileData row = database.getRow(reader);
-            reader.Close();
-            result.Dispose();
-
-            return row;
-        }
-
-        /// <summary>
-        /// Adds a new specified region to the database
-        /// </summary>
-        /// <param name="profile">The profile to add</param>
-        /// <returns>A dataresponse enum indicating success</returns>
-        public DataResponse AddProfile(SimProfileData profile)
-        {
-            if (database.insertRow(profile))
-            {
-                return DataResponse.RESPONSE_OK;
-            }
-            else
-            {
-                return DataResponse.RESPONSE_ERROR;
-            }
-        }
-
-        /// <summary>
-        /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
-        /// </summary>
-        /// <param name="uuid">The UUID of the challenger</param>
-        /// <param name="handle">The attempted regionHandle of the challenger</param>
-        /// <param name="authkey">The secret</param>
-        /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
-        public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey)
-        {
-            bool throwHissyFit = false; // Should be true by 1.0
-
-            if (throwHissyFit)
-                throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
-
-            SimProfileData data = GetProfileByLLUUID(uuid);
-
-            return (handle == data.regionHandle && authkey == data.regionSecret);
-        }
-
-        /// <summary>
-        /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
-        /// </summary>
-        /// <remarks>This requires a security audit.</remarks>
-        /// <param name="uuid"></param>
-        /// <param name="handle"></param>
-        /// <param name="authhash"></param>
-        /// <param name="challenge"></param>
-        /// <returns></returns>
-        public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge)
-        {
-            SHA512Managed HashProvider = new SHA512Managed();
-            ASCIIEncoding TextProvider = new ASCIIEncoding();
-
-            byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
-            byte[] hash = HashProvider.ComputeHash(stream);
-            return false;
-        }
-        public ReservationData GetReservationAtPoint(uint x, uint y)
-        {
-            return null;
-        }
-    }
-    
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Security.Cryptography;
+using System.Text;
+using libsecondlife;
+
+namespace OpenSim.Framework.Data.MSSQL
+{
+    /// <summary>
+    /// A grid data interface for Microsoft SQL Server
+    /// </summary>
+    public class SqlGridData : IGridData
+    {
+        /// <summary>
+        /// Database manager
+        /// </summary>
+        private MSSqlManager database;
+
+        /// <summary>
+        /// Initialises the Grid Interface
+        /// </summary>
+        public void Initialise()
+        {
+            database = new MSSqlManager("localhost", "db", "user", "password", "false");
+        }
+
+        /// <summary>
+        /// Shuts down the grid interface
+        /// </summary>
+        public void Close()
+        {
+            database.Close();
+        }
+
+        /// <summary>
+        /// Returns the storage system name
+        /// </summary>
+        /// <returns>A string containing the storage system name</returns>
+        public string getName()
+        {
+            return "Sql OpenGridData";
+        }
+
+        /// <summary>
+        /// Returns the storage system version
+        /// </summary>
+        /// <returns>A string containing the storage system version</returns>
+        public string getVersion()
+        {
+            return "0.1";
+        }
+
+        /// <summary>
+        /// Returns a list of regions within the specified ranges
+        /// </summary>
+        /// <param name="a">minimum X coordinate</param>
+        /// <param name="b">minimum Y coordinate</param>
+        /// <param name="c">maximum X coordinate</param>
+        /// <param name="d">maximum Y coordinate</param>
+        /// <returns>An array of region profiles</returns>
+        public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
+        {
+            return null;
+        }
+
+        /// <summary>
+        /// Returns a sim profile from it's location
+        /// </summary>
+        /// <param name="handle">Region location handle</param>
+        /// <returns>Sim profile</returns>
+        public SimProfileData GetProfileByHandle(ulong handle)
+        {
+            Dictionary<string, string> param = new Dictionary<string, string>();
+            param["handle"] = handle.ToString();
+
+            IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param);
+            IDataReader reader = result.ExecuteReader();
+
+            SimProfileData row = database.getRow(reader);
+            reader.Close();
+            result.Dispose();
+
+            return row;
+        }
+
+        /// <summary>
+        /// Returns a sim profile from it's UUID
+        /// </summary>
+        /// <param name="uuid">The region UUID</param>
+        /// <returns>The sim profile</returns>
+        public SimProfileData GetProfileByLLUUID(LLUUID uuid)
+        {
+            Dictionary<string, string> param = new Dictionary<string, string>();
+            param["uuid"] = uuid.ToStringHyphenated();
+
+            IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param);
+            IDataReader reader = result.ExecuteReader();
+
+            SimProfileData row = database.getRow(reader);
+            reader.Close();
+            result.Dispose();
+
+            return row;
+        }
+
+        /// <summary>
+        /// Adds a new specified region to the database
+        /// </summary>
+        /// <param name="profile">The profile to add</param>
+        /// <returns>A dataresponse enum indicating success</returns>
+        public DataResponse AddProfile(SimProfileData profile)
+        {
+            if (database.insertRow(profile))
+            {
+                return DataResponse.RESPONSE_OK;
+            }
+            else
+            {
+                return DataResponse.RESPONSE_ERROR;
+            }
+        }
+
+        /// <summary>
+        /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
+        /// </summary>
+        /// <param name="uuid">The UUID of the challenger</param>
+        /// <param name="handle">The attempted regionHandle of the challenger</param>
+        /// <param name="authkey">The secret</param>
+        /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
+        public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey)
+        {
+            bool throwHissyFit = false; // Should be true by 1.0
+
+            if (throwHissyFit)
+                throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
+
+            SimProfileData data = GetProfileByLLUUID(uuid);
+
+            return (handle == data.regionHandle && authkey == data.regionSecret);
+        }
+
+        /// <summary>
+        /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
+        /// </summary>
+        /// <remarks>This requires a security audit.</remarks>
+        /// <param name="uuid"></param>
+        /// <param name="handle"></param>
+        /// <param name="authhash"></param>
+        /// <param name="challenge"></param>
+        /// <returns></returns>
+        public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge)
+        {
+            SHA512Managed HashProvider = new SHA512Managed();
+            ASCIIEncoding TextProvider = new ASCIIEncoding();
+
+            byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
+            byte[] hash = HashProvider.ComputeHash(stream);
+            return false;
+        }
+        public ReservationData GetReservationAtPoint(uint x, uint y)
+        {
+            return null;
+        }
+    }
+    
+}

+ 211 - 211
OpenSim/Framework/Data.MSSQL/MSSQLManager.cs

@@ -1,211 +1,211 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Data.SqlClient;
-using libsecondlife;
-
-namespace OpenSim.Framework.Data.MSSQL
-{
-    /// <summary>
-    /// A management class for the MS SQL Storage Engine
-    /// </summary>
-    class MSSqlManager
-    {
-        /// <summary>
-        /// The database connection object
-        /// </summary>
-        IDbConnection dbcon;
-
-        /// <summary>
-        /// Initialises and creates a new Sql connection and maintains it.
-        /// </summary>
-        /// <param name="hostname">The Sql server being connected to</param>
-        /// <param name="database">The name of the Sql database being used</param>
-        /// <param name="username">The username logging into the database</param>
-        /// <param name="password">The password for the user logging in</param>
-        /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param>
-        public MSSqlManager(string hostname, string database, string username, string password, string cpooling)
-        {
-            try
-            {
-                string connectionString = "Server=" + hostname + ";Database=" + database + ";User ID=" + username + ";Password=" + password + ";Pooling=" + cpooling + ";";
-                dbcon = new SqlConnection(connectionString);
-
-                dbcon.Open();
-            }
-            catch (Exception e)
-            {
-                throw new Exception("Error initialising Sql Database: " + e.ToString());
-            }
-        }
-
-        /// <summary>
-        /// Shuts down the database connection
-        /// </summary>
-        public void Close()
-        {
-            dbcon.Close();
-            dbcon = null;
-        }
-
-        /// <summary>
-        /// Runs a query with protection against SQL Injection by using parameterised input.
-        /// </summary>
-        /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param>
-        /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param>
-        /// <returns>A Sql DB Command</returns>
-        public IDbCommand Query(string sql, Dictionary<string, string> parameters)
-        {
-            SqlCommand dbcommand = (SqlCommand)dbcon.CreateCommand();
-            dbcommand.CommandText = sql;
-            foreach (KeyValuePair<string, string> param in parameters)
-            {
-                dbcommand.Parameters.AddWithValue(param.Key, param.Value);
-            }
-
-            return (IDbCommand)dbcommand;
-        }
-
-        /// <summary>
-        /// Runs a database reader object and returns a region row
-        /// </summary>
-        /// <param name="reader">An active database reader</param>
-        /// <returns>A region row</returns>
-        public SimProfileData getRow(IDataReader reader)
-        {
-            SimProfileData regionprofile = new SimProfileData();
-
-            if (reader.Read())
-            {
-                // Region Main
-                regionprofile.regionHandle = (ulong)reader["regionHandle"];
-                regionprofile.regionName = (string)reader["regionName"];
-                regionprofile.UUID = new LLUUID((string)reader["uuid"]);
-
-                // Secrets
-                regionprofile.regionRecvKey = (string)reader["regionRecvKey"];
-                regionprofile.regionSecret = (string)reader["regionSecret"];
-                regionprofile.regionSendKey = (string)reader["regionSendKey"];
-
-                // Region Server
-                regionprofile.regionDataURI = (string)reader["regionDataURI"];
-                regionprofile.regionOnline = false; // Needs to be pinged before this can be set.
-                regionprofile.serverIP = (string)reader["serverIP"];
-                regionprofile.serverPort = (uint)reader["serverPort"];
-                regionprofile.serverURI = (string)reader["serverURI"];
-
-                // Location
-                regionprofile.regionLocX = (uint)((int)reader["locX"]);
-                regionprofile.regionLocY = (uint)((int)reader["locY"]);
-                regionprofile.regionLocZ = (uint)((int)reader["locZ"]);
-
-                // Neighbours - 0 = No Override
-                regionprofile.regionEastOverrideHandle = (ulong)reader["eastOverrideHandle"];
-                regionprofile.regionWestOverrideHandle = (ulong)reader["westOverrideHandle"];
-                regionprofile.regionSouthOverrideHandle = (ulong)reader["southOverrideHandle"];
-                regionprofile.regionNorthOverrideHandle = (ulong)reader["northOverrideHandle"];
-
-                // Assets
-                regionprofile.regionAssetURI = (string)reader["regionAssetURI"];
-                regionprofile.regionAssetRecvKey = (string)reader["regionAssetRecvKey"];
-                regionprofile.regionAssetSendKey = (string)reader["regionAssetSendKey"];
-
-                // Userserver
-                regionprofile.regionUserURI = (string)reader["regionUserURI"];
-                regionprofile.regionUserRecvKey = (string)reader["regionUserRecvKey"];
-                regionprofile.regionUserSendKey = (string)reader["regionUserSendKey"];
-            }
-            else
-            {
-                throw new Exception("No rows to return");
-            }
-            return regionprofile;
-        }
-
-        /// <summary>
-        /// Creates a new region in the database
-        /// </summary>
-        /// <param name="profile">The region profile to insert</param>
-        /// <returns>Successful?</returns>
-        public bool insertRow(SimProfileData profile)
-        {
-            string sql = "REPLACE INTO regions VALUES (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, ";
-            sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, ";
-            sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey) VALUES ";
-
-            sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, ";
-            sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, ";
-            sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey);";
-
-            Dictionary<string, string> parameters = new Dictionary<string, string>();
-
-            parameters["regionHandle"] = profile.regionHandle.ToString();
-            parameters["regionName"] = profile.regionName;
-            parameters["uuid"] = profile.UUID.ToString();
-            parameters["regionRecvKey"] = profile.regionRecvKey;
-            parameters["regionSendKey"] = profile.regionSendKey;
-            parameters["regionDataURI"] = profile.regionDataURI;
-            parameters["serverIP"] = profile.serverIP;
-            parameters["serverPort"] = profile.serverPort.ToString();
-            parameters["serverURI"] = profile.serverURI;
-            parameters["locX"] = profile.regionLocX.ToString();
-            parameters["locY"] = profile.regionLocY.ToString();
-            parameters["locZ"] = profile.regionLocZ.ToString();
-            parameters["eastOverrideHandle"] = profile.regionEastOverrideHandle.ToString();
-            parameters["westOverrideHandle"] = profile.regionWestOverrideHandle.ToString();
-            parameters["northOverrideHandle"] = profile.regionNorthOverrideHandle.ToString();
-            parameters["southOverrideHandle"] = profile.regionSouthOverrideHandle.ToString();
-            parameters["regionAssetURI"] = profile.regionAssetURI;
-            parameters["regionAssetRecvKey"] = profile.regionAssetRecvKey;
-            parameters["regionAssetSendKey"] = profile.regionAssetSendKey;
-            parameters["regionUserURI"] = profile.regionUserURI;
-            parameters["regionUserRecvKey"] = profile.regionUserRecvKey;
-            parameters["regionUserSendKey"] = profile.regionUserSendKey;
-
-            bool returnval = false;
-
-            try
-            {
-                IDbCommand result = Query(sql, parameters);
-
-                if (result.ExecuteNonQuery() == 1)
-                    returnval = true;
-
-                result.Dispose();
-            }
-            catch (Exception)
-            {
-                return false;
-            }
-
-            return returnval;
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.SqlClient;
+using libsecondlife;
+
+namespace OpenSim.Framework.Data.MSSQL
+{
+    /// <summary>
+    /// A management class for the MS SQL Storage Engine
+    /// </summary>
+    class MSSqlManager
+    {
+        /// <summary>
+        /// The database connection object
+        /// </summary>
+        IDbConnection dbcon;
+
+        /// <summary>
+        /// Initialises and creates a new Sql connection and maintains it.
+        /// </summary>
+        /// <param name="hostname">The Sql server being connected to</param>
+        /// <param name="database">The name of the Sql database being used</param>
+        /// <param name="username">The username logging into the database</param>
+        /// <param name="password">The password for the user logging in</param>
+        /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param>
+        public MSSqlManager(string hostname, string database, string username, string password, string cpooling)
+        {
+            try
+            {
+                string connectionString = "Server=" + hostname + ";Database=" + database + ";User ID=" + username + ";Password=" + password + ";Pooling=" + cpooling + ";";
+                dbcon = new SqlConnection(connectionString);
+
+                dbcon.Open();
+            }
+            catch (Exception e)
+            {
+                throw new Exception("Error initialising Sql Database: " + e.ToString());
+            }
+        }
+
+        /// <summary>
+        /// Shuts down the database connection
+        /// </summary>
+        public void Close()
+        {
+            dbcon.Close();
+            dbcon = null;
+        }
+
+        /// <summary>
+        /// Runs a query with protection against SQL Injection by using parameterised input.
+        /// </summary>
+        /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param>
+        /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param>
+        /// <returns>A Sql DB Command</returns>
+        public IDbCommand Query(string sql, Dictionary<string, string> parameters)
+        {
+            SqlCommand dbcommand = (SqlCommand)dbcon.CreateCommand();
+            dbcommand.CommandText = sql;
+            foreach (KeyValuePair<string, string> param in parameters)
+            {
+                dbcommand.Parameters.AddWithValue(param.Key, param.Value);
+            }
+
+            return (IDbCommand)dbcommand;
+        }
+
+        /// <summary>
+        /// Runs a database reader object and returns a region row
+        /// </summary>
+        /// <param name="reader">An active database reader</param>
+        /// <returns>A region row</returns>
+        public SimProfileData getRow(IDataReader reader)
+        {
+            SimProfileData regionprofile = new SimProfileData();
+
+            if (reader.Read())
+            {
+                // Region Main
+                regionprofile.regionHandle = (ulong)reader["regionHandle"];
+                regionprofile.regionName = (string)reader["regionName"];
+                regionprofile.UUID = new LLUUID((string)reader["uuid"]);
+
+                // Secrets
+                regionprofile.regionRecvKey = (string)reader["regionRecvKey"];
+                regionprofile.regionSecret = (string)reader["regionSecret"];
+                regionprofile.regionSendKey = (string)reader["regionSendKey"];
+
+                // Region Server
+                regionprofile.regionDataURI = (string)reader["regionDataURI"];
+                regionprofile.regionOnline = false; // Needs to be pinged before this can be set.
+                regionprofile.serverIP = (string)reader["serverIP"];
+                regionprofile.serverPort = (uint)reader["serverPort"];
+                regionprofile.serverURI = (string)reader["serverURI"];
+
+                // Location
+                regionprofile.regionLocX = (uint)((int)reader["locX"]);
+                regionprofile.regionLocY = (uint)((int)reader["locY"]);
+                regionprofile.regionLocZ = (uint)((int)reader["locZ"]);
+
+                // Neighbours - 0 = No Override
+                regionprofile.regionEastOverrideHandle = (ulong)reader["eastOverrideHandle"];
+                regionprofile.regionWestOverrideHandle = (ulong)reader["westOverrideHandle"];
+                regionprofile.regionSouthOverrideHandle = (ulong)reader["southOverrideHandle"];
+                regionprofile.regionNorthOverrideHandle = (ulong)reader["northOverrideHandle"];
+
+                // Assets
+                regionprofile.regionAssetURI = (string)reader["regionAssetURI"];
+                regionprofile.regionAssetRecvKey = (string)reader["regionAssetRecvKey"];
+                regionprofile.regionAssetSendKey = (string)reader["regionAssetSendKey"];
+
+                // Userserver
+                regionprofile.regionUserURI = (string)reader["regionUserURI"];
+                regionprofile.regionUserRecvKey = (string)reader["regionUserRecvKey"];
+                regionprofile.regionUserSendKey = (string)reader["regionUserSendKey"];
+            }
+            else
+            {
+                throw new Exception("No rows to return");
+            }
+            return regionprofile;
+        }
+
+        /// <summary>
+        /// Creates a new region in the database
+        /// </summary>
+        /// <param name="profile">The region profile to insert</param>
+        /// <returns>Successful?</returns>
+        public bool insertRow(SimProfileData profile)
+        {
+            string sql = "REPLACE INTO regions VALUES (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, ";
+            sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, ";
+            sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey) VALUES ";
+
+            sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, ";
+            sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, ";
+            sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey);";
+
+            Dictionary<string, string> parameters = new Dictionary<string, string>();
+
+            parameters["regionHandle"] = profile.regionHandle.ToString();
+            parameters["regionName"] = profile.regionName;
+            parameters["uuid"] = profile.UUID.ToString();
+            parameters["regionRecvKey"] = profile.regionRecvKey;
+            parameters["regionSendKey"] = profile.regionSendKey;
+            parameters["regionDataURI"] = profile.regionDataURI;
+            parameters["serverIP"] = profile.serverIP;
+            parameters["serverPort"] = profile.serverPort.ToString();
+            parameters["serverURI"] = profile.serverURI;
+            parameters["locX"] = profile.regionLocX.ToString();
+            parameters["locY"] = profile.regionLocY.ToString();
+            parameters["locZ"] = profile.regionLocZ.ToString();
+            parameters["eastOverrideHandle"] = profile.regionEastOverrideHandle.ToString();
+            parameters["westOverrideHandle"] = profile.regionWestOverrideHandle.ToString();
+            parameters["northOverrideHandle"] = profile.regionNorthOverrideHandle.ToString();
+            parameters["southOverrideHandle"] = profile.regionSouthOverrideHandle.ToString();
+            parameters["regionAssetURI"] = profile.regionAssetURI;
+            parameters["regionAssetRecvKey"] = profile.regionAssetRecvKey;
+            parameters["regionAssetSendKey"] = profile.regionAssetSendKey;
+            parameters["regionUserURI"] = profile.regionUserURI;
+            parameters["regionUserRecvKey"] = profile.regionUserRecvKey;
+            parameters["regionUserSendKey"] = profile.regionUserSendKey;
+
+            bool returnval = false;
+
+            try
+            {
+                IDbCommand result = Query(sql, parameters);
+
+                if (result.ExecuteNonQuery() == 1)
+                    returnval = true;
+
+                result.Dispose();
+            }
+            catch (Exception)
+            {
+                return false;
+            }
+
+            return returnval;
+        }
+    }
+}

+ 33 - 33
OpenSim/Framework/Data.MSSQL/Properties/AssemblyInfo.cs

@@ -1,33 +1,33 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("OpenSim.Framework.Data.MSSQL")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("OpenSim.Framework.Data.MSSQL")]
-[assembly: AssemblyCopyright("Copyright ©  2007")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("0e1c1ca4-2cf2-4315-b0e7-432c02feea8a")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+using System.Reflection;
+using System.Runtime.InteropServices;
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OpenSim.Framework.Data.MSSQL")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OpenSim.Framework.Data.MSSQL")]
+[assembly: AssemblyCopyright("Copyright ©  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("0e1c1ca4-2cf2-4315-b0e7-432c02feea8a")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 287 - 287
OpenSim/Framework/Data.MySQL/MySQLGridData.cs

@@ -1,287 +1,287 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Security.Cryptography;
-using System.Text;
-using libsecondlife;
-
-namespace OpenSim.Framework.Data.MySQL
-{
-    /// <summary>
-    /// A MySQL Interface for the Grid Server
-    /// </summary>
-    public class MySQLGridData : IGridData
-    {
-        /// <summary>
-        /// MySQL Database Manager
-        /// </summary>
-        private MySQLManager database;
-
-        /// <summary>
-        /// Initialises the Grid Interface
-        /// </summary>
-        public void Initialise()
-        {
-            IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
-            string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
-            string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
-            string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
-            string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
-            string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
-            string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
-
-            database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
-        }
-
-        /// <summary>
-        /// Shuts down the grid interface
-        /// </summary>
-        public void Close()
-        {
-            database.Close();
-        }
-
-        /// <summary>
-        /// Returns the plugin name
-        /// </summary>
-        /// <returns>Plugin name</returns>
-        public string getName()
-        {
-            return "MySql OpenGridData";
-        }
-
-        /// <summary>
-        /// Returns the plugin version
-        /// </summary>
-        /// <returns>Plugin version</returns>
-        public string getVersion()
-        {
-            return "0.1";
-        }
-
-        /// <summary>
-        /// Returns all the specified region profiles within coordates -- coordinates are inclusive
-        /// </summary>
-        /// <param name="xmin">Minimum X coordinate</param>
-        /// <param name="ymin">Minimum Y coordinate</param>
-        /// <param name="xmax">Maximum X coordinate</param>
-        /// <param name="ymax">Maximum Y coordinate</param>
-        /// <returns></returns>
-        public SimProfileData[] GetProfilesInRange(uint xmin, uint ymin, uint xmax, uint ymax)
-        {
-            try
-            {
-                lock (database)
-                {
-                    Dictionary<string, string> param = new Dictionary<string, string>();
-                    param["?xmin"] = xmin.ToString();
-                    param["?ymin"] = ymin.ToString();
-                    param["?xmax"] = xmax.ToString();
-                    param["?ymax"] = ymax.ToString();
-
-                    IDbCommand result = database.Query("SELECT * FROM regions WHERE locX >= ?xmin AND locX <= ?xmax AND locY >= ?ymin AND locY <= ?ymax", param);
-                    IDataReader reader = result.ExecuteReader();
-
-                    SimProfileData row;
-
-                    List<SimProfileData> rows = new List<SimProfileData>();
-
-                    while ((row = database.readSimRow(reader)) != null)
-                    {
-                        rows.Add(row);
-                    }
-                    reader.Close();
-                    result.Dispose();
-
-                    return rows.ToArray();
-
-                }
-            }
-            catch (Exception e)
-            {
-                database.Reconnect();
-                Console.WriteLine(e.ToString());
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Returns a sim profile from it's location
-        /// </summary>
-        /// <param name="handle">Region location handle</param>
-        /// <returns>Sim profile</returns>
-        public SimProfileData GetProfileByHandle(ulong handle)
-        {
-            try
-            {
-                lock (database)
-                {
-                    Dictionary<string, string> param = new Dictionary<string, string>();
-                    param["?handle"] = handle.ToString();
-
-                    IDbCommand result = database.Query("SELECT * FROM regions WHERE regionHandle = ?handle", param);
-                    IDataReader reader = result.ExecuteReader();
-
-                    SimProfileData row = database.readSimRow(reader);
-                    reader.Close();
-                    result.Dispose();
-
-                    return row;
-                }
-            }
-            catch (Exception e)
-            {
-                database.Reconnect();
-                Console.WriteLine(e.ToString());
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Returns a sim profile from it's UUID
-        /// </summary>
-        /// <param name="uuid">The region UUID</param>
-        /// <returns>The sim profile</returns>
-        public SimProfileData GetProfileByLLUUID(LLUUID uuid)
-        {
-            try
-            {
-                lock (database)
-                {
-                    Dictionary<string, string> param = new Dictionary<string, string>();
-                    param["?uuid"] = uuid.ToStringHyphenated();
-
-                    IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = ?uuid", param);
-                    IDataReader reader = result.ExecuteReader();
-
-                    SimProfileData row = database.readSimRow(reader);
-                    reader.Close();
-                    result.Dispose();
-
-                    return row;
-                }
-            }
-            catch (Exception e)
-            {
-                database.Reconnect();
-                Console.WriteLine(e.ToString());
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Adds a new profile to the database
-        /// </summary>
-        /// <param name="profile">The profile to add</param>
-        /// <returns>Successful?</returns>
-        public DataResponse AddProfile(SimProfileData profile)
-        {
-            lock (database)
-            {
-                if (database.insertRegion(profile))
-                {
-                    return DataResponse.RESPONSE_OK;
-                }
-                else
-                {
-                    return DataResponse.RESPONSE_ERROR;
-                }
-            }
-        }
-
-        /// <summary>
-        /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
-        /// </summary>
-        /// <param name="uuid">The UUID of the challenger</param>
-        /// <param name="handle">The attempted regionHandle of the challenger</param>
-        /// <param name="authkey">The secret</param>
-        /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
-        public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey)
-        {
-            bool throwHissyFit = false; // Should be true by 1.0
-
-            if (throwHissyFit)
-                throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
-
-            SimProfileData data = GetProfileByLLUUID(uuid);
-
-            return (handle == data.regionHandle && authkey == data.regionSecret);
-        }
-
-        /// <summary>
-        /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
-        /// </summary>
-        /// <remarks>This requires a security audit.</remarks>
-        /// <param name="uuid"></param>
-        /// <param name="handle"></param>
-        /// <param name="authhash"></param>
-        /// <param name="challenge"></param>
-        /// <returns></returns>
-        public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge)
-        {
-            SHA512Managed HashProvider = new SHA512Managed();
-            ASCIIEncoding TextProvider = new ASCIIEncoding();
-
-            byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
-            byte[] hash = HashProvider.ComputeHash(stream);
-
-            return false;
-        }
-
-        public ReservationData GetReservationAtPoint(uint x, uint y)
-        {
-            try
-            {
-                lock (database)
-                {
-                    Dictionary<string, string> param = new Dictionary<string, string>();
-                    param["?x"] = x.ToString();
-                    param["?y"] = y.ToString();
-                    IDbCommand result = database.Query("SELECT * FROM reservations WHERE resXMin <= ?x AND resXMax >= ?x AND resYMin <= ?y AND resYMax >= ?y", param);
-                    IDataReader reader = result.ExecuteReader();
-
-                    ReservationData row = database.readReservationRow(reader);
-                    reader.Close();
-                    result.Dispose();
-
-                    return row;
-                }
-            }
-            catch (Exception e)
-            {
-                database.Reconnect();
-                Console.WriteLine(e.ToString());
-                return null;
-            }
-        }
-    }
-
-
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Security.Cryptography;
+using System.Text;
+using libsecondlife;
+
+namespace OpenSim.Framework.Data.MySQL
+{
+    /// <summary>
+    /// A MySQL Interface for the Grid Server
+    /// </summary>
+    public class MySQLGridData : IGridData
+    {
+        /// <summary>
+        /// MySQL Database Manager
+        /// </summary>
+        private MySQLManager database;
+
+        /// <summary>
+        /// Initialises the Grid Interface
+        /// </summary>
+        public void Initialise()
+        {
+            IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
+            string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
+            string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
+            string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
+            string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
+            string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
+            string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
+
+            database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
+        }
+
+        /// <summary>
+        /// Shuts down the grid interface
+        /// </summary>
+        public void Close()
+        {
+            database.Close();
+        }
+
+        /// <summary>
+        /// Returns the plugin name
+        /// </summary>
+        /// <returns>Plugin name</returns>
+        public string getName()
+        {
+            return "MySql OpenGridData";
+        }
+
+        /// <summary>
+        /// Returns the plugin version
+        /// </summary>
+        /// <returns>Plugin version</returns>
+        public string getVersion()
+        {
+            return "0.1";
+        }
+
+        /// <summary>
+        /// Returns all the specified region profiles within coordates -- coordinates are inclusive
+        /// </summary>
+        /// <param name="xmin">Minimum X coordinate</param>
+        /// <param name="ymin">Minimum Y coordinate</param>
+        /// <param name="xmax">Maximum X coordinate</param>
+        /// <param name="ymax">Maximum Y coordinate</param>
+        /// <returns></returns>
+        public SimProfileData[] GetProfilesInRange(uint xmin, uint ymin, uint xmax, uint ymax)
+        {
+            try
+            {
+                lock (database)
+                {
+                    Dictionary<string, string> param = new Dictionary<string, string>();
+                    param["?xmin"] = xmin.ToString();
+                    param["?ymin"] = ymin.ToString();
+                    param["?xmax"] = xmax.ToString();
+                    param["?ymax"] = ymax.ToString();
+
+                    IDbCommand result = database.Query("SELECT * FROM regions WHERE locX >= ?xmin AND locX <= ?xmax AND locY >= ?ymin AND locY <= ?ymax", param);
+                    IDataReader reader = result.ExecuteReader();
+
+                    SimProfileData row;
+
+                    List<SimProfileData> rows = new List<SimProfileData>();
+
+                    while ((row = database.readSimRow(reader)) != null)
+                    {
+                        rows.Add(row);
+                    }
+                    reader.Close();
+                    result.Dispose();
+
+                    return rows.ToArray();
+
+                }
+            }
+            catch (Exception e)
+            {
+                database.Reconnect();
+                Console.WriteLine(e.ToString());
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Returns a sim profile from it's location
+        /// </summary>
+        /// <param name="handle">Region location handle</param>
+        /// <returns>Sim profile</returns>
+        public SimProfileData GetProfileByHandle(ulong handle)
+        {
+            try
+            {
+                lock (database)
+                {
+                    Dictionary<string, string> param = new Dictionary<string, string>();
+                    param["?handle"] = handle.ToString();
+
+                    IDbCommand result = database.Query("SELECT * FROM regions WHERE regionHandle = ?handle", param);
+                    IDataReader reader = result.ExecuteReader();
+
+                    SimProfileData row = database.readSimRow(reader);
+                    reader.Close();
+                    result.Dispose();
+
+                    return row;
+                }
+            }
+            catch (Exception e)
+            {
+                database.Reconnect();
+                Console.WriteLine(e.ToString());
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Returns a sim profile from it's UUID
+        /// </summary>
+        /// <param name="uuid">The region UUID</param>
+        /// <returns>The sim profile</returns>
+        public SimProfileData GetProfileByLLUUID(LLUUID uuid)
+        {
+            try
+            {
+                lock (database)
+                {
+                    Dictionary<string, string> param = new Dictionary<string, string>();
+                    param["?uuid"] = uuid.ToStringHyphenated();
+
+                    IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = ?uuid", param);
+                    IDataReader reader = result.ExecuteReader();
+
+                    SimProfileData row = database.readSimRow(reader);
+                    reader.Close();
+                    result.Dispose();
+
+                    return row;
+                }
+            }
+            catch (Exception e)
+            {
+                database.Reconnect();
+                Console.WriteLine(e.ToString());
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Adds a new profile to the database
+        /// </summary>
+        /// <param name="profile">The profile to add</param>
+        /// <returns>Successful?</returns>
+        public DataResponse AddProfile(SimProfileData profile)
+        {
+            lock (database)
+            {
+                if (database.insertRegion(profile))
+                {
+                    return DataResponse.RESPONSE_OK;
+                }
+                else
+                {
+                    return DataResponse.RESPONSE_ERROR;
+                }
+            }
+        }
+
+        /// <summary>
+        /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
+        /// </summary>
+        /// <param name="uuid">The UUID of the challenger</param>
+        /// <param name="handle">The attempted regionHandle of the challenger</param>
+        /// <param name="authkey">The secret</param>
+        /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
+        public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey)
+        {
+            bool throwHissyFit = false; // Should be true by 1.0
+
+            if (throwHissyFit)
+                throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
+
+            SimProfileData data = GetProfileByLLUUID(uuid);
+
+            return (handle == data.regionHandle && authkey == data.regionSecret);
+        }
+
+        /// <summary>
+        /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
+        /// </summary>
+        /// <remarks>This requires a security audit.</remarks>
+        /// <param name="uuid"></param>
+        /// <param name="handle"></param>
+        /// <param name="authhash"></param>
+        /// <param name="challenge"></param>
+        /// <returns></returns>
+        public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge)
+        {
+            SHA512Managed HashProvider = new SHA512Managed();
+            ASCIIEncoding TextProvider = new ASCIIEncoding();
+
+            byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
+            byte[] hash = HashProvider.ComputeHash(stream);
+
+            return false;
+        }
+
+        public ReservationData GetReservationAtPoint(uint x, uint y)
+        {
+            try
+            {
+                lock (database)
+                {
+                    Dictionary<string, string> param = new Dictionary<string, string>();
+                    param["?x"] = x.ToString();
+                    param["?y"] = y.ToString();
+                    IDbCommand result = database.Query("SELECT * FROM reservations WHERE resXMin <= ?x AND resXMax >= ?x AND resYMin <= ?y AND resYMax >= ?y", param);
+                    IDataReader reader = result.ExecuteReader();
+
+                    ReservationData row = database.readReservationRow(reader);
+                    reader.Close();
+                    result.Dispose();
+
+                    return row;
+                }
+            }
+            catch (Exception e)
+            {
+                database.Reconnect();
+                Console.WriteLine(e.ToString());
+                return null;
+            }
+        }
+    }
+
+
+}

+ 309 - 309
OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs

@@ -1,309 +1,309 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections.Generic;
-using System.Data;
-using libsecondlife;
-
-namespace OpenSim.Framework.Data.MySQL
-{
-    /// <summary>
-    /// A MySQL interface for the inventory server
-    /// </summary>
-    class MySQLInventoryData : IInventoryData
-    {
-        /// <summary>
-        /// The database manager
-        /// </summary>
-        public MySQLManager database;
-
-        /// <summary>
-        /// Loads and initialises this database plugin
-        /// </summary>
-        public void Initialise()
-        {
-            IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
-            string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
-            string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
-            string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
-            string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
-            string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
-            string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
-
-            database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
-        }
-        
-        /// <summary>
-        /// The name of this DB provider
-        /// </summary>
-        /// <returns>Name of DB provider</returns>
-        public string getName()
-        {
-            return "MySQL Inventory Data Interface";
-        }
-
-        /// <summary>
-        /// Closes this DB provider
-        /// </summary>
-        public void Close()
-        {
-            // Do nothing.
-        }
-
-        /// <summary>
-        /// Returns the version of this DB provider
-        /// </summary>
-        /// <returns>A string containing the DB provider</returns>
-        public string getVersion()
-        {
-            return "0.1";
-        }
-
-        /// <summary>
-        /// Returns a list of items in a specified folder
-        /// </summary>
-        /// <param name="folderID">The folder to search</param>
-        /// <returns>A list containing inventory items</returns>
-        public List<InventoryItemBase> getInventoryInFolder(LLUUID folderID)
-        {
-            try
-            {
-                lock (database)
-                {
-                    Dictionary<string, string> param = new Dictionary<string, string>();
-                    param["?uuid"] = folderID.ToStringHyphenated();
-
-                    IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE parentFolderID = ?uuid", param);
-                    IDataReader reader = result.ExecuteReader();
-
-                    List<InventoryItemBase> items = database.readInventoryItems(reader);
-
-                    reader.Close();
-                    result.Dispose();
-
-                    return items;
-                }
-            }
-            catch (Exception e)
-            {
-                database.Reconnect();
-                Console.WriteLine(e.ToString());
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Returns a list of the root folders within a users inventory
-        /// </summary>
-        /// <param name="user">The user whos inventory is to be searched</param>
-        /// <returns>A list of folder objects</returns>
-        public List<InventoryFolderBase> getUserRootFolders(LLUUID user)
-        {
-            try
-            {
-                lock (database)
-                {
-                    Dictionary<string, string> param = new Dictionary<string, string>();
-                    param["?uuid"] = user.ToStringHyphenated();
-                    param["?zero"] = LLUUID.Zero.ToStringHyphenated();
-
-                    IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?zero AND agentID = ?uuid", param);
-                    IDataReader reader = result.ExecuteReader();
-
-                    List<InventoryFolderBase> items = database.readInventoryFolders(reader);
-
-                    reader.Close();
-                    result.Dispose();
-
-                    return items;
-                }
-            }
-            catch (Exception e)
-            {
-                database.Reconnect();
-                Console.WriteLine(e.ToString());
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Returns a list of folders in a users inventory contained within the specified folder
-        /// </summary>
-        /// <param name="parentID">The folder to search</param>
-        /// <returns>A list of inventory folders</returns>
-        public List<InventoryFolderBase> getInventoryFolders(LLUUID parentID)
-        {
-            try
-            {
-                lock (database)
-                {
-                    Dictionary<string, string> param = new Dictionary<string, string>();
-                    param["?uuid"] = parentID.ToStringHyphenated();
-
-                    IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?uuid", param);
-                    IDataReader reader = result.ExecuteReader();
-
-                    List<InventoryFolderBase> items = database.readInventoryFolders(reader);
-
-                    reader.Close();
-                    result.Dispose();
-
-                    return items;
-                }
-            }
-            catch (Exception e)
-            {
-                database.Reconnect();
-                Console.WriteLine(e.ToString());
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Returns a specified inventory item
-        /// </summary>
-        /// <param name="item">The item to return</param>
-        /// <returns>An inventory item</returns>
-        public InventoryItemBase getInventoryItem(LLUUID item)
-        {
-            try
-            {
-                lock (database)
-                {
-                    Dictionary<string, string> param = new Dictionary<string, string>();
-                    param["?uuid"] = item.ToStringHyphenated();
-
-                    IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE inventoryID = ?uuid", param);
-                    IDataReader reader = result.ExecuteReader();
-
-                    List<InventoryItemBase> items = database.readInventoryItems(reader);
-
-                    reader.Close();
-                    result.Dispose();
-
-                    if (items.Count > 0)
-                    {
-                        return items[0];
-                    }
-                    else
-                    {
-                        return null;
-                    }
-                }
-            }
-            catch (Exception e)
-            {
-                database.Reconnect();
-                Console.WriteLine(e.ToString());
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Returns a specified inventory folder
-        /// </summary>
-        /// <param name="folder">The folder to return</param>
-        /// <returns>A folder class</returns>
-        public InventoryFolderBase getInventoryFolder(LLUUID folder)
-        {
-            try
-            {
-                lock (database)
-                {
-                    Dictionary<string, string> param = new Dictionary<string, string>();
-                    param["?uuid"] = folder.ToStringHyphenated();
-
-                    IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE folderID = ?uuid", param);
-                    IDataReader reader = result.ExecuteReader();
-
-                    List<InventoryFolderBase> items = database.readInventoryFolders(reader);
-
-                    reader.Close();
-                    result.Dispose();
-
-                    if (items.Count > 0)
-                    {
-                        return items[0];
-                    }
-                    else
-                    {
-                        return null;
-                    }
-                }
-            }
-            catch (Exception e)
-            {
-                database.Reconnect();
-                Console.WriteLine(e.ToString());
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Adds a specified item to the database
-        /// </summary>
-        /// <param name="item">The inventory item</param>
-        public void addInventoryItem(InventoryItemBase item)
-        {
-            lock (database)
-            {
-                database.insertItem(item);
-            }
-        }
-
-        /// <summary>
-        /// Updates the specified inventory item
-        /// </summary>
-        /// <param name="item">Inventory item to update</param>
-        public void updateInventoryItem(InventoryItemBase item)
-        {
-            addInventoryItem(item);
-        }
-
-        /// <summary>
-        /// Creates a new inventory folder
-        /// </summary>
-        /// <param name="folder">Folder to create</param>
-        public void addInventoryFolder(InventoryFolderBase folder)
-        {
-            lock (database)
-            {
-                database.insertFolder(folder);
-            }
-        }
-
-        /// <summary>
-        /// Updates an inventory folder
-        /// </summary>
-        /// <param name="folder">Folder to update</param>
-        public void updateInventoryFolder(InventoryFolderBase folder)
-        {
-            addInventoryFolder(folder);
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Collections.Generic;
+using System.Data;
+using libsecondlife;
+
+namespace OpenSim.Framework.Data.MySQL
+{
+    /// <summary>
+    /// A MySQL interface for the inventory server
+    /// </summary>
+    class MySQLInventoryData : IInventoryData
+    {
+        /// <summary>
+        /// The database manager
+        /// </summary>
+        public MySQLManager database;
+
+        /// <summary>
+        /// Loads and initialises this database plugin
+        /// </summary>
+        public void Initialise()
+        {
+            IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
+            string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
+            string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
+            string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
+            string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
+            string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
+            string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
+
+            database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
+        }
+        
+        /// <summary>
+        /// The name of this DB provider
+        /// </summary>
+        /// <returns>Name of DB provider</returns>
+        public string getName()
+        {
+            return "MySQL Inventory Data Interface";
+        }
+
+        /// <summary>
+        /// Closes this DB provider
+        /// </summary>
+        public void Close()
+        {
+            // Do nothing.
+        }
+
+        /// <summary>
+        /// Returns the version of this DB provider
+        /// </summary>
+        /// <returns>A string containing the DB provider</returns>
+        public string getVersion()
+        {
+            return "0.1";
+        }
+
+        /// <summary>
+        /// Returns a list of items in a specified folder
+        /// </summary>
+        /// <param name="folderID">The folder to search</param>
+        /// <returns>A list containing inventory items</returns>
+        public List<InventoryItemBase> getInventoryInFolder(LLUUID folderID)
+        {
+            try
+            {
+                lock (database)
+                {
+                    Dictionary<string, string> param = new Dictionary<string, string>();
+                    param["?uuid"] = folderID.ToStringHyphenated();
+
+                    IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE parentFolderID = ?uuid", param);
+                    IDataReader reader = result.ExecuteReader();
+
+                    List<InventoryItemBase> items = database.readInventoryItems(reader);
+
+                    reader.Close();
+                    result.Dispose();
+
+                    return items;
+                }
+            }
+            catch (Exception e)
+            {
+                database.Reconnect();
+                Console.WriteLine(e.ToString());
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Returns a list of the root folders within a users inventory
+        /// </summary>
+        /// <param name="user">The user whos inventory is to be searched</param>
+        /// <returns>A list of folder objects</returns>
+        public List<InventoryFolderBase> getUserRootFolders(LLUUID user)
+        {
+            try
+            {
+                lock (database)
+                {
+                    Dictionary<string, string> param = new Dictionary<string, string>();
+                    param["?uuid"] = user.ToStringHyphenated();
+                    param["?zero"] = LLUUID.Zero.ToStringHyphenated();
+
+                    IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?zero AND agentID = ?uuid", param);
+                    IDataReader reader = result.ExecuteReader();
+
+                    List<InventoryFolderBase> items = database.readInventoryFolders(reader);
+
+                    reader.Close();
+                    result.Dispose();
+
+                    return items;
+                }
+            }
+            catch (Exception e)
+            {
+                database.Reconnect();
+                Console.WriteLine(e.ToString());
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Returns a list of folders in a users inventory contained within the specified folder
+        /// </summary>
+        /// <param name="parentID">The folder to search</param>
+        /// <returns>A list of inventory folders</returns>
+        public List<InventoryFolderBase> getInventoryFolders(LLUUID parentID)
+        {
+            try
+            {
+                lock (database)
+                {
+                    Dictionary<string, string> param = new Dictionary<string, string>();
+                    param["?uuid"] = parentID.ToStringHyphenated();
+
+                    IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?uuid", param);
+                    IDataReader reader = result.ExecuteReader();
+
+                    List<InventoryFolderBase> items = database.readInventoryFolders(reader);
+
+                    reader.Close();
+                    result.Dispose();
+
+                    return items;
+                }
+            }
+            catch (Exception e)
+            {
+                database.Reconnect();
+                Console.WriteLine(e.ToString());
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Returns a specified inventory item
+        /// </summary>
+        /// <param name="item">The item to return</param>
+        /// <returns>An inventory item</returns>
+        public InventoryItemBase getInventoryItem(LLUUID item)
+        {
+            try
+            {
+                lock (database)
+                {
+                    Dictionary<string, string> param = new Dictionary<string, string>();
+                    param["?uuid"] = item.ToStringHyphenated();
+
+                    IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE inventoryID = ?uuid", param);
+                    IDataReader reader = result.ExecuteReader();
+
+                    List<InventoryItemBase> items = database.readInventoryItems(reader);
+
+                    reader.Close();
+                    result.Dispose();
+
+                    if (items.Count > 0)
+                    {
+                        return items[0];
+                    }
+                    else
+                    {
+                        return null;
+                    }
+                }
+            }
+            catch (Exception e)
+            {
+                database.Reconnect();
+                Console.WriteLine(e.ToString());
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Returns a specified inventory folder
+        /// </summary>
+        /// <param name="folder">The folder to return</param>
+        /// <returns>A folder class</returns>
+        public InventoryFolderBase getInventoryFolder(LLUUID folder)
+        {
+            try
+            {
+                lock (database)
+                {
+                    Dictionary<string, string> param = new Dictionary<string, string>();
+                    param["?uuid"] = folder.ToStringHyphenated();
+
+                    IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE folderID = ?uuid", param);
+                    IDataReader reader = result.ExecuteReader();
+
+                    List<InventoryFolderBase> items = database.readInventoryFolders(reader);
+
+                    reader.Close();
+                    result.Dispose();
+
+                    if (items.Count > 0)
+                    {
+                        return items[0];
+                    }
+                    else
+                    {
+                        return null;
+                    }
+                }
+            }
+            catch (Exception e)
+            {
+                database.Reconnect();
+                Console.WriteLine(e.ToString());
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Adds a specified item to the database
+        /// </summary>
+        /// <param name="item">The inventory item</param>
+        public void addInventoryItem(InventoryItemBase item)
+        {
+            lock (database)
+            {
+                database.insertItem(item);
+            }
+        }
+
+        /// <summary>
+        /// Updates the specified inventory item
+        /// </summary>
+        /// <param name="item">Inventory item to update</param>
+        public void updateInventoryItem(InventoryItemBase item)
+        {
+            addInventoryItem(item);
+        }
+
+        /// <summary>
+        /// Creates a new inventory folder
+        /// </summary>
+        /// <param name="folder">Folder to create</param>
+        public void addInventoryFolder(InventoryFolderBase folder)
+        {
+            lock (database)
+            {
+                database.insertFolder(folder);
+            }
+        }
+
+        /// <summary>
+        /// Updates an inventory folder
+        /// </summary>
+        /// <param name="folder">Folder to update</param>
+        public void updateInventoryFolder(InventoryFolderBase folder)
+        {
+            addInventoryFolder(folder);
+        }
+    }
+}

+ 105 - 105
OpenSim/Framework/Data.MySQL/MySQLLogData.cs

@@ -1,105 +1,105 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-
-namespace OpenSim.Framework.Data.MySQL
-{
-    /// <summary>
-    /// An interface to the log database for MySQL
-    /// </summary>
-    class MySQLLogData : ILogData
-    {
-        /// <summary>
-        /// The database manager
-        /// </summary>
-        public MySQLManager database;
-
-        /// <summary>
-        /// Artificial constructor called when the plugin is loaded
-        /// </summary>
-        public void Initialise()
-        {
-            IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
-            string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
-            string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
-            string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
-            string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
-            string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
-            string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
-
-            database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
-        }
-
-        /// <summary>
-        /// Saves a log item to the database
-        /// </summary>
-        /// <param name="serverDaemon">The daemon triggering the event</param>
-        /// <param name="target">The target of the action (region / agent UUID, etc)</param>
-        /// <param name="methodCall">The method call where the problem occured</param>
-        /// <param name="arguments">The arguments passed to the method</param>
-        /// <param name="priority">How critical is this?</param>
-        /// <param name="logMessage">The message to log</param>
-        public void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage)
-        {
-            try
-            {
-                database.insertLogRow(serverDaemon, target, methodCall, arguments, priority, logMessage);
-            }
-            catch
-            {
-                database.Reconnect();
-            }
-        }
-
-        /// <summary>
-        /// Returns the name of this DB provider
-        /// </summary>
-        /// <returns>A string containing the DB provider name</returns>
-        public string getName()
-        {
-            return "MySQL Logdata Interface";
-        }
-
-        /// <summary>
-        /// Closes the database provider
-        /// </summary>
-        public void Close()
-        {
-            // Do nothing.
-        }
-
-        /// <summary>
-        /// Returns the version of this DB provider
-        /// </summary>
-        /// <returns>A string containing the provider version</returns>
-        public string getVersion()
-        {
-            return "0.1";
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+
+namespace OpenSim.Framework.Data.MySQL
+{
+    /// <summary>
+    /// An interface to the log database for MySQL
+    /// </summary>
+    class MySQLLogData : ILogData
+    {
+        /// <summary>
+        /// The database manager
+        /// </summary>
+        public MySQLManager database;
+
+        /// <summary>
+        /// Artificial constructor called when the plugin is loaded
+        /// </summary>
+        public void Initialise()
+        {
+            IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
+            string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
+            string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
+            string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
+            string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
+            string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
+            string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
+
+            database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
+        }
+
+        /// <summary>
+        /// Saves a log item to the database
+        /// </summary>
+        /// <param name="serverDaemon">The daemon triggering the event</param>
+        /// <param name="target">The target of the action (region / agent UUID, etc)</param>
+        /// <param name="methodCall">The method call where the problem occured</param>
+        /// <param name="arguments">The arguments passed to the method</param>
+        /// <param name="priority">How critical is this?</param>
+        /// <param name="logMessage">The message to log</param>
+        public void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage)
+        {
+            try
+            {
+                database.insertLogRow(serverDaemon, target, methodCall, arguments, priority, logMessage);
+            }
+            catch
+            {
+                database.Reconnect();
+            }
+        }
+
+        /// <summary>
+        /// Returns the name of this DB provider
+        /// </summary>
+        /// <returns>A string containing the DB provider name</returns>
+        public string getName()
+        {
+            return "MySQL Logdata Interface";
+        }
+
+        /// <summary>
+        /// Closes the database provider
+        /// </summary>
+        public void Close()
+        {
+            // Do nothing.
+        }
+
+        /// <summary>
+        /// Returns the version of this DB provider
+        /// </summary>
+        /// <returns>A string containing the provider version</returns>
+        public string getVersion()
+        {
+            return "0.1";
+        }
+    }
+}

+ 606 - 606
OpenSim/Framework/Data.MySQL/MySQLManager.cs

@@ -1,606 +1,606 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections.Generic;
-using System.Data;
-using libsecondlife;
-using MySql.Data.MySqlClient;
-
-namespace OpenSim.Framework.Data.MySQL
-{
-    /// <summary>
-    /// A MySQL Database manager
-    /// </summary>
-    class MySQLManager
-    {
-        /// <summary>
-        /// The database connection object
-        /// </summary>
-        IDbConnection dbcon;
-        /// <summary>
-        /// Connection string for ADO.net
-        /// </summary>
-        string connectionString;
-
-        /// <summary>
-        /// Initialises and creates a new MySQL connection and maintains it.
-        /// </summary>
-        /// <param name="hostname">The MySQL server being connected to</param>
-        /// <param name="database">The name of the MySQL database being used</param>
-        /// <param name="username">The username logging into the database</param>
-        /// <param name="password">The password for the user logging in</param>
-        /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param>
-        public MySQLManager(string hostname, string database, string username, string password, string cpooling, string port)
-        {
-            try
-            {
-                connectionString = "Server=" + hostname + ";Port=" + port + ";Database=" + database + ";User ID=" + username + ";Password=" + password + ";Pooling=" + cpooling + ";";
-                dbcon = new MySqlConnection(connectionString);
-
-                dbcon.Open();
-
-                Console.WriteLine("MySQL connection established");
-            }
-            catch (Exception e)
-            {
-                throw new Exception("Error initialising MySql Database: " + e.ToString());
-            }
-        }
-
-        /// <summary>
-        /// Shuts down the database connection
-        /// </summary>
-        public void Close()
-        {
-            dbcon.Close();
-            dbcon = null;
-        }
-
-        /// <summary>
-        /// Reconnects to the database
-        /// </summary>
-        public void Reconnect()
-        {
-            lock (dbcon)
-            {
-                try
-                {
-                    // Close the DB connection
-                    dbcon.Close();
-                    // Try reopen it
-                    dbcon = new MySqlConnection(connectionString);
-                    dbcon.Open();
-                }
-                catch (Exception e)
-                {
-                    Console.WriteLine("Unable to reconnect to database " + e.ToString());
-                }
-            }
-        }
-
-        /// <summary>
-        /// Runs a query with protection against SQL Injection by using parameterised input.
-        /// </summary>
-        /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param>
-        /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param>
-        /// <returns>A MySQL DB Command</returns>
-        public IDbCommand Query(string sql, Dictionary<string, string> parameters)
-        {
-            try
-            {
-                MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand();
-                dbcommand.CommandText = sql;
-                foreach (KeyValuePair<string, string> param in parameters)
-                {
-                    dbcommand.Parameters.Add(param.Key, param.Value);
-                }
-
-                return (IDbCommand)dbcommand;
-            }
-            catch
-            {
-                lock (dbcon)
-                {
-                    // Close the DB connection
-                    try
-                    {
-                        dbcon.Close();
-                    }
-                    catch { }
-
-                    // Try reopen it
-                    try
-                    {
-                        dbcon = new MySqlConnection(connectionString);
-                        dbcon.Open();
-                    }
-                    catch (Exception e)
-                    {
-                        Console.WriteLine("Unable to reconnect to database " + e.ToString());
-                    }
-
-                    // Run the query again
-                    try
-                    {
-                        MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand();
-                        dbcommand.CommandText = sql;
-                        foreach (KeyValuePair<string, string> param in parameters)
-                        {
-                            dbcommand.Parameters.Add(param.Key, param.Value);
-                        }
-
-                        return (IDbCommand)dbcommand;
-                    }
-                    catch (Exception e)
-                    {
-                        // Return null if it fails.
-                        Console.WriteLine("Failed during Query generation: " + e.ToString());
-                        return null;
-                    }
-                }
-            }
-        }
-
-        /// <summary>
-        /// Reads a region row from a database reader
-        /// </summary>
-        /// <param name="reader">An active database reader</param>
-        /// <returns>A region profile</returns>
-        public SimProfileData readSimRow(IDataReader reader)
-        {
-            SimProfileData retval = new SimProfileData();
-
-            if (reader.Read())
-            {
-                // Region Main
-                retval.regionHandle = Convert.ToUInt64(reader["regionHandle"].ToString());
-                retval.regionName = (string)reader["regionName"];
-                retval.UUID = new LLUUID((string)reader["uuid"]);
-
-                // Secrets
-                retval.regionRecvKey = (string)reader["regionRecvKey"];
-                retval.regionSecret = (string)reader["regionSecret"];
-                retval.regionSendKey = (string)reader["regionSendKey"];
-
-                // Region Server
-                retval.regionDataURI = (string)reader["regionDataURI"];
-                retval.regionOnline = false; // Needs to be pinged before this can be set.
-                retval.serverIP = (string)reader["serverIP"];
-                retval.serverPort = (uint)reader["serverPort"];
-                retval.serverURI = (string)reader["serverURI"];
-                retval.httpPort = Convert.ToUInt32(reader["serverHttpPort"].ToString());
-                retval.remotingPort = Convert.ToUInt32(reader["serverRemotingPort"].ToString());
-
-                // Location
-                retval.regionLocX = Convert.ToUInt32(reader["locX"].ToString());
-                retval.regionLocY = Convert.ToUInt32(reader["locY"].ToString());
-                retval.regionLocZ = Convert.ToUInt32(reader["locZ"].ToString());
-
-                // Neighbours - 0 = No Override
-                retval.regionEastOverrideHandle = Convert.ToUInt64(reader["eastOverrideHandle"].ToString());
-                retval.regionWestOverrideHandle = Convert.ToUInt64(reader["westOverrideHandle"].ToString());
-                retval.regionSouthOverrideHandle = Convert.ToUInt64(reader["southOverrideHandle"].ToString());
-                retval.regionNorthOverrideHandle = Convert.ToUInt64(reader["northOverrideHandle"].ToString());
-
-                // Assets
-                retval.regionAssetURI = (string)reader["regionAssetURI"];
-                retval.regionAssetRecvKey = (string)reader["regionAssetRecvKey"];
-                retval.regionAssetSendKey = (string)reader["regionAssetSendKey"];
-
-                // Userserver
-                retval.regionUserURI = (string)reader["regionUserURI"];
-                retval.regionUserRecvKey = (string)reader["regionUserRecvKey"];
-                retval.regionUserSendKey = (string)reader["regionUserSendKey"];
-
-                // World Map Addition
-                string tempRegionMap = reader["regionMapTexture"].ToString();
-                if (tempRegionMap != "")
-                {
-                    retval.regionMapTextureID = new LLUUID(tempRegionMap);
-                }
-                else
-                {
-                    retval.regionMapTextureID = new LLUUID();
-                }
-            }
-            else
-            {
-                return null;
-            }
-            return retval;
-        }
-
-        /// <summary>
-        /// Reads a reservation row from a database reader
-        /// </summary>
-        /// <param name="reader">An active database reader</param>
-        /// <returns>A reservation data object</returns>
-        public ReservationData readReservationRow(IDataReader reader)
-        {
-            ReservationData retval = new ReservationData();
-            if (reader.Read())
-            {
-                retval.gridRecvKey = (string)reader["gridRecvKey"];
-                retval.gridSendKey = (string)reader["gridSendKey"];
-                retval.reservationCompany = (string)reader["resCompany"];
-                retval.reservationMaxX = Convert.ToInt32(reader["resXMax"].ToString());
-                retval.reservationMaxY = Convert.ToInt32(reader["resYMax"].ToString());
-                retval.reservationMinX = Convert.ToInt32(reader["resXMin"].ToString());
-                retval.reservationMinY = Convert.ToInt32(reader["resYMin"].ToString());
-                retval.reservationName = (string)reader["resName"];
-                retval.status = Convert.ToInt32(reader["status"].ToString()) == 1;
-                retval.userUUID = new LLUUID((string)reader["userUUID"]);
-
-            }
-            else
-            {
-                return null;
-            }
-            return retval;
-        }
-        /// <summary>
-        /// Reads an agent row from a database reader
-        /// </summary>
-        /// <param name="reader">An active database reader</param>
-        /// <returns>A user session agent</returns>
-        public UserAgentData readAgentRow(IDataReader reader)
-        {
-            UserAgentData retval = new UserAgentData();
-
-            if (reader.Read())
-            {
-                // Agent IDs
-                retval.UUID = new LLUUID((string)reader["UUID"]);
-                retval.sessionID = new LLUUID((string)reader["sessionID"]);
-                retval.secureSessionID = new LLUUID((string)reader["secureSessionID"]);
-
-                // Agent Who?
-                retval.agentIP = (string)reader["agentIP"];
-                retval.agentPort = Convert.ToUInt32(reader["agentPort"].ToString());
-                retval.agentOnline = Convert.ToBoolean(reader["agentOnline"].ToString());
-
-                // Login/Logout times (UNIX Epoch)
-                retval.loginTime = Convert.ToInt32(reader["loginTime"].ToString());
-                retval.logoutTime = Convert.ToInt32(reader["logoutTime"].ToString());
-
-                // Current position
-                retval.currentRegion = (string)reader["currentRegion"];
-                retval.currentHandle = Convert.ToUInt64(reader["currentHandle"].ToString());
-                LLVector3.TryParse((string)reader["currentPos"], out retval.currentPos);
-            }
-            else
-            {
-                return null;
-            }
-            return retval;
-        }
-
-        /// <summary>
-        /// Reads a user profile from an active data reader
-        /// </summary>
-        /// <param name="reader">An active database reader</param>
-        /// <returns>A user profile</returns>
-        public UserProfileData readUserRow(IDataReader reader)
-        {
-            UserProfileData retval = new UserProfileData();
-
-            if (reader.Read())
-            {
-                retval.UUID = new LLUUID((string)reader["UUID"]);
-                retval.username = (string)reader["username"];
-                retval.surname = (string)reader["lastname"];
-
-                retval.passwordHash = (string)reader["passwordHash"];
-                retval.passwordSalt = (string)reader["passwordSalt"];
-
-                retval.homeRegion = Convert.ToUInt64(reader["homeRegion"].ToString());
-                retval.homeLocation = new LLVector3(
-                    Convert.ToSingle(reader["homeLocationX"].ToString()),
-                    Convert.ToSingle(reader["homeLocationY"].ToString()),
-                    Convert.ToSingle(reader["homeLocationZ"].ToString()));
-                retval.homeLookAt = new LLVector3(
-                    Convert.ToSingle(reader["homeLookAtX"].ToString()),
-                    Convert.ToSingle(reader["homeLookAtY"].ToString()),
-                    Convert.ToSingle(reader["homeLookAtZ"].ToString()));
-
-                retval.created = Convert.ToInt32(reader["created"].ToString());
-                retval.lastLogin = Convert.ToInt32(reader["lastLogin"].ToString());
-
-                retval.userInventoryURI = (string)reader["userInventoryURI"];
-                retval.userAssetURI = (string)reader["userAssetURI"];
-
-                retval.profileCanDoMask = Convert.ToUInt32(reader["profileCanDoMask"].ToString());
-                retval.profileWantDoMask = Convert.ToUInt32(reader["profileWantDoMask"].ToString());
-
-                retval.profileAboutText = (string)reader["profileAboutText"];
-                retval.profileFirstText = (string)reader["profileFirstText"];
-
-                retval.profileImage = new LLUUID((string)reader["profileImage"]);
-                retval.profileFirstImage = new LLUUID((string)reader["profileFirstImage"]);
-
-            }
-            else
-            {
-                return null;
-            }
-            return retval;
-        }
-
-        /// <summary>
-        /// Reads a list of inventory folders returned by a query.
-        /// </summary>
-        /// <param name="reader">A MySQL Data Reader</param>
-        /// <returns>A List containing inventory folders</returns>
-        public List<InventoryFolderBase> readInventoryFolders(IDataReader reader)
-        {
-            List<InventoryFolderBase> rows = new List<InventoryFolderBase>();
-
-            while(reader.Read())
-            {
-                try
-                {
-                    InventoryFolderBase folder = new InventoryFolderBase();
-
-                    folder.agentID = new LLUUID((string)reader["agentID"]);
-                    folder.parentID = new LLUUID((string)reader["parentFolderID"]);
-                    folder.folderID = new LLUUID((string)reader["folderID"]);
-                    folder.name = (string)reader["folderName"];
-
-                    rows.Add(folder);
-                }
-                catch (Exception e)
-                {
-                    Console.WriteLine(e.ToString());
-                }
-            }
-
-            return rows;
-        }
-
-        /// <summary>
-        /// Reads a collection of items from an SQL result
-        /// </summary>
-        /// <param name="reader">The SQL Result</param>
-        /// <returns>A List containing Inventory Items</returns>
-        public List<InventoryItemBase> readInventoryItems(IDataReader reader)
-        {
-            List<InventoryItemBase> rows = new List<InventoryItemBase>();
-
-            while (reader.Read())
-            {
-                try
-                {
-                    InventoryItemBase item = new InventoryItemBase();
-
-                    item.assetID = new LLUUID((string)reader["assetID"]);
-                    item.avatarID = new LLUUID((string)reader["avatarID"]);
-                    item.inventoryCurrentPermissions = Convert.ToUInt32(reader["inventoryCurrentPermissions"].ToString());
-                    item.inventoryDescription = (string)reader["inventoryDescription"];
-                    item.inventoryID = new LLUUID((string)reader["inventoryID"]);
-                    item.inventoryName = (string)reader["inventoryName"];
-                    item.inventoryNextPermissions = Convert.ToUInt32(reader["inventoryNextPermissions"].ToString());
-                    item.parentFolderID = new LLUUID((string)reader["parentFolderID"]);
-                    item.type = Convert.ToInt32(reader["type"].ToString());
-
-                    rows.Add(item);
-                }
-                catch (Exception e)
-                {
-                    Console.WriteLine(e.ToString());
-                }
-            }
-
-            return rows;
-        }
-
-        /// <summary>
-        /// Inserts a new row into the log database
-        /// </summary>
-        /// <param name="serverDaemon">The daemon which triggered this event</param>
-        /// <param name="target">Who were we operating on when this occured (region UUID, user UUID, etc)</param>
-        /// <param name="methodCall">The method call where the problem occured</param>
-        /// <param name="arguments">The arguments passed to the method</param>
-        /// <param name="priority">How critical is this?</param>
-        /// <param name="logMessage">Extra message info</param>
-        /// <returns>Saved successfully?</returns>
-        public bool insertLogRow(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage)
-        {
-            string sql = "INSERT INTO logs (`target`, `server`, `method`, `arguments`, `priority`, `message`) VALUES ";
-            sql += "(?target, ?server, ?method, ?arguments, ?priority, ?message)";
-
-            Dictionary<string, string> parameters = new Dictionary<string, string>();
-            parameters["?server"] = serverDaemon;
-            parameters["?target"] = target;
-            parameters["?method"] = methodCall;
-            parameters["?arguments"] = arguments;
-            parameters["?priority"] = priority.ToString();
-            parameters["?message"] = logMessage;
-
-            bool returnval = false;
-
-            try
-            {
-                IDbCommand result = Query(sql, parameters);
-
-                if (result.ExecuteNonQuery() == 1)
-                    returnval = true;
-
-                result.Dispose();
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine(e.ToString());
-                return false;
-            }
-
-            return returnval;
-        }
-
-        /// <summary>
-        /// Inserts a new item into the database
-        /// </summary>
-        /// <param name="item">The item</param>
-        /// <returns>Success?</returns>
-        public bool insertItem(InventoryItemBase item)
-        {
-            string sql = "REPLACE INTO inventoryitems (inventoryID, assetID, type, parentFolderID, avatarID, inventoryName, inventoryDescription, inventoryNextPermissions, inventoryCurrentPermissions) VALUES ";
-            sql += "(?inventoryID, ?assetID, ?type, ?parentFolderID, ?avatarID, ?inventoryName, ?inventoryDescription, ?inventoryNextPermissions, ?inventoryCurrentPermissions)";
-
-            Dictionary<string, string> parameters = new Dictionary<string, string>();
-            parameters["?inventoryID"] = item.inventoryID.ToStringHyphenated();
-            parameters["?assetID"] = item.assetID.ToStringHyphenated();
-            parameters["?type"] = item.type.ToString();
-            parameters["?parentFolderID"] = item.parentFolderID.ToStringHyphenated();
-            parameters["?avatarID"] = item.avatarID.ToStringHyphenated();
-            parameters["?inventoryName"] = item.inventoryName;
-            parameters["?inventoryDescription"] = item.inventoryDescription;
-            parameters["?inventoryNextPermissions"] = item.inventoryNextPermissions.ToString();
-            parameters["?inventoryCurrentPermissions"] = item.inventoryCurrentPermissions.ToString();
-
-            bool returnval = false;
-
-            try
-            {
-                IDbCommand result = Query(sql, parameters);
-
-                if (result.ExecuteNonQuery() == 1)
-                    returnval = true;
-
-                result.Dispose();
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine(e.ToString());
-                return false;
-            }
-
-            return returnval;
-        }
-
-        /// <summary>
-        /// Inserts a new folder into the database
-        /// </summary>
-        /// <param name="folder">The folder</param>
-        /// <returns>Success?</returns>
-        public bool insertFolder(InventoryFolderBase folder)
-        {
-            string sql = "REPLACE INTO inventoryfolders (folderID, agentID, parentFolderID, folderName) VALUES ";
-            sql += "(?folderID, ?agentID, ?parentFolderID, ?folderName)";
-
-            Dictionary<string, string> parameters = new Dictionary<string, string>();
-            parameters["?folderID"] = folder.folderID.ToStringHyphenated();
-            parameters["?agentID"] = folder.agentID.ToStringHyphenated();
-            parameters["?parentFolderID"] = folder.parentID.ToStringHyphenated();
-            parameters["?folderName"] = folder.name;
-
-            bool returnval = false;
-            try
-            {
-                IDbCommand result = Query(sql, parameters);
-
-                if (result.ExecuteNonQuery() == 1)
-                    returnval = true;
-
-                result.Dispose();
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine(e.ToString());
-                return false;
-            }
-            return returnval;
-        }
-
-        /// <summary>
-        /// Inserts a new region into the database
-        /// </summary>
-        /// <param name="profile">The region to insert</param>
-        /// <returns>Success?</returns>
-        public bool insertRegion(SimProfileData regiondata)
-        {
-            string sql = "REPLACE INTO regions (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, ";
-            sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, ";
-            sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey, regionMapTexture, serverHttpPort, serverRemotingPort) VALUES ";
-
-            sql += "(?regionHandle, ?regionName, ?uuid, ?regionRecvKey, ?regionSecret, ?regionSendKey, ?regionDataURI, ";
-            sql += "?serverIP, ?serverPort, ?serverURI, ?locX, ?locY, ?locZ, ?eastOverrideHandle, ?westOverrideHandle, ?southOverrideHandle, ?northOverrideHandle, ?regionAssetURI, ?regionAssetRecvKey, ";
-            sql += "?regionAssetSendKey, ?regionUserURI, ?regionUserRecvKey, ?regionUserSendKey, ?regionMapTexture, ?serverHttpPort, ?serverRemotingPort);";
-
-            Dictionary<string, string> parameters = new Dictionary<string, string>();
-
-            parameters["?regionHandle"] = regiondata.regionHandle.ToString();
-            parameters["?regionName"] = regiondata.regionName.ToString();
-            parameters["?uuid"] = regiondata.UUID.ToStringHyphenated();
-            parameters["?regionRecvKey"] = regiondata.regionRecvKey.ToString();
-            parameters["?regionSecret"] = regiondata.regionSecret.ToString();
-            parameters["?regionSendKey"] = regiondata.regionSendKey.ToString();
-            parameters["?regionDataURI"] = regiondata.regionDataURI.ToString();
-            parameters["?serverIP"] = regiondata.serverIP.ToString();
-            parameters["?serverPort"] = regiondata.serverPort.ToString();
-            parameters["?serverURI"] = regiondata.serverURI.ToString();
-            parameters["?locX"] = regiondata.regionLocX.ToString();
-            parameters["?locY"] = regiondata.regionLocY.ToString();
-            parameters["?locZ"] = regiondata.regionLocZ.ToString();
-            parameters["?eastOverrideHandle"] = regiondata.regionEastOverrideHandle.ToString();
-            parameters["?westOverrideHandle"] = regiondata.regionWestOverrideHandle.ToString();
-            parameters["?northOverrideHandle"] = regiondata.regionNorthOverrideHandle.ToString();
-            parameters["?southOverrideHandle"] = regiondata.regionSouthOverrideHandle.ToString();
-            parameters["?regionAssetURI"] = regiondata.regionAssetURI.ToString();
-            parameters["?regionAssetRecvKey"] = regiondata.regionAssetRecvKey.ToString();
-            parameters["?regionAssetSendKey"] = regiondata.regionAssetSendKey.ToString();
-            parameters["?regionUserURI"] = regiondata.regionUserURI.ToString();
-            parameters["?regionUserRecvKey"] = regiondata.regionUserRecvKey.ToString();
-            parameters["?regionUserSendKey"] = regiondata.regionUserSendKey.ToString();
-            parameters["?regionMapTexture"] = regiondata.regionMapTextureID.ToStringHyphenated();
-            parameters["?serverHttpPort"] = regiondata.httpPort.ToString();
-            parameters["?serverRemotingPort"] = regiondata.remotingPort.ToString();
-
-            bool returnval = false;
-
-            try
-            {
-                
-                IDbCommand result = Query(sql, parameters);
-
-                //Console.WriteLine(result.CommandText);
-
-                if (result.ExecuteNonQuery() == 1)
-                    returnval = true;
-
-                result.Dispose();
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine(e.ToString());
-                return false;
-            }
-
-            return returnval;
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Collections.Generic;
+using System.Data;
+using libsecondlife;
+using MySql.Data.MySqlClient;
+
+namespace OpenSim.Framework.Data.MySQL
+{
+    /// <summary>
+    /// A MySQL Database manager
+    /// </summary>
+    class MySQLManager
+    {
+        /// <summary>
+        /// The database connection object
+        /// </summary>
+        IDbConnection dbcon;
+        /// <summary>
+        /// Connection string for ADO.net
+        /// </summary>
+        string connectionString;
+
+        /// <summary>
+        /// Initialises and creates a new MySQL connection and maintains it.
+        /// </summary>
+        /// <param name="hostname">The MySQL server being connected to</param>
+        /// <param name="database">The name of the MySQL database being used</param>
+        /// <param name="username">The username logging into the database</param>
+        /// <param name="password">The password for the user logging in</param>
+        /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param>
+        public MySQLManager(string hostname, string database, string username, string password, string cpooling, string port)
+        {
+            try
+            {
+                connectionString = "Server=" + hostname + ";Port=" + port + ";Database=" + database + ";User ID=" + username + ";Password=" + password + ";Pooling=" + cpooling + ";";
+                dbcon = new MySqlConnection(connectionString);
+
+                dbcon.Open();
+
+                Console.WriteLine("MySQL connection established");
+            }
+            catch (Exception e)
+            {
+                throw new Exception("Error initialising MySql Database: " + e.ToString());
+            }
+        }
+
+        /// <summary>
+        /// Shuts down the database connection
+        /// </summary>
+        public void Close()
+        {
+            dbcon.Close();
+            dbcon = null;
+        }
+
+        /// <summary>
+        /// Reconnects to the database
+        /// </summary>
+        public void Reconnect()
+        {
+            lock (dbcon)
+            {
+                try
+                {
+                    // Close the DB connection
+                    dbcon.Close();
+                    // Try reopen it
+                    dbcon = new MySqlConnection(connectionString);
+                    dbcon.Open();
+                }
+                catch (Exception e)
+                {
+                    Console.WriteLine("Unable to reconnect to database " + e.ToString());
+                }
+            }
+        }
+
+        /// <summary>
+        /// Runs a query with protection against SQL Injection by using parameterised input.
+        /// </summary>
+        /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param>
+        /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param>
+        /// <returns>A MySQL DB Command</returns>
+        public IDbCommand Query(string sql, Dictionary<string, string> parameters)
+        {
+            try
+            {
+                MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand();
+                dbcommand.CommandText = sql;
+                foreach (KeyValuePair<string, string> param in parameters)
+                {
+                    dbcommand.Parameters.Add(param.Key, param.Value);
+                }
+
+                return (IDbCommand)dbcommand;
+            }
+            catch
+            {
+                lock (dbcon)
+                {
+                    // Close the DB connection
+                    try
+                    {
+                        dbcon.Close();
+                    }
+                    catch { }
+
+                    // Try reopen it
+                    try
+                    {
+                        dbcon = new MySqlConnection(connectionString);
+                        dbcon.Open();
+                    }
+                    catch (Exception e)
+                    {
+                        Console.WriteLine("Unable to reconnect to database " + e.ToString());
+                    }
+
+                    // Run the query again
+                    try
+                    {
+                        MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand();
+                        dbcommand.CommandText = sql;
+                        foreach (KeyValuePair<string, string> param in parameters)
+                        {
+                            dbcommand.Parameters.Add(param.Key, param.Value);
+                        }
+
+                        return (IDbCommand)dbcommand;
+                    }
+                    catch (Exception e)
+                    {
+                        // Return null if it fails.
+                        Console.WriteLine("Failed during Query generation: " + e.ToString());
+                        return null;
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// Reads a region row from a database reader
+        /// </summary>
+        /// <param name="reader">An active database reader</param>
+        /// <returns>A region profile</returns>
+        public SimProfileData readSimRow(IDataReader reader)
+        {
+            SimProfileData retval = new SimProfileData();
+
+            if (reader.Read())
+            {
+                // Region Main
+                retval.regionHandle = Convert.ToUInt64(reader["regionHandle"].ToString());
+                retval.regionName = (string)reader["regionName"];
+                retval.UUID = new LLUUID((string)reader["uuid"]);
+
+                // Secrets
+                retval.regionRecvKey = (string)reader["regionRecvKey"];
+                retval.regionSecret = (string)reader["regionSecret"];
+                retval.regionSendKey = (string)reader["regionSendKey"];
+
+                // Region Server
+                retval.regionDataURI = (string)reader["regionDataURI"];
+                retval.regionOnline = false; // Needs to be pinged before this can be set.
+                retval.serverIP = (string)reader["serverIP"];
+                retval.serverPort = (uint)reader["serverPort"];
+                retval.serverURI = (string)reader["serverURI"];
+                retval.httpPort = Convert.ToUInt32(reader["serverHttpPort"].ToString());
+                retval.remotingPort = Convert.ToUInt32(reader["serverRemotingPort"].ToString());
+
+                // Location
+                retval.regionLocX = Convert.ToUInt32(reader["locX"].ToString());
+                retval.regionLocY = Convert.ToUInt32(reader["locY"].ToString());
+                retval.regionLocZ = Convert.ToUInt32(reader["locZ"].ToString());
+
+                // Neighbours - 0 = No Override
+                retval.regionEastOverrideHandle = Convert.ToUInt64(reader["eastOverrideHandle"].ToString());
+                retval.regionWestOverrideHandle = Convert.ToUInt64(reader["westOverrideHandle"].ToString());
+                retval.regionSouthOverrideHandle = Convert.ToUInt64(reader["southOverrideHandle"].ToString());
+                retval.regionNorthOverrideHandle = Convert.ToUInt64(reader["northOverrideHandle"].ToString());
+
+                // Assets
+                retval.regionAssetURI = (string)reader["regionAssetURI"];
+                retval.regionAssetRecvKey = (string)reader["regionAssetRecvKey"];
+                retval.regionAssetSendKey = (string)reader["regionAssetSendKey"];
+
+                // Userserver
+                retval.regionUserURI = (string)reader["regionUserURI"];
+                retval.regionUserRecvKey = (string)reader["regionUserRecvKey"];
+                retval.regionUserSendKey = (string)reader["regionUserSendKey"];
+
+                // World Map Addition
+                string tempRegionMap = reader["regionMapTexture"].ToString();
+                if (tempRegionMap != "")
+                {
+                    retval.regionMapTextureID = new LLUUID(tempRegionMap);
+                }
+                else
+                {
+                    retval.regionMapTextureID = new LLUUID();
+                }
+            }
+            else
+            {
+                return null;
+            }
+            return retval;
+        }
+
+        /// <summary>
+        /// Reads a reservation row from a database reader
+        /// </summary>
+        /// <param name="reader">An active database reader</param>
+        /// <returns>A reservation data object</returns>
+        public ReservationData readReservationRow(IDataReader reader)
+        {
+            ReservationData retval = new ReservationData();
+            if (reader.Read())
+            {
+                retval.gridRecvKey = (string)reader["gridRecvKey"];
+                retval.gridSendKey = (string)reader["gridSendKey"];
+                retval.reservationCompany = (string)reader["resCompany"];
+                retval.reservationMaxX = Convert.ToInt32(reader["resXMax"].ToString());
+                retval.reservationMaxY = Convert.ToInt32(reader["resYMax"].ToString());
+                retval.reservationMinX = Convert.ToInt32(reader["resXMin"].ToString());
+                retval.reservationMinY = Convert.ToInt32(reader["resYMin"].ToString());
+                retval.reservationName = (string)reader["resName"];
+                retval.status = Convert.ToInt32(reader["status"].ToString()) == 1;
+                retval.userUUID = new LLUUID((string)reader["userUUID"]);
+
+            }
+            else
+            {
+                return null;
+            }
+            return retval;
+        }
+        /// <summary>
+        /// Reads an agent row from a database reader
+        /// </summary>
+        /// <param name="reader">An active database reader</param>
+        /// <returns>A user session agent</returns>
+        public UserAgentData readAgentRow(IDataReader reader)
+        {
+            UserAgentData retval = new UserAgentData();
+
+            if (reader.Read())
+            {
+                // Agent IDs
+                retval.UUID = new LLUUID((string)reader["UUID"]);
+                retval.sessionID = new LLUUID((string)reader["sessionID"]);
+                retval.secureSessionID = new LLUUID((string)reader["secureSessionID"]);
+
+                // Agent Who?
+                retval.agentIP = (string)reader["agentIP"];
+                retval.agentPort = Convert.ToUInt32(reader["agentPort"].ToString());
+                retval.agentOnline = Convert.ToBoolean(reader["agentOnline"].ToString());
+
+                // Login/Logout times (UNIX Epoch)
+                retval.loginTime = Convert.ToInt32(reader["loginTime"].ToString());
+                retval.logoutTime = Convert.ToInt32(reader["logoutTime"].ToString());
+
+                // Current position
+                retval.currentRegion = (string)reader["currentRegion"];
+                retval.currentHandle = Convert.ToUInt64(reader["currentHandle"].ToString());
+                LLVector3.TryParse((string)reader["currentPos"], out retval.currentPos);
+            }
+            else
+            {
+                return null;
+            }
+            return retval;
+        }
+
+        /// <summary>
+        /// Reads a user profile from an active data reader
+        /// </summary>
+        /// <param name="reader">An active database reader</param>
+        /// <returns>A user profile</returns>
+        public UserProfileData readUserRow(IDataReader reader)
+        {
+            UserProfileData retval = new UserProfileData();
+
+            if (reader.Read())
+            {
+                retval.UUID = new LLUUID((string)reader["UUID"]);
+                retval.username = (string)reader["username"];
+                retval.surname = (string)reader["lastname"];
+
+                retval.passwordHash = (string)reader["passwordHash"];
+                retval.passwordSalt = (string)reader["passwordSalt"];
+
+                retval.homeRegion = Convert.ToUInt64(reader["homeRegion"].ToString());
+                retval.homeLocation = new LLVector3(
+                    Convert.ToSingle(reader["homeLocationX"].ToString()),
+                    Convert.ToSingle(reader["homeLocationY"].ToString()),
+                    Convert.ToSingle(reader["homeLocationZ"].ToString()));
+                retval.homeLookAt = new LLVector3(
+                    Convert.ToSingle(reader["homeLookAtX"].ToString()),
+                    Convert.ToSingle(reader["homeLookAtY"].ToString()),
+                    Convert.ToSingle(reader["homeLookAtZ"].ToString()));
+
+                retval.created = Convert.ToInt32(reader["created"].ToString());
+                retval.lastLogin = Convert.ToInt32(reader["lastLogin"].ToString());
+
+                retval.userInventoryURI = (string)reader["userInventoryURI"];
+                retval.userAssetURI = (string)reader["userAssetURI"];
+
+                retval.profileCanDoMask = Convert.ToUInt32(reader["profileCanDoMask"].ToString());
+                retval.profileWantDoMask = Convert.ToUInt32(reader["profileWantDoMask"].ToString());
+
+                retval.profileAboutText = (string)reader["profileAboutText"];
+                retval.profileFirstText = (string)reader["profileFirstText"];
+
+                retval.profileImage = new LLUUID((string)reader["profileImage"]);
+                retval.profileFirstImage = new LLUUID((string)reader["profileFirstImage"]);
+
+            }
+            else
+            {
+                return null;
+            }
+            return retval;
+        }
+
+        /// <summary>
+        /// Reads a list of inventory folders returned by a query.
+        /// </summary>
+        /// <param name="reader">A MySQL Data Reader</param>
+        /// <returns>A List containing inventory folders</returns>
+        public List<InventoryFolderBase> readInventoryFolders(IDataReader reader)
+        {
+            List<InventoryFolderBase> rows = new List<InventoryFolderBase>();
+
+            while(reader.Read())
+            {
+                try
+                {
+                    InventoryFolderBase folder = new InventoryFolderBase();
+
+                    folder.agentID = new LLUUID((string)reader["agentID"]);
+                    folder.parentID = new LLUUID((string)reader["parentFolderID"]);
+                    folder.folderID = new LLUUID((string)reader["folderID"]);
+                    folder.name = (string)reader["folderName"];
+
+                    rows.Add(folder);
+                }
+                catch (Exception e)
+                {
+                    Console.WriteLine(e.ToString());
+                }
+            }
+
+            return rows;
+        }
+
+        /// <summary>
+        /// Reads a collection of items from an SQL result
+        /// </summary>
+        /// <param name="reader">The SQL Result</param>
+        /// <returns>A List containing Inventory Items</returns>
+        public List<InventoryItemBase> readInventoryItems(IDataReader reader)
+        {
+            List<InventoryItemBase> rows = new List<InventoryItemBase>();
+
+            while (reader.Read())
+            {
+                try
+                {
+                    InventoryItemBase item = new InventoryItemBase();
+
+                    item.assetID = new LLUUID((string)reader["assetID"]);
+                    item.avatarID = new LLUUID((string)reader["avatarID"]);
+                    item.inventoryCurrentPermissions = Convert.ToUInt32(reader["inventoryCurrentPermissions"].ToString());
+                    item.inventoryDescription = (string)reader["inventoryDescription"];
+                    item.inventoryID = new LLUUID((string)reader["inventoryID"]);
+                    item.inventoryName = (string)reader["inventoryName"];
+                    item.inventoryNextPermissions = Convert.ToUInt32(reader["inventoryNextPermissions"].ToString());
+                    item.parentFolderID = new LLUUID((string)reader["parentFolderID"]);
+                    item.type = Convert.ToInt32(reader["type"].ToString());
+
+                    rows.Add(item);
+                }
+                catch (Exception e)
+                {
+                    Console.WriteLine(e.ToString());
+                }
+            }
+
+            return rows;
+        }
+
+        /// <summary>
+        /// Inserts a new row into the log database
+        /// </summary>
+        /// <param name="serverDaemon">The daemon which triggered this event</param>
+        /// <param name="target">Who were we operating on when this occured (region UUID, user UUID, etc)</param>
+        /// <param name="methodCall">The method call where the problem occured</param>
+        /// <param name="arguments">The arguments passed to the method</param>
+        /// <param name="priority">How critical is this?</param>
+        /// <param name="logMessage">Extra message info</param>
+        /// <returns>Saved successfully?</returns>
+        public bool insertLogRow(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage)
+        {
+            string sql = "INSERT INTO logs (`target`, `server`, `method`, `arguments`, `priority`, `message`) VALUES ";
+            sql += "(?target, ?server, ?method, ?arguments, ?priority, ?message)";
+
+            Dictionary<string, string> parameters = new Dictionary<string, string>();
+            parameters["?server"] = serverDaemon;
+            parameters["?target"] = target;
+            parameters["?method"] = methodCall;
+            parameters["?arguments"] = arguments;
+            parameters["?priority"] = priority.ToString();
+            parameters["?message"] = logMessage;
+
+            bool returnval = false;
+
+            try
+            {
+                IDbCommand result = Query(sql, parameters);
+
+                if (result.ExecuteNonQuery() == 1)
+                    returnval = true;
+
+                result.Dispose();
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e.ToString());
+                return false;
+            }
+
+            return returnval;
+        }
+
+        /// <summary>
+        /// Inserts a new item into the database
+        /// </summary>
+        /// <param name="item">The item</param>
+        /// <returns>Success?</returns>
+        public bool insertItem(InventoryItemBase item)
+        {
+            string sql = "REPLACE INTO inventoryitems (inventoryID, assetID, type, parentFolderID, avatarID, inventoryName, inventoryDescription, inventoryNextPermissions, inventoryCurrentPermissions) VALUES ";
+            sql += "(?inventoryID, ?assetID, ?type, ?parentFolderID, ?avatarID, ?inventoryName, ?inventoryDescription, ?inventoryNextPermissions, ?inventoryCurrentPermissions)";
+
+            Dictionary<string, string> parameters = new Dictionary<string, string>();
+            parameters["?inventoryID"] = item.inventoryID.ToStringHyphenated();
+            parameters["?assetID"] = item.assetID.ToStringHyphenated();
+            parameters["?type"] = item.type.ToString();
+            parameters["?parentFolderID"] = item.parentFolderID.ToStringHyphenated();
+            parameters["?avatarID"] = item.avatarID.ToStringHyphenated();
+            parameters["?inventoryName"] = item.inventoryName;
+            parameters["?inventoryDescription"] = item.inventoryDescription;
+            parameters["?inventoryNextPermissions"] = item.inventoryNextPermissions.ToString();
+            parameters["?inventoryCurrentPermissions"] = item.inventoryCurrentPermissions.ToString();
+
+            bool returnval = false;
+
+            try
+            {
+                IDbCommand result = Query(sql, parameters);
+
+                if (result.ExecuteNonQuery() == 1)
+                    returnval = true;
+
+                result.Dispose();
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e.ToString());
+                return false;
+            }
+
+            return returnval;
+        }
+
+        /// <summary>
+        /// Inserts a new folder into the database
+        /// </summary>
+        /// <param name="folder">The folder</param>
+        /// <returns>Success?</returns>
+        public bool insertFolder(InventoryFolderBase folder)
+        {
+            string sql = "REPLACE INTO inventoryfolders (folderID, agentID, parentFolderID, folderName) VALUES ";
+            sql += "(?folderID, ?agentID, ?parentFolderID, ?folderName)";
+
+            Dictionary<string, string> parameters = new Dictionary<string, string>();
+            parameters["?folderID"] = folder.folderID.ToStringHyphenated();
+            parameters["?agentID"] = folder.agentID.ToStringHyphenated();
+            parameters["?parentFolderID"] = folder.parentID.ToStringHyphenated();
+            parameters["?folderName"] = folder.name;
+
+            bool returnval = false;
+            try
+            {
+                IDbCommand result = Query(sql, parameters);
+
+                if (result.ExecuteNonQuery() == 1)
+                    returnval = true;
+
+                result.Dispose();
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e.ToString());
+                return false;
+            }
+            return returnval;
+        }
+
+        /// <summary>
+        /// Inserts a new region into the database
+        /// </summary>
+        /// <param name="profile">The region to insert</param>
+        /// <returns>Success?</returns>
+        public bool insertRegion(SimProfileData regiondata)
+        {
+            string sql = "REPLACE INTO regions (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, ";
+            sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, ";
+            sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey, regionMapTexture, serverHttpPort, serverRemotingPort) VALUES ";
+
+            sql += "(?regionHandle, ?regionName, ?uuid, ?regionRecvKey, ?regionSecret, ?regionSendKey, ?regionDataURI, ";
+            sql += "?serverIP, ?serverPort, ?serverURI, ?locX, ?locY, ?locZ, ?eastOverrideHandle, ?westOverrideHandle, ?southOverrideHandle, ?northOverrideHandle, ?regionAssetURI, ?regionAssetRecvKey, ";
+            sql += "?regionAssetSendKey, ?regionUserURI, ?regionUserRecvKey, ?regionUserSendKey, ?regionMapTexture, ?serverHttpPort, ?serverRemotingPort);";
+
+            Dictionary<string, string> parameters = new Dictionary<string, string>();
+
+            parameters["?regionHandle"] = regiondata.regionHandle.ToString();
+            parameters["?regionName"] = regiondata.regionName.ToString();
+            parameters["?uuid"] = regiondata.UUID.ToStringHyphenated();
+            parameters["?regionRecvKey"] = regiondata.regionRecvKey.ToString();
+            parameters["?regionSecret"] = regiondata.regionSecret.ToString();
+            parameters["?regionSendKey"] = regiondata.regionSendKey.ToString();
+            parameters["?regionDataURI"] = regiondata.regionDataURI.ToString();
+            parameters["?serverIP"] = regiondata.serverIP.ToString();
+            parameters["?serverPort"] = regiondata.serverPort.ToString();
+            parameters["?serverURI"] = regiondata.serverURI.ToString();
+            parameters["?locX"] = regiondata.regionLocX.ToString();
+            parameters["?locY"] = regiondata.regionLocY.ToString();
+            parameters["?locZ"] = regiondata.regionLocZ.ToString();
+            parameters["?eastOverrideHandle"] = regiondata.regionEastOverrideHandle.ToString();
+            parameters["?westOverrideHandle"] = regiondata.regionWestOverrideHandle.ToString();
+            parameters["?northOverrideHandle"] = regiondata.regionNorthOverrideHandle.ToString();
+            parameters["?southOverrideHandle"] = regiondata.regionSouthOverrideHandle.ToString();
+            parameters["?regionAssetURI"] = regiondata.regionAssetURI.ToString();
+            parameters["?regionAssetRecvKey"] = regiondata.regionAssetRecvKey.ToString();
+            parameters["?regionAssetSendKey"] = regiondata.regionAssetSendKey.ToString();
+            parameters["?regionUserURI"] = regiondata.regionUserURI.ToString();
+            parameters["?regionUserRecvKey"] = regiondata.regionUserRecvKey.ToString();
+            parameters["?regionUserSendKey"] = regiondata.regionUserSendKey.ToString();
+            parameters["?regionMapTexture"] = regiondata.regionMapTextureID.ToStringHyphenated();
+            parameters["?serverHttpPort"] = regiondata.httpPort.ToString();
+            parameters["?serverRemotingPort"] = regiondata.remotingPort.ToString();
+
+            bool returnval = false;
+
+            try
+            {
+                
+                IDbCommand result = Query(sql, parameters);
+
+                //Console.WriteLine(result.CommandText);
+
+                if (result.ExecuteNonQuery() == 1)
+                    returnval = true;
+
+                result.Dispose();
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e.ToString());
+                return false;
+            }
+
+            return returnval;
+        }
+    }
+}

+ 256 - 256
OpenSim/Framework/Data.MySQL/MySQLUserData.cs

@@ -1,256 +1,256 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections.Generic;
-using System.Data;
-using libsecondlife;
-
-namespace OpenSim.Framework.Data.MySQL
-{
-    /// <summary>
-    /// A database interface class to a user profile storage system
-    /// </summary>
-    class MySQLUserData : IUserData
-    {
-        /// <summary>
-        /// Database manager for MySQL
-        /// </summary>
-        public MySQLManager database;
-
-        /// <summary>
-        /// Loads and initialises the MySQL storage plugin
-        /// </summary>
-        public void Initialise()
-        {
-            // Load from an INI file connection details
-            // TODO: move this to XML?
-            IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
-            string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
-            string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
-            string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
-            string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
-            string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
-            string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
-
-            database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
-        }
-
-        /// <summary>
-        /// Searches the database for a specified user profile
-        /// </summary>
-        /// <param name="name">The account name of the user</param>
-        /// <returns>A user profile</returns>
-        public UserProfileData getUserByName(string name)
-        {
-            return getUserByName(name.Split(' ')[0], name.Split(' ')[1]);
-        }
-
-        /// <summary>
-        /// Searches the database for a specified user profile by name components
-        /// </summary>
-        /// <param name="user">The first part of the account name</param>
-        /// <param name="last">The second part of the account name</param>
-        /// <returns>A user profile</returns>
-        public UserProfileData getUserByName(string user, string last)
-        {
-            try
-            {
-                lock (database)
-                {
-                    Dictionary<string, string> param = new Dictionary<string, string>();
-                    param["?first"] = user;
-                    param["?second"] = last;
-
-                    IDbCommand result = database.Query("SELECT * FROM users WHERE username = ?first AND lastname = ?second", param);
-                    IDataReader reader = result.ExecuteReader();
-
-                    UserProfileData row = database.readUserRow(reader);
-                    
-                    reader.Close();
-                    result.Dispose();
-
-                    return row;
-                }
-            }
-            catch (Exception e)
-            {
-                database.Reconnect();
-                Console.WriteLine(e.ToString());
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Searches the database for a specified user profile by UUID
-        /// </summary>
-        /// <param name="uuid">The account ID</param>
-        /// <returns>The users profile</returns>
-        public UserProfileData getUserByUUID(LLUUID uuid)
-        {
-            try
-            {
-                lock (database)
-                {
-                    Dictionary<string, string> param = new Dictionary<string, string>();
-                    param["?uuid"] = uuid.ToStringHyphenated();
-
-                    IDbCommand result = database.Query("SELECT * FROM users WHERE UUID = ?uuid", param);
-                    IDataReader reader = result.ExecuteReader();
-
-                    UserProfileData row = database.readUserRow(reader);
-
-                    reader.Close();
-                    result.Dispose();
-
-                    return row;
-                }
-            }
-            catch (Exception e)
-            {
-                database.Reconnect();
-                Console.WriteLine(e.ToString());
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Returns a user session searching by name
-        /// </summary>
-        /// <param name="name">The account name</param>
-        /// <returns>The users session</returns>
-        public UserAgentData getAgentByName(string name)
-        {
-            return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]);
-        }
-
-        /// <summary>
-        /// Returns a user session by account name
-        /// </summary>
-        /// <param name="user">First part of the users account name</param>
-        /// <param name="last">Second part of the users account name</param>
-        /// <returns>The users session</returns>
-        public UserAgentData getAgentByName(string user, string last)
-        {
-            UserProfileData profile = getUserByName(user, last);
-            return getAgentByUUID(profile.UUID);
-        }
-
-        /// <summary>
-        /// Returns an agent session by account UUID
-        /// </summary>
-        /// <param name="uuid">The accounts UUID</param>
-        /// <returns>The users session</returns>
-        public UserAgentData getAgentByUUID(LLUUID uuid)
-        {
-            try
-            {
-                lock (database)
-                {
-                    Dictionary<string, string> param = new Dictionary<string, string>();
-                    param["?uuid"] = uuid.ToStringHyphenated();
-
-                    IDbCommand result = database.Query("SELECT * FROM agents WHERE UUID = ?uuid", param);
-                    IDataReader reader = result.ExecuteReader();
-
-                    UserAgentData row = database.readAgentRow(reader);
-
-                    reader.Close();
-                    result.Dispose();
-
-                    return row;
-                }
-            }
-            catch (Exception e)
-            {
-                database.Reconnect();
-                Console.WriteLine(e.ToString());
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Creates a new users profile
-        /// </summary>
-        /// <param name="user">The user profile to create</param>
-        public void addNewUserProfile(UserProfileData user)
-        {
-        }
-
-        /// <summary>
-        /// Creates a new agent
-        /// </summary>
-        /// <param name="agent">The agent to create</param>
-        public void addNewUserAgent(UserAgentData agent)
-        {
-            // Do nothing.
-        }
-
-        /// <summary>
-        /// Performs a money transfer request between two accounts
-        /// </summary>
-        /// <param name="from">The senders account ID</param>
-        /// <param name="to">The recievers account ID</param>
-        /// <param name="amount">The amount to transfer</param>
-        /// <returns>Success?</returns>
-        public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount)
-        {
-            return false;
-        }
-
-        /// <summary>
-        /// Performs an inventory transfer request between two accounts
-        /// </summary>
-        /// <remarks>TODO: Move to inventory server</remarks>
-        /// <param name="from">The senders account ID</param>
-        /// <param name="to">The recievers account ID</param>
-        /// <param name="item">The item to transfer</param>
-        /// <returns>Success?</returns>
-        public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item)
-        {
-            return false;
-        }
-
-        /// <summary>
-        /// Database provider name
-        /// </summary>
-        /// <returns>Provider name</returns>
-        public string getName()
-        {
-            return "MySQL Userdata Interface";
-        }
-
-        /// <summary>
-        /// Database provider version
-        /// </summary>
-        /// <returns>provider version</returns>
-        public string getVersion()
-        {
-            return "0.1";
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Collections.Generic;
+using System.Data;
+using libsecondlife;
+
+namespace OpenSim.Framework.Data.MySQL
+{
+    /// <summary>
+    /// A database interface class to a user profile storage system
+    /// </summary>
+    class MySQLUserData : IUserData
+    {
+        /// <summary>
+        /// Database manager for MySQL
+        /// </summary>
+        public MySQLManager database;
+
+        /// <summary>
+        /// Loads and initialises the MySQL storage plugin
+        /// </summary>
+        public void Initialise()
+        {
+            // Load from an INI file connection details
+            // TODO: move this to XML?
+            IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
+            string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname");
+            string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database");
+            string settingUsername = GridDataMySqlFile.ParseFileReadValue("username");
+            string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
+            string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling");
+            string settingPort = GridDataMySqlFile.ParseFileReadValue("port");
+
+            database = new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, settingPort);
+        }
+
+        /// <summary>
+        /// Searches the database for a specified user profile
+        /// </summary>
+        /// <param name="name">The account name of the user</param>
+        /// <returns>A user profile</returns>
+        public UserProfileData getUserByName(string name)
+        {
+            return getUserByName(name.Split(' ')[0], name.Split(' ')[1]);
+        }
+
+        /// <summary>
+        /// Searches the database for a specified user profile by name components
+        /// </summary>
+        /// <param name="user">The first part of the account name</param>
+        /// <param name="last">The second part of the account name</param>
+        /// <returns>A user profile</returns>
+        public UserProfileData getUserByName(string user, string last)
+        {
+            try
+            {
+                lock (database)
+                {
+                    Dictionary<string, string> param = new Dictionary<string, string>();
+                    param["?first"] = user;
+                    param["?second"] = last;
+
+                    IDbCommand result = database.Query("SELECT * FROM users WHERE username = ?first AND lastname = ?second", param);
+                    IDataReader reader = result.ExecuteReader();
+
+                    UserProfileData row = database.readUserRow(reader);
+                    
+                    reader.Close();
+                    result.Dispose();
+
+                    return row;
+                }
+            }
+            catch (Exception e)
+            {
+                database.Reconnect();
+                Console.WriteLine(e.ToString());
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Searches the database for a specified user profile by UUID
+        /// </summary>
+        /// <param name="uuid">The account ID</param>
+        /// <returns>The users profile</returns>
+        public UserProfileData getUserByUUID(LLUUID uuid)
+        {
+            try
+            {
+                lock (database)
+                {
+                    Dictionary<string, string> param = new Dictionary<string, string>();
+                    param["?uuid"] = uuid.ToStringHyphenated();
+
+                    IDbCommand result = database.Query("SELECT * FROM users WHERE UUID = ?uuid", param);
+                    IDataReader reader = result.ExecuteReader();
+
+                    UserProfileData row = database.readUserRow(reader);
+
+                    reader.Close();
+                    result.Dispose();
+
+                    return row;
+                }
+            }
+            catch (Exception e)
+            {
+                database.Reconnect();
+                Console.WriteLine(e.ToString());
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Returns a user session searching by name
+        /// </summary>
+        /// <param name="name">The account name</param>
+        /// <returns>The users session</returns>
+        public UserAgentData getAgentByName(string name)
+        {
+            return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]);
+        }
+
+        /// <summary>
+        /// Returns a user session by account name
+        /// </summary>
+        /// <param name="user">First part of the users account name</param>
+        /// <param name="last">Second part of the users account name</param>
+        /// <returns>The users session</returns>
+        public UserAgentData getAgentByName(string user, string last)
+        {
+            UserProfileData profile = getUserByName(user, last);
+            return getAgentByUUID(profile.UUID);
+        }
+
+        /// <summary>
+        /// Returns an agent session by account UUID
+        /// </summary>
+        /// <param name="uuid">The accounts UUID</param>
+        /// <returns>The users session</returns>
+        public UserAgentData getAgentByUUID(LLUUID uuid)
+        {
+            try
+            {
+                lock (database)
+                {
+                    Dictionary<string, string> param = new Dictionary<string, string>();
+                    param["?uuid"] = uuid.ToStringHyphenated();
+
+                    IDbCommand result = database.Query("SELECT * FROM agents WHERE UUID = ?uuid", param);
+                    IDataReader reader = result.ExecuteReader();
+
+                    UserAgentData row = database.readAgentRow(reader);
+
+                    reader.Close();
+                    result.Dispose();
+
+                    return row;
+                }
+            }
+            catch (Exception e)
+            {
+                database.Reconnect();
+                Console.WriteLine(e.ToString());
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Creates a new users profile
+        /// </summary>
+        /// <param name="user">The user profile to create</param>
+        public void addNewUserProfile(UserProfileData user)
+        {
+        }
+
+        /// <summary>
+        /// Creates a new agent
+        /// </summary>
+        /// <param name="agent">The agent to create</param>
+        public void addNewUserAgent(UserAgentData agent)
+        {
+            // Do nothing.
+        }
+
+        /// <summary>
+        /// Performs a money transfer request between two accounts
+        /// </summary>
+        /// <param name="from">The senders account ID</param>
+        /// <param name="to">The recievers account ID</param>
+        /// <param name="amount">The amount to transfer</param>
+        /// <returns>Success?</returns>
+        public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount)
+        {
+            return false;
+        }
+
+        /// <summary>
+        /// Performs an inventory transfer request between two accounts
+        /// </summary>
+        /// <remarks>TODO: Move to inventory server</remarks>
+        /// <param name="from">The senders account ID</param>
+        /// <param name="to">The recievers account ID</param>
+        /// <param name="item">The item to transfer</param>
+        /// <returns>Success?</returns>
+        public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item)
+        {
+            return false;
+        }
+
+        /// <summary>
+        /// Database provider name
+        /// </summary>
+        /// <returns>Provider name</returns>
+        public string getName()
+        {
+            return "MySQL Userdata Interface";
+        }
+
+        /// <summary>
+        /// Database provider version
+        /// </summary>
+        /// <returns>provider version</returns>
+        public string getVersion()
+        {
+            return "0.1";
+        }
+    }
+}

+ 33 - 33
OpenSim/Framework/Data.MySQL/Properties/AssemblyInfo.cs

@@ -1,33 +1,33 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("OpenSim.Framework.Data.MySQL")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("OpenSim.Framework.Data.MySQL")]
-[assembly: AssemblyCopyright("Copyright ©  2007")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("e49826b2-dcef-41be-a5bd-596733fa3304")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+using System.Reflection;
+using System.Runtime.InteropServices;
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OpenSim.Framework.Data.MySQL")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OpenSim.Framework.Data.MySQL")]
+[assembly: AssemblyCopyright("Copyright ©  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("e49826b2-dcef-41be-a5bd-596733fa3304")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 33 - 33
OpenSim/Framework/Data.SQLite/Properties/AssemblyInfo.cs

@@ -1,33 +1,33 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("OpenSim.Framework.Data.SQLite")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("OpenSim.Framework.Data.SQLite")]
-[assembly: AssemblyCopyright("Copyright ©  2007")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("6113d5ce-4547-49f4-9236-0dcc503457b1")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+using System.Reflection;
+using System.Runtime.InteropServices;
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OpenSim.Framework.Data.SQLite")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OpenSim.Framework.Data.SQLite")]
+[assembly: AssemblyCopyright("Copyright ©  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("6113d5ce-4547-49f4-9236-0dcc503457b1")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 197 - 197
OpenSim/Framework/Data.SQLite/SQLiteGridData.cs

@@ -1,197 +1,197 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Security.Cryptography;
-using System.Text;
-using libsecondlife;
-
-namespace OpenSim.Framework.Data.SQLite
-{
-    /// <summary>
-    /// A Grid Interface to the SQLite database
-    /// </summary>
-    public class SQLiteGridData : IGridData
-    {
-        /// <summary>
-        /// A database manager
-        /// </summary>
-        private SQLiteManager database;
-
-        /// <summary>
-        /// Initialises the Grid Interface
-        /// </summary>
-        public void Initialise()
-        {
-            database = new SQLiteManager("localhost", "db", "user", "password", "false");
-        }
-
-        /// <summary>
-        /// Shuts down the grid interface
-        /// </summary>
-        public void Close()
-        {
-            database.Close();
-        }
-
-        /// <summary>
-        /// Returns the name of this grid interface
-        /// </summary>
-        /// <returns>A string containing the grid interface</returns>
-        public string getName()
-        {
-            return "SQLite OpenGridData";
-        }
-
-        /// <summary>
-        /// Returns the version of this grid interface
-        /// </summary>
-        /// <returns>A string containing the version</returns>
-        public string getVersion()
-        {
-            return "0.1";
-        }
-
-        /// <summary>
-        /// Returns a list of regions within the specified ranges
-        /// </summary>
-        /// <param name="a">minimum X coordinate</param>
-        /// <param name="b">minimum Y coordinate</param>
-        /// <param name="c">maximum X coordinate</param>
-        /// <param name="d">maximum Y coordinate</param>
-        /// <returns>An array of region profiles</returns>
-        public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
-        {
-            return null;
-        }
-
-        /// <summary>
-        /// Returns a sim profile from it's location
-        /// </summary>
-        /// <param name="handle">Region location handle</param>
-        /// <returns>Sim profile</returns>
-        public SimProfileData GetProfileByHandle(ulong handle)
-        {
-            Dictionary<string, string> param = new Dictionary<string, string>();
-            param["handle"] = handle.ToString();
-
-            IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param);
-            IDataReader reader = result.ExecuteReader();
-
-            SimProfileData row = database.getRow(reader);
-            reader.Close();
-            result.Dispose();
-
-            return row;
-        }
-
-        /// <summary>
-        /// Returns a sim profile from it's UUID
-        /// </summary>
-        /// <param name="uuid">The region UUID</param>
-        /// <returns>The sim profile</returns>
-        public SimProfileData GetProfileByLLUUID(LLUUID uuid)
-        {
-            Dictionary<string, string> param = new Dictionary<string, string>();
-            param["uuid"] = uuid.ToStringHyphenated();
-
-            IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param);
-            IDataReader reader = result.ExecuteReader();
-
-            SimProfileData row = database.getRow(reader);
-            reader.Close();
-            result.Dispose();
-
-            return row;
-        }
-
-        /// <summary>
-        /// Adds a new specified region to the database
-        /// </summary>
-        /// <param name="profile">The profile to add</param>
-        /// <returns>A dataresponse enum indicating success</returns>
-        public DataResponse AddProfile(SimProfileData profile)
-        {
-            if (database.insertRow(profile))
-            {
-                return DataResponse.RESPONSE_OK;
-            }
-            else
-            {
-                return DataResponse.RESPONSE_ERROR;
-            }
-        }
-
-        /// <summary>
-        /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
-        /// </summary>
-        /// <param name="uuid">The UUID of the challenger</param>
-        /// <param name="handle">The attempted regionHandle of the challenger</param>
-        /// <param name="authkey">The secret</param>
-        /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
-        public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey)
-        {
-            bool throwHissyFit = false; // Should be true by 1.0
-
-            if (throwHissyFit)
-                throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
-
-            SimProfileData data = GetProfileByLLUUID(uuid);
-
-            return (handle == data.regionHandle && authkey == data.regionSecret);
-        }
-
-        /// <summary>
-        /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
-        /// </summary>
-        /// <remarks>This requires a security audit.</remarks>
-        /// <param name="uuid"></param>
-        /// <param name="handle"></param>
-        /// <param name="authhash"></param>
-        /// <param name="challenge"></param>
-        /// <returns></returns>
-        public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge)
-        {
-            SHA512Managed HashProvider = new SHA512Managed();
-            ASCIIEncoding TextProvider = new ASCIIEncoding();
-
-            byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
-            byte[] hash = HashProvider.ComputeHash(stream);
-
-            return false;
-        }
-
-        public ReservationData GetReservationAtPoint(uint x, uint y)
-        {
-            return null;
-        }
-    }
-
-
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Security.Cryptography;
+using System.Text;
+using libsecondlife;
+
+namespace OpenSim.Framework.Data.SQLite
+{
+    /// <summary>
+    /// A Grid Interface to the SQLite database
+    /// </summary>
+    public class SQLiteGridData : IGridData
+    {
+        /// <summary>
+        /// A database manager
+        /// </summary>
+        private SQLiteManager database;
+
+        /// <summary>
+        /// Initialises the Grid Interface
+        /// </summary>
+        public void Initialise()
+        {
+            database = new SQLiteManager("localhost", "db", "user", "password", "false");
+        }
+
+        /// <summary>
+        /// Shuts down the grid interface
+        /// </summary>
+        public void Close()
+        {
+            database.Close();
+        }
+
+        /// <summary>
+        /// Returns the name of this grid interface
+        /// </summary>
+        /// <returns>A string containing the grid interface</returns>
+        public string getName()
+        {
+            return "SQLite OpenGridData";
+        }
+
+        /// <summary>
+        /// Returns the version of this grid interface
+        /// </summary>
+        /// <returns>A string containing the version</returns>
+        public string getVersion()
+        {
+            return "0.1";
+        }
+
+        /// <summary>
+        /// Returns a list of regions within the specified ranges
+        /// </summary>
+        /// <param name="a">minimum X coordinate</param>
+        /// <param name="b">minimum Y coordinate</param>
+        /// <param name="c">maximum X coordinate</param>
+        /// <param name="d">maximum Y coordinate</param>
+        /// <returns>An array of region profiles</returns>
+        public SimProfileData[] GetProfilesInRange(uint a, uint b, uint c, uint d)
+        {
+            return null;
+        }
+
+        /// <summary>
+        /// Returns a sim profile from it's location
+        /// </summary>
+        /// <param name="handle">Region location handle</param>
+        /// <returns>Sim profile</returns>
+        public SimProfileData GetProfileByHandle(ulong handle)
+        {
+            Dictionary<string, string> param = new Dictionary<string, string>();
+            param["handle"] = handle.ToString();
+
+            IDbCommand result = database.Query("SELECT * FROM regions WHERE handle = @handle", param);
+            IDataReader reader = result.ExecuteReader();
+
+            SimProfileData row = database.getRow(reader);
+            reader.Close();
+            result.Dispose();
+
+            return row;
+        }
+
+        /// <summary>
+        /// Returns a sim profile from it's UUID
+        /// </summary>
+        /// <param name="uuid">The region UUID</param>
+        /// <returns>The sim profile</returns>
+        public SimProfileData GetProfileByLLUUID(LLUUID uuid)
+        {
+            Dictionary<string, string> param = new Dictionary<string, string>();
+            param["uuid"] = uuid.ToStringHyphenated();
+
+            IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param);
+            IDataReader reader = result.ExecuteReader();
+
+            SimProfileData row = database.getRow(reader);
+            reader.Close();
+            result.Dispose();
+
+            return row;
+        }
+
+        /// <summary>
+        /// Adds a new specified region to the database
+        /// </summary>
+        /// <param name="profile">The profile to add</param>
+        /// <returns>A dataresponse enum indicating success</returns>
+        public DataResponse AddProfile(SimProfileData profile)
+        {
+            if (database.insertRow(profile))
+            {
+                return DataResponse.RESPONSE_OK;
+            }
+            else
+            {
+                return DataResponse.RESPONSE_ERROR;
+            }
+        }
+
+        /// <summary>
+        /// DEPRECIATED. Attempts to authenticate a region by comparing a shared secret.
+        /// </summary>
+        /// <param name="uuid">The UUID of the challenger</param>
+        /// <param name="handle">The attempted regionHandle of the challenger</param>
+        /// <param name="authkey">The secret</param>
+        /// <returns>Whether the secret and regionhandle match the database entry for UUID</returns>
+        public bool AuthenticateSim(LLUUID uuid, ulong handle, string authkey)
+        {
+            bool throwHissyFit = false; // Should be true by 1.0
+
+            if (throwHissyFit)
+                throw new Exception("CRYPTOWEAK AUTHENTICATE: Refusing to authenticate due to replay potential.");
+
+            SimProfileData data = GetProfileByLLUUID(uuid);
+
+            return (handle == data.regionHandle && authkey == data.regionSecret);
+        }
+
+        /// <summary>
+        /// NOT YET FUNCTIONAL. Provides a cryptographic authentication of a region
+        /// </summary>
+        /// <remarks>This requires a security audit.</remarks>
+        /// <param name="uuid"></param>
+        /// <param name="handle"></param>
+        /// <param name="authhash"></param>
+        /// <param name="challenge"></param>
+        /// <returns></returns>
+        public bool AuthenticateSim(LLUUID uuid, ulong handle, string authhash, string challenge)
+        {
+            SHA512Managed HashProvider = new SHA512Managed();
+            ASCIIEncoding TextProvider = new ASCIIEncoding();
+
+            byte[] stream = TextProvider.GetBytes(uuid.ToStringHyphenated() + ":" + handle.ToString() + ":" + challenge);
+            byte[] hash = HashProvider.ComputeHash(stream);
+
+            return false;
+        }
+
+        public ReservationData GetReservationAtPoint(uint x, uint y)
+        {
+            return null;
+        }
+    }
+
+
+}

+ 206 - 206
OpenSim/Framework/Data.SQLite/SQLiteManager.cs

@@ -1,206 +1,206 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Data.SQLite;
-using libsecondlife;
-
-namespace OpenSim.Framework.Data.SQLite
-{
-    class SQLiteManager
-    {
-        IDbConnection dbcon;
-
-        /// <summary>
-        /// Initialises and creates a new SQLite connection and maintains it.
-        /// </summary>
-        /// <param name="hostname">The SQLite server being connected to</param>
-        /// <param name="database">The name of the SQLite database being used</param>
-        /// <param name="username">The username logging into the database</param>
-        /// <param name="password">The password for the user logging in</param>
-        /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param>
-        public SQLiteManager(string hostname, string database, string username, string password, string cpooling)
-        {
-            try
-            {
-                string connectionString = "URI=file:GridServerSqlite.db;";
-                dbcon = new SQLiteConnection(connectionString);
-
-                dbcon.Open();
-            }
-            catch (Exception e)
-            {
-                throw new Exception("Error initialising SQLite Database: " + e.ToString());
-            }
-        }
-
-        /// <summary>
-        /// Shuts down the database connection
-        /// </summary>
-        public void Close()
-        {
-            dbcon.Close();
-            dbcon = null;
-        }
-
-        /// <summary>
-        /// Runs a query with protection against SQL Injection by using parameterised input.
-        /// </summary>
-        /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param>
-        /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param>
-        /// <returns>A SQLite DB Command</returns>
-        public IDbCommand Query(string sql, Dictionary<string, string> parameters)
-        {
-            SQLiteCommand dbcommand = (SQLiteCommand)dbcon.CreateCommand();
-            dbcommand.CommandText = sql;
-            foreach (KeyValuePair<string, string> param in parameters)
-            {
-                SQLiteParameter paramx = new SQLiteParameter(param.Key,param.Value);
-                dbcommand.Parameters.Add(paramx);
-            }
-
-            return (IDbCommand)dbcommand;
-        }
-
-        /// <summary>
-        /// Reads a region row from a database reader
-        /// </summary>
-        /// <param name="reader">An active database reader</param>
-        /// <returns>A region profile</returns>
-        public SimProfileData getRow(IDataReader reader)
-        {
-            SimProfileData retval = new SimProfileData();
-
-            if (reader.Read())
-            {
-                // Region Main
-                retval.regionHandle = (ulong)reader["regionHandle"];
-                retval.regionName = (string)reader["regionName"];
-                retval.UUID = new LLUUID((string)reader["uuid"]);
-
-                // Secrets
-                retval.regionRecvKey = (string)reader["regionRecvKey"];
-                retval.regionSecret = (string)reader["regionSecret"];
-                retval.regionSendKey = (string)reader["regionSendKey"];
-
-                // Region Server
-                retval.regionDataURI = (string)reader["regionDataURI"];
-                retval.regionOnline = false; // Needs to be pinged before this can be set.
-                retval.serverIP = (string)reader["serverIP"];
-                retval.serverPort = (uint)reader["serverPort"];
-                retval.serverURI = (string)reader["serverURI"];
-
-                // Location
-                retval.regionLocX = (uint)((int)reader["locX"]);
-                retval.regionLocY = (uint)((int)reader["locY"]);
-                retval.regionLocZ = (uint)((int)reader["locZ"]);
-
-                // Neighbours - 0 = No Override
-                retval.regionEastOverrideHandle = (ulong)reader["eastOverrideHandle"];
-                retval.regionWestOverrideHandle = (ulong)reader["westOverrideHandle"];
-                retval.regionSouthOverrideHandle = (ulong)reader["southOverrideHandle"];
-                retval.regionNorthOverrideHandle = (ulong)reader["northOverrideHandle"];
-
-                // Assets
-                retval.regionAssetURI = (string)reader["regionAssetURI"];
-                retval.regionAssetRecvKey = (string)reader["regionAssetRecvKey"];
-                retval.regionAssetSendKey = (string)reader["regionAssetSendKey"];
-
-                // Userserver
-                retval.regionUserURI = (string)reader["regionUserURI"];
-                retval.regionUserRecvKey = (string)reader["regionUserRecvKey"];
-                retval.regionUserSendKey = (string)reader["regionUserSendKey"];
-            }
-            else
-            {
-                throw new Exception("No rows to return");
-            }
-            return retval;
-        }
-
-        /// <summary>
-        /// Inserts a new region into the database
-        /// </summary>
-        /// <param name="profile">The region to insert</param>
-        /// <returns>Success?</returns>
-        public bool insertRow(SimProfileData profile)
-        {
-            string sql = "REPLACE INTO regions VALUES (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, ";
-            sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, ";
-            sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey) VALUES ";
-
-            sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, ";
-            sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, ";
-            sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey);";
-
-            Dictionary<string, string> parameters = new Dictionary<string, string>();
-
-            parameters["regionHandle"] = profile.regionHandle.ToString();
-            parameters["regionName"] = profile.regionName;
-            parameters["uuid"] = profile.UUID.ToString();
-            parameters["regionRecvKey"] = profile.regionRecvKey;
-            parameters["regionSendKey"] = profile.regionSendKey;
-            parameters["regionDataURI"] = profile.regionDataURI;
-            parameters["serverIP"] = profile.serverIP;
-            parameters["serverPort"] = profile.serverPort.ToString();
-            parameters["serverURI"] = profile.serverURI;
-            parameters["locX"] = profile.regionLocX.ToString();
-            parameters["locY"] = profile.regionLocY.ToString();
-            parameters["locZ"] = profile.regionLocZ.ToString();
-            parameters["eastOverrideHandle"] = profile.regionEastOverrideHandle.ToString();
-            parameters["westOverrideHandle"] = profile.regionWestOverrideHandle.ToString();
-            parameters["northOverrideHandle"] = profile.regionNorthOverrideHandle.ToString();
-            parameters["southOverrideHandle"] = profile.regionSouthOverrideHandle.ToString();
-            parameters["regionAssetURI"] = profile.regionAssetURI;
-            parameters["regionAssetRecvKey"] = profile.regionAssetRecvKey;
-            parameters["regionAssetSendKey"] = profile.regionAssetSendKey;
-            parameters["regionUserURI"] = profile.regionUserURI;
-            parameters["regionUserRecvKey"] = profile.regionUserRecvKey;
-            parameters["regionUserSendKey"] = profile.regionUserSendKey;
-
-            bool returnval = false;
-
-            try
-            {
-                IDbCommand result = Query(sql, parameters);
-
-                if (result.ExecuteNonQuery() == 1)
-                    returnval = true;
-
-                result.Dispose();
-            }
-            catch (Exception)
-            {
-                return false;
-            }
-
-            return returnval;
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.SQLite;
+using libsecondlife;
+
+namespace OpenSim.Framework.Data.SQLite
+{
+    class SQLiteManager
+    {
+        IDbConnection dbcon;
+
+        /// <summary>
+        /// Initialises and creates a new SQLite connection and maintains it.
+        /// </summary>
+        /// <param name="hostname">The SQLite server being connected to</param>
+        /// <param name="database">The name of the SQLite database being used</param>
+        /// <param name="username">The username logging into the database</param>
+        /// <param name="password">The password for the user logging in</param>
+        /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param>
+        public SQLiteManager(string hostname, string database, string username, string password, string cpooling)
+        {
+            try
+            {
+                string connectionString = "URI=file:GridServerSqlite.db;";
+                dbcon = new SQLiteConnection(connectionString);
+
+                dbcon.Open();
+            }
+            catch (Exception e)
+            {
+                throw new Exception("Error initialising SQLite Database: " + e.ToString());
+            }
+        }
+
+        /// <summary>
+        /// Shuts down the database connection
+        /// </summary>
+        public void Close()
+        {
+            dbcon.Close();
+            dbcon = null;
+        }
+
+        /// <summary>
+        /// Runs a query with protection against SQL Injection by using parameterised input.
+        /// </summary>
+        /// <param name="sql">The SQL string - replace any variables such as WHERE x = "y" with WHERE x = @y</param>
+        /// <param name="parameters">The parameters - index so that @y is indexed as 'y'</param>
+        /// <returns>A SQLite DB Command</returns>
+        public IDbCommand Query(string sql, Dictionary<string, string> parameters)
+        {
+            SQLiteCommand dbcommand = (SQLiteCommand)dbcon.CreateCommand();
+            dbcommand.CommandText = sql;
+            foreach (KeyValuePair<string, string> param in parameters)
+            {
+                SQLiteParameter paramx = new SQLiteParameter(param.Key,param.Value);
+                dbcommand.Parameters.Add(paramx);
+            }
+
+            return (IDbCommand)dbcommand;
+        }
+
+        /// <summary>
+        /// Reads a region row from a database reader
+        /// </summary>
+        /// <param name="reader">An active database reader</param>
+        /// <returns>A region profile</returns>
+        public SimProfileData getRow(IDataReader reader)
+        {
+            SimProfileData retval = new SimProfileData();
+
+            if (reader.Read())
+            {
+                // Region Main
+                retval.regionHandle = (ulong)reader["regionHandle"];
+                retval.regionName = (string)reader["regionName"];
+                retval.UUID = new LLUUID((string)reader["uuid"]);
+
+                // Secrets
+                retval.regionRecvKey = (string)reader["regionRecvKey"];
+                retval.regionSecret = (string)reader["regionSecret"];
+                retval.regionSendKey = (string)reader["regionSendKey"];
+
+                // Region Server
+                retval.regionDataURI = (string)reader["regionDataURI"];
+                retval.regionOnline = false; // Needs to be pinged before this can be set.
+                retval.serverIP = (string)reader["serverIP"];
+                retval.serverPort = (uint)reader["serverPort"];
+                retval.serverURI = (string)reader["serverURI"];
+
+                // Location
+                retval.regionLocX = (uint)((int)reader["locX"]);
+                retval.regionLocY = (uint)((int)reader["locY"]);
+                retval.regionLocZ = (uint)((int)reader["locZ"]);
+
+                // Neighbours - 0 = No Override
+                retval.regionEastOverrideHandle = (ulong)reader["eastOverrideHandle"];
+                retval.regionWestOverrideHandle = (ulong)reader["westOverrideHandle"];
+                retval.regionSouthOverrideHandle = (ulong)reader["southOverrideHandle"];
+                retval.regionNorthOverrideHandle = (ulong)reader["northOverrideHandle"];
+
+                // Assets
+                retval.regionAssetURI = (string)reader["regionAssetURI"];
+                retval.regionAssetRecvKey = (string)reader["regionAssetRecvKey"];
+                retval.regionAssetSendKey = (string)reader["regionAssetSendKey"];
+
+                // Userserver
+                retval.regionUserURI = (string)reader["regionUserURI"];
+                retval.regionUserRecvKey = (string)reader["regionUserRecvKey"];
+                retval.regionUserSendKey = (string)reader["regionUserSendKey"];
+            }
+            else
+            {
+                throw new Exception("No rows to return");
+            }
+            return retval;
+        }
+
+        /// <summary>
+        /// Inserts a new region into the database
+        /// </summary>
+        /// <param name="profile">The region to insert</param>
+        /// <returns>Success?</returns>
+        public bool insertRow(SimProfileData profile)
+        {
+            string sql = "REPLACE INTO regions VALUES (regionHandle, regionName, uuid, regionRecvKey, regionSecret, regionSendKey, regionDataURI, ";
+            sql += "serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, ";
+            sql += "regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey) VALUES ";
+
+            sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, ";
+            sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, ";
+            sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey);";
+
+            Dictionary<string, string> parameters = new Dictionary<string, string>();
+
+            parameters["regionHandle"] = profile.regionHandle.ToString();
+            parameters["regionName"] = profile.regionName;
+            parameters["uuid"] = profile.UUID.ToString();
+            parameters["regionRecvKey"] = profile.regionRecvKey;
+            parameters["regionSendKey"] = profile.regionSendKey;
+            parameters["regionDataURI"] = profile.regionDataURI;
+            parameters["serverIP"] = profile.serverIP;
+            parameters["serverPort"] = profile.serverPort.ToString();
+            parameters["serverURI"] = profile.serverURI;
+            parameters["locX"] = profile.regionLocX.ToString();
+            parameters["locY"] = profile.regionLocY.ToString();
+            parameters["locZ"] = profile.regionLocZ.ToString();
+            parameters["eastOverrideHandle"] = profile.regionEastOverrideHandle.ToString();
+            parameters["westOverrideHandle"] = profile.regionWestOverrideHandle.ToString();
+            parameters["northOverrideHandle"] = profile.regionNorthOverrideHandle.ToString();
+            parameters["southOverrideHandle"] = profile.regionSouthOverrideHandle.ToString();
+            parameters["regionAssetURI"] = profile.regionAssetURI;
+            parameters["regionAssetRecvKey"] = profile.regionAssetRecvKey;
+            parameters["regionAssetSendKey"] = profile.regionAssetSendKey;
+            parameters["regionUserURI"] = profile.regionUserURI;
+            parameters["regionUserRecvKey"] = profile.regionUserRecvKey;
+            parameters["regionUserSendKey"] = profile.regionUserSendKey;
+
+            bool returnval = false;
+
+            try
+            {
+                IDbCommand result = Query(sql, parameters);
+
+                if (result.ExecuteNonQuery() == 1)
+                    returnval = true;
+
+                result.Dispose();
+            }
+            catch (Exception)
+            {
+                return false;
+            }
+
+            return returnval;
+        }
+    }
+}

+ 111 - 111
OpenSim/Framework/Data/GridData.cs

@@ -1,111 +1,111 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-
-namespace OpenSim.Framework.Data
-{
-    public enum DataResponse
-    {
-        RESPONSE_OK,
-        RESPONSE_AUTHREQUIRED,
-        RESPONSE_INVALIDCREDENTIALS,
-        RESPONSE_ERROR
-    }
-
-    /// <summary>
-    /// A standard grid interface
-    /// </summary>
-    public interface IGridData
-    {
-        /// <summary>
-        /// Returns a sim profile from a regionHandle
-        /// </summary>
-        /// <param name="regionHandle">A 64bit Region Handle</param>
-        /// <returns>A simprofile</returns>
-        SimProfileData GetProfileByHandle(ulong regionHandle);
-
-        /// <summary>
-        /// Returns a sim profile from a UUID
-        /// </summary>
-        /// <param name="UUID">A 128bit UUID</param>
-        /// <returns>A sim profile</returns>
-        SimProfileData GetProfileByLLUUID(LLUUID UUID);
-
-        /// <summary>
-        /// Returns all profiles within the specified range
-        /// </summary>
-        /// <param name="Xmin">Minimum sim coordinate (X)</param>
-        /// <param name="Ymin">Minimum sim coordinate (Y)</param>
-        /// <param name="Xmax">Maximum sim coordinate (X)</param>
-        /// <param name="Ymin">Maximum sim coordinate (Y)</param>
-        /// <returns>An array containing all the sim profiles in the specified range</returns>
-        SimProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax);
-
-        /// <summary>
-        /// Authenticates a sim by use of it's recv key. 
-        /// WARNING: Insecure
-        /// </summary>
-        /// <param name="UUID">The UUID sent by the sim</param>
-        /// <param name="regionHandle">The regionhandle sent by the sim</param>
-        /// <param name="simrecvkey">The recieving key sent by the sim</param>
-        /// <returns>Whether the sim has been authenticated</returns>
-        bool AuthenticateSim(LLUUID UUID, ulong regionHandle, string simrecvkey);
-
-        /// <summary>
-        /// Initialises the interface
-        /// </summary>
-        void Initialise();
-
-        /// <summary>
-        /// Closes the interface
-        /// </summary>
-        void Close();
-
-        /// <summary>
-        /// The plugin being loaded
-        /// </summary>
-        /// <returns>A string containing the plugin name</returns>
-        string getName();
-
-        /// <summary>
-        /// The plugins version
-        /// </summary>
-        /// <returns>A string containing the plugin version</returns>
-        string getVersion();
-
-        /// <summary>
-        /// Adds a new profile to the database
-        /// </summary>
-        /// <param name="profile">The profile to add</param>
-        /// <returns>RESPONSE_OK if successful, error if not.</returns>
-        DataResponse AddProfile(SimProfileData profile);
-
-        ReservationData GetReservationAtPoint(uint x, uint y);
-
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+
+namespace OpenSim.Framework.Data
+{
+    public enum DataResponse
+    {
+        RESPONSE_OK,
+        RESPONSE_AUTHREQUIRED,
+        RESPONSE_INVALIDCREDENTIALS,
+        RESPONSE_ERROR
+    }
+
+    /// <summary>
+    /// A standard grid interface
+    /// </summary>
+    public interface IGridData
+    {
+        /// <summary>
+        /// Returns a sim profile from a regionHandle
+        /// </summary>
+        /// <param name="regionHandle">A 64bit Region Handle</param>
+        /// <returns>A simprofile</returns>
+        SimProfileData GetProfileByHandle(ulong regionHandle);
+
+        /// <summary>
+        /// Returns a sim profile from a UUID
+        /// </summary>
+        /// <param name="UUID">A 128bit UUID</param>
+        /// <returns>A sim profile</returns>
+        SimProfileData GetProfileByLLUUID(LLUUID UUID);
+
+        /// <summary>
+        /// Returns all profiles within the specified range
+        /// </summary>
+        /// <param name="Xmin">Minimum sim coordinate (X)</param>
+        /// <param name="Ymin">Minimum sim coordinate (Y)</param>
+        /// <param name="Xmax">Maximum sim coordinate (X)</param>
+        /// <param name="Ymin">Maximum sim coordinate (Y)</param>
+        /// <returns>An array containing all the sim profiles in the specified range</returns>
+        SimProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax);
+
+        /// <summary>
+        /// Authenticates a sim by use of it's recv key. 
+        /// WARNING: Insecure
+        /// </summary>
+        /// <param name="UUID">The UUID sent by the sim</param>
+        /// <param name="regionHandle">The regionhandle sent by the sim</param>
+        /// <param name="simrecvkey">The recieving key sent by the sim</param>
+        /// <returns>Whether the sim has been authenticated</returns>
+        bool AuthenticateSim(LLUUID UUID, ulong regionHandle, string simrecvkey);
+
+        /// <summary>
+        /// Initialises the interface
+        /// </summary>
+        void Initialise();
+
+        /// <summary>
+        /// Closes the interface
+        /// </summary>
+        void Close();
+
+        /// <summary>
+        /// The plugin being loaded
+        /// </summary>
+        /// <returns>A string containing the plugin name</returns>
+        string getName();
+
+        /// <summary>
+        /// The plugins version
+        /// </summary>
+        /// <returns>A string containing the plugin version</returns>
+        string getVersion();
+
+        /// <summary>
+        /// Adds a new profile to the database
+        /// </summary>
+        /// <param name="profile">The profile to add</param>
+        /// <returns>RESPONSE_OK if successful, error if not.</returns>
+        DataResponse AddProfile(SimProfileData profile);
+
+        ReservationData GetReservationAtPoint(uint x, uint y);
+
+    }
+}

+ 90 - 90
OpenSim/Framework/Data/ILogData.cs

@@ -1,90 +1,90 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-namespace OpenSim.Framework.Data
-{
-    /// <summary>
-    /// The severity of an individual log message
-    /// </summary>
-    public enum LogSeverity : int
-    {
-        /// <summary>
-        /// Critical: systems failure
-        /// </summary>
-        CRITICAL = 1,
-        /// <summary>
-        /// Major: warning prior to systems failure
-        /// </summary>
-        MAJOR = 2,
-        /// <summary>
-        /// Medium: an individual non-critical task failed
-        /// </summary>
-        MEDIUM = 3,
-        /// <summary>
-        /// Low: Informational warning
-        /// </summary>
-        LOW = 4,
-        /// <summary>
-        /// Info: Information
-        /// </summary>
-        INFO = 5,
-        /// <summary>
-        /// Verbose: Debug Information
-        /// </summary>
-        VERBOSE = 6
-    }
-
-    /// <summary>
-    /// An interface to a LogData storage system
-    /// </summary>
-    public interface ILogData
-    {
-        void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority,string logMessage);
-        /// <summary>
-        /// Initialises the interface
-        /// </summary>
-        void Initialise();
-
-        /// <summary>
-        /// Closes the interface
-        /// </summary>
-        void Close();
-
-        /// <summary>
-        /// The plugin being loaded
-        /// </summary>
-        /// <returns>A string containing the plugin name</returns>
-        string getName();
-
-        /// <summary>
-        /// The plugins version
-        /// </summary>
-        /// <returns>A string containing the plugin version</returns>
-        string getVersion();
-    }
-
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+namespace OpenSim.Framework.Data
+{
+    /// <summary>
+    /// The severity of an individual log message
+    /// </summary>
+    public enum LogSeverity : int
+    {
+        /// <summary>
+        /// Critical: systems failure
+        /// </summary>
+        CRITICAL = 1,
+        /// <summary>
+        /// Major: warning prior to systems failure
+        /// </summary>
+        MAJOR = 2,
+        /// <summary>
+        /// Medium: an individual non-critical task failed
+        /// </summary>
+        MEDIUM = 3,
+        /// <summary>
+        /// Low: Informational warning
+        /// </summary>
+        LOW = 4,
+        /// <summary>
+        /// Info: Information
+        /// </summary>
+        INFO = 5,
+        /// <summary>
+        /// Verbose: Debug Information
+        /// </summary>
+        VERBOSE = 6
+    }
+
+    /// <summary>
+    /// An interface to a LogData storage system
+    /// </summary>
+    public interface ILogData
+    {
+        void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority,string logMessage);
+        /// <summary>
+        /// Initialises the interface
+        /// </summary>
+        void Initialise();
+
+        /// <summary>
+        /// Closes the interface
+        /// </summary>
+        void Close();
+
+        /// <summary>
+        /// The plugin being loaded
+        /// </summary>
+        /// <returns>A string containing the plugin name</returns>
+        string getName();
+
+        /// <summary>
+        /// The plugins version
+        /// </summary>
+        /// <returns>A string containing the plugin version</returns>
+        string getVersion();
+    }
+
+}

+ 96 - 96
OpenSim/Framework/Data/IniConfig.cs

@@ -1,96 +1,96 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.IO;
-using System.Text.RegularExpressions;
-/* 
- Taken from public code listing at by Alex Pinsker
- http://alexpinsker.blogspot.com/2005/12/reading-ini-file-from-c_113432097333021549.html
- */
-
-namespace OpenSim.Framework.Data
-{
-    /// <summary>
-    /// Parse settings from ini-like files
-    /// </summary>
-    public class IniFile
-    {
-        static IniFile()
-        {
-            _iniKeyValuePatternRegex = new Regex(
-                @"((\s)*(?<Key>([^\=^\s^\n]+))[\s^\n]*
-                # key part (surrounding whitespace stripped)
-                \=
-                (\s)*(?<Value>([^\n^\s]+(\n){0,1})))
-                # value part (surrounding whitespace stripped)
-                ",
-                RegexOptions.IgnorePatternWhitespace |
-                RegexOptions.Compiled |
-                RegexOptions.CultureInvariant);
-        }
-        static private Regex _iniKeyValuePatternRegex;
-
-        public IniFile(string iniFileName)
-        {
-            _iniFileName = iniFileName;
-        }
-
-        public string ParseFileReadValue(string key)
-        {
-            using (StreamReader reader =
-                  new StreamReader(_iniFileName))
-            {
-                do
-                {
-                    string line = reader.ReadLine();
-                    Match match =
-                        _iniKeyValuePatternRegex.Match(line);
-                    if (match.Success)
-                    {
-                        string currentKey =
-                                match.Groups["Key"].Value as string;
-                        if (currentKey != null &&
-                       currentKey.Trim().CompareTo(key) == 0)
-                        {
-                            string value =
-                              match.Groups["Value"].Value as string;
-                            return value;
-                        }
-                    }
-
-                }
-                while (reader.Peek() != -1);
-            }
-            return null;
-        }
-
-        public string IniFileName
-        {
-            get { return _iniFileName; }
-        }    private string _iniFileName;
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.IO;
+using System.Text.RegularExpressions;
+/* 
+ Taken from public code listing at by Alex Pinsker
+ http://alexpinsker.blogspot.com/2005/12/reading-ini-file-from-c_113432097333021549.html
+ */
+
+namespace OpenSim.Framework.Data
+{
+    /// <summary>
+    /// Parse settings from ini-like files
+    /// </summary>
+    public class IniFile
+    {
+        static IniFile()
+        {
+            _iniKeyValuePatternRegex = new Regex(
+                @"((\s)*(?<Key>([^\=^\s^\n]+))[\s^\n]*
+                # key part (surrounding whitespace stripped)
+                \=
+                (\s)*(?<Value>([^\n^\s]+(\n){0,1})))
+                # value part (surrounding whitespace stripped)
+                ",
+                RegexOptions.IgnorePatternWhitespace |
+                RegexOptions.Compiled |
+                RegexOptions.CultureInvariant);
+        }
+        static private Regex _iniKeyValuePatternRegex;
+
+        public IniFile(string iniFileName)
+        {
+            _iniFileName = iniFileName;
+        }
+
+        public string ParseFileReadValue(string key)
+        {
+            using (StreamReader reader =
+                  new StreamReader(_iniFileName))
+            {
+                do
+                {
+                    string line = reader.ReadLine();
+                    Match match =
+                        _iniKeyValuePatternRegex.Match(line);
+                    if (match.Success)
+                    {
+                        string currentKey =
+                                match.Groups["Key"].Value as string;
+                        if (currentKey != null &&
+                       currentKey.Trim().CompareTo(key) == 0)
+                        {
+                            string value =
+                              match.Groups["Value"].Value as string;
+                            return value;
+                        }
+                    }
+
+                }
+                while (reader.Peek() != -1);
+            }
+            return null;
+        }
+
+        public string IniFileName
+        {
+            get { return _iniFileName; }
+        }    private string _iniFileName;
+    }
+}

+ 197 - 197
OpenSim/Framework/Data/InventoryData.cs

@@ -1,197 +1,197 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Collections.Generic;
-using libsecondlife;
-
-namespace OpenSim.Framework.Data
-{
-    /// <summary>
-    /// Inventory Item - contains all the properties associated with an individual inventory piece.
-    /// </summary>
-    public class InventoryItemBase
-    {
-        /// <summary>
-        /// A UUID containing the ID for the inventory item itself
-        /// </summary>
-        public LLUUID inventoryID;
-        /// <summary>
-        /// The UUID of the associated asset on the asset server
-        /// </summary>
-        public LLUUID assetID;
-        /// <summary>
-        /// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc)
-        /// </summary>
-        public int type;
-        /// <summary>
-        /// The folder this item is contained in 
-        /// </summary>
-        public LLUUID parentFolderID;
-        /// <summary>
-        /// The owner of this inventory item
-        /// </summary>
-        public LLUUID avatarID;
-        /// <summary>
-        /// The creator of this item
-        /// </summary>
-        public LLUUID creatorsID;
-        /// <summary>
-        /// The name of the inventory item (must be less than 64 characters)
-        /// </summary>
-        public string inventoryName;
-        /// <summary>
-        /// The description of the inventory item (must be less than 64 characters)
-        /// </summary>
-        public string inventoryDescription;
-        /// <summary>
-        /// A mask containing the permissions for the next owner (cannot be enforced)
-        /// </summary>
-        public uint inventoryNextPermissions;
-        /// <summary>
-        /// A mask containing permissions for the current owner (cannot be enforced)
-        /// </summary>
-        public uint inventoryCurrentPermissions;
-    }
-
-    /// <summary>
-    /// A Class for folders which contain users inventory
-    /// </summary>
-    public class InventoryFolderBase
-    {
-        /// <summary>
-        /// The name of the folder (64 characters or less)
-        /// </summary>
-        public string name;
-        /// <summary>
-        /// The agent who's inventory this is contained by
-        /// </summary>
-        public LLUUID agentID;
-        /// <summary>
-        /// The folder this folder is contained in 
-        /// </summary>
-        public LLUUID parentID;
-        /// <summary>
-        /// The UUID for this folder
-        /// </summary>
-        public LLUUID folderID;
-        /// <summary>
-        /// Tyep of Items normally stored in this folder
-        /// </summary>
-        public ushort type;
-        /// <summary>
-        /// 
-        /// </summary>
-        public ushort version;
-    }
-
-    /// <summary>
-    /// An interface for accessing inventory data from a storage server
-    /// </summary>
-    public interface IInventoryData
-    {
-        /// <summary>
-        /// Initialises the interface
-        /// </summary>
-        void Initialise();
-
-        /// <summary>
-        /// Closes the interface
-        /// </summary>
-        void Close();
-
-        /// <summary>
-        /// The plugin being loaded
-        /// </summary>
-        /// <returns>A string containing the plugin name</returns>
-        string getName();
-
-        /// <summary>
-        /// The plugins version
-        /// </summary>
-        /// <returns>A string containing the plugin version</returns>
-        string getVersion();
-
-        /// <summary>
-        /// Returns a list of inventory items contained within the specified folder
-        /// </summary>
-        /// <param name="folderID">The UUID of the target folder</param>
-        /// <returns>A List of InventoryItemBase items</returns>
-        List<InventoryItemBase> getInventoryInFolder(LLUUID folderID);
-
-        /// <summary>
-        /// Returns a list of folders in the users inventory root.
-        /// </summary>
-        /// <param name="user">The UUID of the user who is having inventory being returned</param>
-        /// <returns>A list of folders</returns>
-        List<InventoryFolderBase> getUserRootFolders(LLUUID user);
-
-        /// <summary>
-        /// Returns a list of inventory folders contained in the folder 'parentID'
-        /// </summary>
-        /// <param name="parentID">The folder to get subfolders for</param>
-        /// <returns>A list of inventory folders</returns>
-        List<InventoryFolderBase> getInventoryFolders(LLUUID parentID);
-
-        /// <summary>
-        /// Returns an inventory item by its UUID
-        /// </summary>
-        /// <param name="item">The UUID of the item to be returned</param>
-        /// <returns>A class containing item information</returns>
-        InventoryItemBase getInventoryItem(LLUUID item);
-
-        /// <summary>
-        /// Returns a specified inventory folder by its UUID
-        /// </summary>
-        /// <param name="folder">The UUID of the folder to be returned</param>
-        /// <returns>A class containing folder information</returns>
-        InventoryFolderBase getInventoryFolder(LLUUID folder);
-
-        /// <summary>
-        /// Creates a new inventory item based on item
-        /// </summary>
-        /// <param name="item">The item to be created</param>
-        void addInventoryItem(InventoryItemBase item);
-
-        /// <summary>
-        /// Updates an inventory item with item (updates based on ID)
-        /// </summary>
-        /// <param name="item">The updated item</param>
-        void updateInventoryItem(InventoryItemBase item);
-
-        /// <summary>
-        /// Adds a new folder specified by folder
-        /// </summary>
-        /// <param name="folder">The inventory folder</param>
-        void addInventoryFolder(InventoryFolderBase folder);
-
-        /// <summary>
-        /// Updates a folder based on its ID with folder
-        /// </summary>
-        /// <param name="folder">The inventory folder</param>
-        void updateInventoryFolder(InventoryFolderBase folder);
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Collections.Generic;
+using libsecondlife;
+
+namespace OpenSim.Framework.Data
+{
+    /// <summary>
+    /// Inventory Item - contains all the properties associated with an individual inventory piece.
+    /// </summary>
+    public class InventoryItemBase
+    {
+        /// <summary>
+        /// A UUID containing the ID for the inventory item itself
+        /// </summary>
+        public LLUUID inventoryID;
+        /// <summary>
+        /// The UUID of the associated asset on the asset server
+        /// </summary>
+        public LLUUID assetID;
+        /// <summary>
+        /// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc)
+        /// </summary>
+        public int type;
+        /// <summary>
+        /// The folder this item is contained in 
+        /// </summary>
+        public LLUUID parentFolderID;
+        /// <summary>
+        /// The owner of this inventory item
+        /// </summary>
+        public LLUUID avatarID;
+        /// <summary>
+        /// The creator of this item
+        /// </summary>
+        public LLUUID creatorsID;
+        /// <summary>
+        /// The name of the inventory item (must be less than 64 characters)
+        /// </summary>
+        public string inventoryName;
+        /// <summary>
+        /// The description of the inventory item (must be less than 64 characters)
+        /// </summary>
+        public string inventoryDescription;
+        /// <summary>
+        /// A mask containing the permissions for the next owner (cannot be enforced)
+        /// </summary>
+        public uint inventoryNextPermissions;
+        /// <summary>
+        /// A mask containing permissions for the current owner (cannot be enforced)
+        /// </summary>
+        public uint inventoryCurrentPermissions;
+    }
+
+    /// <summary>
+    /// A Class for folders which contain users inventory
+    /// </summary>
+    public class InventoryFolderBase
+    {
+        /// <summary>
+        /// The name of the folder (64 characters or less)
+        /// </summary>
+        public string name;
+        /// <summary>
+        /// The agent who's inventory this is contained by
+        /// </summary>
+        public LLUUID agentID;
+        /// <summary>
+        /// The folder this folder is contained in 
+        /// </summary>
+        public LLUUID parentID;
+        /// <summary>
+        /// The UUID for this folder
+        /// </summary>
+        public LLUUID folderID;
+        /// <summary>
+        /// Tyep of Items normally stored in this folder
+        /// </summary>
+        public ushort type;
+        /// <summary>
+        /// 
+        /// </summary>
+        public ushort version;
+    }
+
+    /// <summary>
+    /// An interface for accessing inventory data from a storage server
+    /// </summary>
+    public interface IInventoryData
+    {
+        /// <summary>
+        /// Initialises the interface
+        /// </summary>
+        void Initialise();
+
+        /// <summary>
+        /// Closes the interface
+        /// </summary>
+        void Close();
+
+        /// <summary>
+        /// The plugin being loaded
+        /// </summary>
+        /// <returns>A string containing the plugin name</returns>
+        string getName();
+
+        /// <summary>
+        /// The plugins version
+        /// </summary>
+        /// <returns>A string containing the plugin version</returns>
+        string getVersion();
+
+        /// <summary>
+        /// Returns a list of inventory items contained within the specified folder
+        /// </summary>
+        /// <param name="folderID">The UUID of the target folder</param>
+        /// <returns>A List of InventoryItemBase items</returns>
+        List<InventoryItemBase> getInventoryInFolder(LLUUID folderID);
+
+        /// <summary>
+        /// Returns a list of folders in the users inventory root.
+        /// </summary>
+        /// <param name="user">The UUID of the user who is having inventory being returned</param>
+        /// <returns>A list of folders</returns>
+        List<InventoryFolderBase> getUserRootFolders(LLUUID user);
+
+        /// <summary>
+        /// Returns a list of inventory folders contained in the folder 'parentID'
+        /// </summary>
+        /// <param name="parentID">The folder to get subfolders for</param>
+        /// <returns>A list of inventory folders</returns>
+        List<InventoryFolderBase> getInventoryFolders(LLUUID parentID);
+
+        /// <summary>
+        /// Returns an inventory item by its UUID
+        /// </summary>
+        /// <param name="item">The UUID of the item to be returned</param>
+        /// <returns>A class containing item information</returns>
+        InventoryItemBase getInventoryItem(LLUUID item);
+
+        /// <summary>
+        /// Returns a specified inventory folder by its UUID
+        /// </summary>
+        /// <param name="folder">The UUID of the folder to be returned</param>
+        /// <returns>A class containing folder information</returns>
+        InventoryFolderBase getInventoryFolder(LLUUID folder);
+
+        /// <summary>
+        /// Creates a new inventory item based on item
+        /// </summary>
+        /// <param name="item">The item to be created</param>
+        void addInventoryItem(InventoryItemBase item);
+
+        /// <summary>
+        /// Updates an inventory item with item (updates based on ID)
+        /// </summary>
+        /// <param name="item">The updated item</param>
+        void updateInventoryItem(InventoryItemBase item);
+
+        /// <summary>
+        /// Adds a new folder specified by folder
+        /// </summary>
+        /// <param name="folder">The inventory folder</param>
+        void addInventoryFolder(InventoryFolderBase folder);
+
+        /// <summary>
+        /// Updates a folder based on its ID with folder
+        /// </summary>
+        /// <param name="folder">The inventory folder</param>
+        void updateInventoryFolder(InventoryFolderBase folder);
+    }
+}

+ 33 - 33
OpenSim/Framework/Data/Properties/AssemblyInfo.cs

@@ -1,33 +1,33 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("OpenSim.Framework.Data")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("OpenSim.Framework.Data")]
-[assembly: AssemblyCopyright("Copyright ©  2007")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("3a711c34-b0c0-4264-b0fe-f366eabf9d7b")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+using System.Reflection;
+using System.Runtime.InteropServices;
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OpenSim.Framework.Data")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OpenSim.Framework.Data")]
+[assembly: AssemblyCopyright("Copyright ©  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("3a711c34-b0c0-4264-b0fe-f366eabf9d7b")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 47 - 47
OpenSim/Framework/Data/ReservationData.cs

@@ -1,47 +1,47 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-
-namespace OpenSim.Framework.Data
-{
-    public class ReservationData
-    {
-        public LLUUID userUUID = new LLUUID();
-        public int reservationMinX = 0;
-        public int reservationMinY = 0;
-        public int reservationMaxX = 65536;
-        public int reservationMaxY = 65536;
-        
-        public string reservationName = "";
-        public string reservationCompany = "";
-        public bool status = true;
-
-        public string gridSendKey = "";
-        public string gridRecvKey = "";
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+
+namespace OpenSim.Framework.Data
+{
+    public class ReservationData
+    {
+        public LLUUID userUUID = new LLUUID();
+        public int reservationMinX = 0;
+        public int reservationMinY = 0;
+        public int reservationMaxX = 65536;
+        public int reservationMaxY = 65536;
+        
+        public string reservationName = "";
+        public string reservationCompany = "";
+        public bool status = true;
+
+        public string gridSendKey = "";
+        public string gridRecvKey = "";
+    }
+}

+ 192 - 192
OpenSim/Framework/Data/SimProfileData.cs

@@ -1,192 +1,192 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-using Nwc.XmlRpc;
-
-using System;
-using System.Collections;
-
-namespace OpenSim.Framework.Data
-{
-    /// <summary>
-    /// A class which contains information known to the grid server about a region
-    /// </summary>
-    public class SimProfileData
-    {
-        /// <summary>
-        /// The name of the region
-        /// </summary>
-        public string regionName = "";
-
-        /// <summary>
-        /// A 64-bit number combining map position into a (mostly) unique ID
-        /// </summary>
-        public ulong regionHandle;
-
-        /// <summary>
-        /// OGS/OpenSim Specific ID for a region
-        /// </summary>
-        public LLUUID UUID;
-
-        /// <summary>
-        /// Coordinates of the region
-        /// </summary>
-        public uint regionLocX;
-        public uint regionLocY;
-        public uint regionLocZ; // Reserved (round-robin, layers, etc)
-
-        /// <summary>
-        /// Authentication secrets
-        /// </summary>
-        /// <remarks>Not very secure, needs improvement.</remarks>
-        public string regionSendKey = "";
-        public string regionRecvKey = "";
-        public string regionSecret = "";
-
-        /// <summary>
-        /// Whether the region is online
-        /// </summary>
-        public bool regionOnline;
-
-        /// <summary>
-        /// Information about the server that the region is currently hosted on
-        /// </summary>
-        public string serverIP = "";
-        public uint serverPort;
-        public string serverURI = "";
-
-        public uint httpPort;
-        public uint remotingPort;
-        public string httpServerURI = "";
-
-        /// <summary>
-        /// Set of optional overrides. Can be used to create non-eulicidean spaces.
-        /// </summary>
-        public ulong regionNorthOverrideHandle;
-        public ulong regionSouthOverrideHandle;
-        public ulong regionEastOverrideHandle;
-        public ulong regionWestOverrideHandle;
-
-        /// <summary>
-        /// Optional: URI Location of the region database
-        /// </summary>
-        /// <remarks>Used for floating sim pools where the region data is not nessecarily coupled to a specific server</remarks>
-        public string regionDataURI = "";
-
-        /// <summary>
-        /// Region Asset Details
-        /// </summary>
-        public string regionAssetURI = "";
-        public string regionAssetSendKey = "";
-        public string regionAssetRecvKey = "";
-
-        /// <summary>
-        /// Region Userserver Details
-        /// </summary>
-        public string regionUserURI = "";
-        public string regionUserSendKey = "";
-        public string regionUserRecvKey = "";
-
-        /// <summary>
-        /// Region Map Texture Asset
-        /// </summary>
-        public LLUUID regionMapTextureID = new LLUUID("00000000-0000-0000-9999-000000000006");
-
-        /// <summary>
-        /// Get Sim profile data from grid server when in grid mode
-        /// </summary>
-        /// <param name="region_uuid"></param>
-        /// <param name="gridserver_url"></param>
-        /// <param name="?"></param>
-        /// <returns></returns>
-        public SimProfileData RequestSimProfileData(LLUUID region_uuid, string gridserver_url, string gridserver_sendkey, string gridserver_recvkey)
-        {
-            Hashtable requestData = new Hashtable();
-            requestData["region_uuid"] = region_uuid.UUID.ToString();
-            requestData["authkey"] = gridserver_sendkey;
-            ArrayList SendParams = new ArrayList();
-            SendParams.Add(requestData);
-            XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams);
-            XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000);
-
-            Hashtable responseData = (Hashtable)GridResp.Value;
-
-            if (responseData.ContainsKey("error"))
-            {
-                return null;
-            }
-
-            SimProfileData simData = new SimProfileData();
-            simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]);
-            simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]);
-            simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256));
-            simData.serverIP = (string)responseData["sim_ip"];
-            simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]);
-            simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]);
-            simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]);
-            simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/";
-            simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/";
-            simData.UUID = new LLUUID((string)responseData["region_UUID"]);
-            simData.regionName = (string)responseData["region_name"];
-
-            return simData;            
-        }
-        public SimProfileData RequestSimProfileData(ulong region_handle, string gridserver_url, string gridserver_sendkey, string gridserver_recvkey)
-        {
-            Hashtable requestData = new Hashtable();
-            requestData["region_handle"] = region_handle.ToString();
-            requestData["authkey"] = gridserver_sendkey;
-            ArrayList SendParams = new ArrayList();
-            SendParams.Add(requestData);
-            XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams);
-            XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000);
-
-            Hashtable responseData = (Hashtable)GridResp.Value;
-
-            if (responseData.ContainsKey("error"))
-            {
-                return null;
-            }
-
-            SimProfileData simData = new SimProfileData();
-            simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]);
-            simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]);
-            simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256));
-            simData.serverIP = (string)responseData["sim_ip"];
-            simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]);
-            simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]);
-            simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]);
-            simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/";
-            simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/";
-            simData.UUID = new LLUUID((string)responseData["region_UUID"]);
-            simData.regionName = (string)responseData["region_name"];
-
-            return simData; 
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+using Nwc.XmlRpc;
+
+using System;
+using System.Collections;
+
+namespace OpenSim.Framework.Data
+{
+    /// <summary>
+    /// A class which contains information known to the grid server about a region
+    /// </summary>
+    public class SimProfileData
+    {
+        /// <summary>
+        /// The name of the region
+        /// </summary>
+        public string regionName = "";
+
+        /// <summary>
+        /// A 64-bit number combining map position into a (mostly) unique ID
+        /// </summary>
+        public ulong regionHandle;
+
+        /// <summary>
+        /// OGS/OpenSim Specific ID for a region
+        /// </summary>
+        public LLUUID UUID;
+
+        /// <summary>
+        /// Coordinates of the region
+        /// </summary>
+        public uint regionLocX;
+        public uint regionLocY;
+        public uint regionLocZ; // Reserved (round-robin, layers, etc)
+
+        /// <summary>
+        /// Authentication secrets
+        /// </summary>
+        /// <remarks>Not very secure, needs improvement.</remarks>
+        public string regionSendKey = "";
+        public string regionRecvKey = "";
+        public string regionSecret = "";
+
+        /// <summary>
+        /// Whether the region is online
+        /// </summary>
+        public bool regionOnline;
+
+        /// <summary>
+        /// Information about the server that the region is currently hosted on
+        /// </summary>
+        public string serverIP = "";
+        public uint serverPort;
+        public string serverURI = "";
+
+        public uint httpPort;
+        public uint remotingPort;
+        public string httpServerURI = "";
+
+        /// <summary>
+        /// Set of optional overrides. Can be used to create non-eulicidean spaces.
+        /// </summary>
+        public ulong regionNorthOverrideHandle;
+        public ulong regionSouthOverrideHandle;
+        public ulong regionEastOverrideHandle;
+        public ulong regionWestOverrideHandle;
+
+        /// <summary>
+        /// Optional: URI Location of the region database
+        /// </summary>
+        /// <remarks>Used for floating sim pools where the region data is not nessecarily coupled to a specific server</remarks>
+        public string regionDataURI = "";
+
+        /// <summary>
+        /// Region Asset Details
+        /// </summary>
+        public string regionAssetURI = "";
+        public string regionAssetSendKey = "";
+        public string regionAssetRecvKey = "";
+
+        /// <summary>
+        /// Region Userserver Details
+        /// </summary>
+        public string regionUserURI = "";
+        public string regionUserSendKey = "";
+        public string regionUserRecvKey = "";
+
+        /// <summary>
+        /// Region Map Texture Asset
+        /// </summary>
+        public LLUUID regionMapTextureID = new LLUUID("00000000-0000-0000-9999-000000000006");
+
+        /// <summary>
+        /// Get Sim profile data from grid server when in grid mode
+        /// </summary>
+        /// <param name="region_uuid"></param>
+        /// <param name="gridserver_url"></param>
+        /// <param name="?"></param>
+        /// <returns></returns>
+        public SimProfileData RequestSimProfileData(LLUUID region_uuid, string gridserver_url, string gridserver_sendkey, string gridserver_recvkey)
+        {
+            Hashtable requestData = new Hashtable();
+            requestData["region_uuid"] = region_uuid.UUID.ToString();
+            requestData["authkey"] = gridserver_sendkey;
+            ArrayList SendParams = new ArrayList();
+            SendParams.Add(requestData);
+            XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams);
+            XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000);
+
+            Hashtable responseData = (Hashtable)GridResp.Value;
+
+            if (responseData.ContainsKey("error"))
+            {
+                return null;
+            }
+
+            SimProfileData simData = new SimProfileData();
+            simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]);
+            simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]);
+            simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256));
+            simData.serverIP = (string)responseData["sim_ip"];
+            simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]);
+            simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]);
+            simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]);
+            simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/";
+            simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/";
+            simData.UUID = new LLUUID((string)responseData["region_UUID"]);
+            simData.regionName = (string)responseData["region_name"];
+
+            return simData;            
+        }
+        public SimProfileData RequestSimProfileData(ulong region_handle, string gridserver_url, string gridserver_sendkey, string gridserver_recvkey)
+        {
+            Hashtable requestData = new Hashtable();
+            requestData["region_handle"] = region_handle.ToString();
+            requestData["authkey"] = gridserver_sendkey;
+            ArrayList SendParams = new ArrayList();
+            SendParams.Add(requestData);
+            XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams);
+            XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000);
+
+            Hashtable responseData = (Hashtable)GridResp.Value;
+
+            if (responseData.ContainsKey("error"))
+            {
+                return null;
+            }
+
+            SimProfileData simData = new SimProfileData();
+            simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]);
+            simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]);
+            simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256));
+            simData.serverIP = (string)responseData["sim_ip"];
+            simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]);
+            simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]);
+            simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]);
+            simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/";
+            simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/";
+            simData.UUID = new LLUUID((string)responseData["region_UUID"]);
+            simData.regionName = (string)responseData["region_name"];
+
+            return simData; 
+        }
+    }
+}

+ 128 - 128
OpenSim/Framework/Data/UserData.cs

@@ -1,128 +1,128 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-
-namespace OpenSim.Framework.Data
-{
-    /// <summary>
-    /// An interface for connecting to user storage servers.
-    /// </summary>
-    public interface IUserData
-    {
-        /// <summary>
-        /// Returns a user profile from a database via their UUID
-        /// </summary>
-        /// <param name="user">The accounts UUID</param>
-        /// <returns>The user data profile</returns>
-        UserProfileData getUserByUUID(LLUUID user);
-
-        /// <summary>
-        /// Returns a users profile by searching their username
-        /// </summary>
-        /// <param name="name">The users username</param>
-        /// <returns>The user data profile</returns>
-        UserProfileData getUserByName(string name);
-
-        /// <summary>
-        /// Returns a users profile by searching their username parts
-        /// </summary>
-        /// <param name="fname">Account firstname</param>
-        /// <param name="lname">Account lastname</param>
-        /// <returns>The user data profile</returns>
-        UserProfileData getUserByName(string fname, string lname);
-
-        /// <summary>
-        /// Returns the current agent for a user searching by it's UUID
-        /// </summary>
-        /// <param name="user">The users UUID</param>
-        /// <returns>The current agent session</returns>
-        UserAgentData getAgentByUUID(LLUUID user);
-
-        /// <summary>
-        /// Returns the current session agent for a user searching by username
-        /// </summary>
-        /// <param name="name">The users account name</param>
-        /// <returns>The current agent session</returns>
-        UserAgentData getAgentByName(string name);
-
-        /// <summary>
-        /// Returns the current session agent for a user searching by username parts
-        /// </summary>
-        /// <param name="fname">The users first account name</param>
-        /// <param name="lname">The users account surname</param>
-        /// <returns>The current agent session</returns>
-        UserAgentData getAgentByName(string fname, string lname);
-
-        /// <summary>
-        /// Adds a new User profile to the database 
-        /// </summary>
-        /// <param name="user">UserProfile to add</param>
-        void addNewUserProfile(UserProfileData user);
-
-        /// <summary>
-        /// Adds a new agent to the database
-        /// </summary>
-        /// <param name="agent">The agent to add</param>
-        void addNewUserAgent(UserAgentData agent);
-
-        /// <summary>
-        /// Attempts to move currency units between accounts (NOT RELIABLE / TRUSTWORTHY. DONT TRY RUN YOUR OWN CURRENCY EXCHANGE WITH REAL VALUES)
-        /// </summary>
-        /// <param name="from">The account to transfer from</param>
-        /// <param name="to">The account to transfer to</param>
-        /// <param name="amount">The amount to transfer</param>
-        /// <returns>Successful?</returns>
-        bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount);
-
-        /// <summary>
-        /// Attempts to move inventory between accounts, if inventory is copyable it will be copied into the target account.
-        /// </summary>
-        /// <param name="from">User to transfer from</param>
-        /// <param name="to">User to transfer to</param>
-        /// <param name="inventory">Specified inventory item</param>
-        /// <returns>Successful?</returns>
-        bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID inventory);
-
-        /// <summary>
-        /// Returns the plugin version
-        /// </summary>
-        /// <returns>Plugin version in MAJOR.MINOR.REVISION.BUILD format</returns>
-        string getVersion();
-
-        /// <summary>
-        /// Returns the plugin name
-        /// </summary>
-        /// <returns>Plugin name, eg MySQL User Provider</returns>
-        string getName();
-
-        /// <summary>
-        /// Initialises the plugin (artificial constructor)
-        /// </summary>
-        void Initialise();
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+
+namespace OpenSim.Framework.Data
+{
+    /// <summary>
+    /// An interface for connecting to user storage servers.
+    /// </summary>
+    public interface IUserData
+    {
+        /// <summary>
+        /// Returns a user profile from a database via their UUID
+        /// </summary>
+        /// <param name="user">The accounts UUID</param>
+        /// <returns>The user data profile</returns>
+        UserProfileData getUserByUUID(LLUUID user);
+
+        /// <summary>
+        /// Returns a users profile by searching their username
+        /// </summary>
+        /// <param name="name">The users username</param>
+        /// <returns>The user data profile</returns>
+        UserProfileData getUserByName(string name);
+
+        /// <summary>
+        /// Returns a users profile by searching their username parts
+        /// </summary>
+        /// <param name="fname">Account firstname</param>
+        /// <param name="lname">Account lastname</param>
+        /// <returns>The user data profile</returns>
+        UserProfileData getUserByName(string fname, string lname);
+
+        /// <summary>
+        /// Returns the current agent for a user searching by it's UUID
+        /// </summary>
+        /// <param name="user">The users UUID</param>
+        /// <returns>The current agent session</returns>
+        UserAgentData getAgentByUUID(LLUUID user);
+
+        /// <summary>
+        /// Returns the current session agent for a user searching by username
+        /// </summary>
+        /// <param name="name">The users account name</param>
+        /// <returns>The current agent session</returns>
+        UserAgentData getAgentByName(string name);
+
+        /// <summary>
+        /// Returns the current session agent for a user searching by username parts
+        /// </summary>
+        /// <param name="fname">The users first account name</param>
+        /// <param name="lname">The users account surname</param>
+        /// <returns>The current agent session</returns>
+        UserAgentData getAgentByName(string fname, string lname);
+
+        /// <summary>
+        /// Adds a new User profile to the database 
+        /// </summary>
+        /// <param name="user">UserProfile to add</param>
+        void addNewUserProfile(UserProfileData user);
+
+        /// <summary>
+        /// Adds a new agent to the database
+        /// </summary>
+        /// <param name="agent">The agent to add</param>
+        void addNewUserAgent(UserAgentData agent);
+
+        /// <summary>
+        /// Attempts to move currency units between accounts (NOT RELIABLE / TRUSTWORTHY. DONT TRY RUN YOUR OWN CURRENCY EXCHANGE WITH REAL VALUES)
+        /// </summary>
+        /// <param name="from">The account to transfer from</param>
+        /// <param name="to">The account to transfer to</param>
+        /// <param name="amount">The amount to transfer</param>
+        /// <returns>Successful?</returns>
+        bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount);
+
+        /// <summary>
+        /// Attempts to move inventory between accounts, if inventory is copyable it will be copied into the target account.
+        /// </summary>
+        /// <param name="from">User to transfer from</param>
+        /// <param name="to">User to transfer to</param>
+        /// <param name="inventory">Specified inventory item</param>
+        /// <returns>Successful?</returns>
+        bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID inventory);
+
+        /// <summary>
+        /// Returns the plugin version
+        /// </summary>
+        /// <returns>Plugin version in MAJOR.MINOR.REVISION.BUILD format</returns>
+        string getVersion();
+
+        /// <summary>
+        /// Returns the plugin name
+        /// </summary>
+        /// <returns>Plugin name, eg MySQL User Provider</returns>
+        string getName();
+
+        /// <summary>
+        /// Initialises the plugin (artificial constructor)
+        /// </summary>
+        void Initialise();
+    }
+}

+ 180 - 180
OpenSim/Framework/Data/UserProfileData.cs

@@ -1,180 +1,180 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using libsecondlife;
-
-namespace OpenSim.Framework.Data
-{
-    /// <summary>
-    /// Information about a particular user known to the userserver
-    /// </summary>
-    public class UserProfileData
-    {
-        /// <summary>
-        /// The ID value for this user
-        /// </summary>
-        public LLUUID UUID;
-
-        /// <summary>
-        /// The first component of a users account name
-        /// </summary>
-        public string username;
-        /// <summary>
-        /// The second component of a users account name
-        /// </summary>
-        public string surname;
-
-        /// <summary>
-        /// A salted hash containing the users password, in the format md5(md5(password) + ":" + salt)
-        /// </summary>
-        /// <remarks>This is double MD5'd because the client sends an unsalted MD5 to the loginserver</remarks>
-        public string passwordHash;
-        /// <summary>
-        /// The salt used for the users hash, should be 32 bytes or longer
-        /// </summary>
-        public string passwordSalt;
-
-        /// <summary>
-        /// The regionhandle of the users preffered home region. If multiple sims occupy the same spot, the grid may decide which region the user logs into
-        /// </summary>
-        public ulong homeRegion;
-        /// <summary>
-        /// The coordinates inside the region of the home location
-        /// </summary>
-        public LLVector3 homeLocation;
-        /// <summary>
-        /// Where the user will be looking when they rez.
-        /// </summary>
-        public LLVector3 homeLookAt;
-
-        /// <summary>
-        /// A UNIX Timestamp (seconds since epoch) for the users creation
-        /// </summary>
-        public int created;
-        /// <summary>
-        /// A UNIX Timestamp for the users last login date / time
-        /// </summary>
-        public int lastLogin;
-
-        /// <summary>
-        /// A URI to the users inventory server, used for foreigners and large grids
-        /// </summary>
-        public string userInventoryURI;
-        /// <summary>
-        /// A URI to the users asset server, used for foreigners and large grids.
-        /// </summary>
-        public string userAssetURI;
-
-        /// <summary>
-        /// A uint mask containing the "I can do" fields of the users profile
-        /// </summary>
-        public uint profileCanDoMask;
-        /// <summary>
-        /// A uint mask containing the "I want to do" part of the users profile
-        /// </summary>
-        public uint profileWantDoMask; // Profile window "I want to" mask
-
-        /// <summary>
-        /// The about text listed in a users profile.
-        /// </summary>
-        public string profileAboutText;
-        /// <summary>
-        /// The first life about text listed in a users profile
-        /// </summary>
-        public string profileFirstText;
-
-        /// <summary>
-        /// The profile image for an avatar stored on the asset server
-        /// </summary>
-        public LLUUID profileImage;
-        /// <summary>
-        /// The profile image for the users first life tab
-        /// </summary>
-        public LLUUID profileFirstImage;
-        /// <summary>
-        /// The users last registered agent (filled in on the user server)
-        /// </summary>
-        public UserAgentData currentAgent;
-    }
-
-    /// <summary>
-    /// Information about a users session
-    /// </summary>
-    public class UserAgentData
-    {
-        /// <summary>
-        /// The UUID of the users avatar (not the agent!)
-        /// </summary>
-        public LLUUID UUID;
-        /// <summary>
-        /// The IP address of the user
-        /// </summary>
-        public string agentIP = String.Empty;
-        /// <summary>
-        /// The port of the user
-        /// </summary>
-        public uint agentPort;
-        /// <summary>
-        /// Is the user online?
-        /// </summary>
-        public bool agentOnline;
-        /// <summary>
-        /// The session ID for the user (also the agent ID)
-        /// </summary>
-        public LLUUID sessionID;
-        /// <summary>
-        /// The "secure" session ID for the user
-        /// </summary>
-        /// <remarks>Not very secure. Dont rely on it for anything more than Linden Lab does.</remarks>
-        public LLUUID secureSessionID;
-        /// <summary>
-        /// The region the user logged into initially
-        /// </summary>
-        public LLUUID regionID;
-        /// <summary>
-        /// A unix timestamp from when the user logged in
-        /// </summary>
-        public int loginTime;
-        /// <summary>
-        /// When this agent expired and logged out, 0 if still online
-        /// </summary>
-        public int logoutTime;
-        /// <summary>
-        /// Current region the user is logged into
-        /// </summary>
-        public LLUUID currentRegion;
-        /// <summary>
-        /// Region handle of the current region the user is in
-        /// </summary>
-        public ulong currentHandle;
-        /// <summary>
-        /// The position of the user within the region
-        /// </summary>
-        public LLVector3 currentPos;
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using libsecondlife;
+
+namespace OpenSim.Framework.Data
+{
+    /// <summary>
+    /// Information about a particular user known to the userserver
+    /// </summary>
+    public class UserProfileData
+    {
+        /// <summary>
+        /// The ID value for this user
+        /// </summary>
+        public LLUUID UUID;
+
+        /// <summary>
+        /// The first component of a users account name
+        /// </summary>
+        public string username;
+        /// <summary>
+        /// The second component of a users account name
+        /// </summary>
+        public string surname;
+
+        /// <summary>
+        /// A salted hash containing the users password, in the format md5(md5(password) + ":" + salt)
+        /// </summary>
+        /// <remarks>This is double MD5'd because the client sends an unsalted MD5 to the loginserver</remarks>
+        public string passwordHash;
+        /// <summary>
+        /// The salt used for the users hash, should be 32 bytes or longer
+        /// </summary>
+        public string passwordSalt;
+
+        /// <summary>
+        /// The regionhandle of the users preffered home region. If multiple sims occupy the same spot, the grid may decide which region the user logs into
+        /// </summary>
+        public ulong homeRegion;
+        /// <summary>
+        /// The coordinates inside the region of the home location
+        /// </summary>
+        public LLVector3 homeLocation;
+        /// <summary>
+        /// Where the user will be looking when they rez.
+        /// </summary>
+        public LLVector3 homeLookAt;
+
+        /// <summary>
+        /// A UNIX Timestamp (seconds since epoch) for the users creation
+        /// </summary>
+        public int created;
+        /// <summary>
+        /// A UNIX Timestamp for the users last login date / time
+        /// </summary>
+        public int lastLogin;
+
+        /// <summary>
+        /// A URI to the users inventory server, used for foreigners and large grids
+        /// </summary>
+        public string userInventoryURI;
+        /// <summary>
+        /// A URI to the users asset server, used for foreigners and large grids.
+        /// </summary>
+        public string userAssetURI;
+
+        /// <summary>
+        /// A uint mask containing the "I can do" fields of the users profile
+        /// </summary>
+        public uint profileCanDoMask;
+        /// <summary>
+        /// A uint mask containing the "I want to do" part of the users profile
+        /// </summary>
+        public uint profileWantDoMask; // Profile window "I want to" mask
+
+        /// <summary>
+        /// The about text listed in a users profile.
+        /// </summary>
+        public string profileAboutText;
+        /// <summary>
+        /// The first life about text listed in a users profile
+        /// </summary>
+        public string profileFirstText;
+
+        /// <summary>
+        /// The profile image for an avatar stored on the asset server
+        /// </summary>
+        public LLUUID profileImage;
+        /// <summary>
+        /// The profile image for the users first life tab
+        /// </summary>
+        public LLUUID profileFirstImage;
+        /// <summary>
+        /// The users last registered agent (filled in on the user server)
+        /// </summary>
+        public UserAgentData currentAgent;
+    }
+
+    /// <summary>
+    /// Information about a users session
+    /// </summary>
+    public class UserAgentData
+    {
+        /// <summary>
+        /// The UUID of the users avatar (not the agent!)
+        /// </summary>
+        public LLUUID UUID;
+        /// <summary>
+        /// The IP address of the user
+        /// </summary>
+        public string agentIP = String.Empty;
+        /// <summary>
+        /// The port of the user
+        /// </summary>
+        public uint agentPort;
+        /// <summary>
+        /// Is the user online?
+        /// </summary>
+        public bool agentOnline;
+        /// <summary>
+        /// The session ID for the user (also the agent ID)
+        /// </summary>
+        public LLUUID sessionID;
+        /// <summary>
+        /// The "secure" session ID for the user
+        /// </summary>
+        /// <remarks>Not very secure. Dont rely on it for anything more than Linden Lab does.</remarks>
+        public LLUUID secureSessionID;
+        /// <summary>
+        /// The region the user logged into initially
+        /// </summary>
+        public LLUUID regionID;
+        /// <summary>
+        /// A unix timestamp from when the user logged in
+        /// </summary>
+        public int loginTime;
+        /// <summary>
+        /// When this agent expired and logged out, 0 if still online
+        /// </summary>
+        public int logoutTime;
+        /// <summary>
+        /// Current region the user is logged into
+        /// </summary>
+        public LLUUID currentRegion;
+        /// <summary>
+        /// Region handle of the current region the user is in
+        /// </summary>
+        public ulong currentHandle;
+        /// <summary>
+        /// The position of the user within the region
+        /// </summary>
+        public LLVector3 currentPos;
+    }
+}

+ 265 - 265
OpenSim/Framework/General/AgentInventory.cs

@@ -1,265 +1,265 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Collections.Generic;
-using libsecondlife;
-using libsecondlife.Packets;
-using OpenSim.Framework.Types;
-using OpenSim.Framework.Utilities;
-
-namespace OpenSim.Framework.Inventory
-{
-    public class AgentInventory
-    {
-        //Holds the local copy of Inventory info for a agent
-        public Dictionary<LLUUID, InventoryFolder> InventoryFolders;
-        public Dictionary<LLUUID, InventoryItem> InventoryItems;
-        public InventoryFolder InventoryRoot;
-        public int LastCached;  //maybe used by opensim app, time this was last stored/compared to user server
-        public LLUUID AgentID;
-        public AvatarWearable[] Wearables;
-
-        public AgentInventory()
-        {
-            InventoryFolders = new Dictionary<LLUUID, InventoryFolder>();
-            InventoryItems = new Dictionary<LLUUID, InventoryItem>();
-            this.Initialise();
-        }
-
-        public virtual void Initialise()
-        {
-            Wearables = new AvatarWearable[13]; //should be 12 of these
-            for (int i = 0; i < 13; i++)
-            {
-                Wearables[i] = new AvatarWearable();
-            }
-      
-        }
-
-        public bool CreateNewFolder(LLUUID folderID, ushort type)
-        {
-            InventoryFolder Folder = new InventoryFolder();
-            Folder.FolderID = folderID;
-            Folder.OwnerID = this.AgentID;
-            Folder.DefaultType = type;
-            this.InventoryFolders.Add(Folder.FolderID, Folder);
-            return (true);
-        }
-
-        public void CreateRootFolder(LLUUID newAgentID, bool createTextures)
-        {
-            this.AgentID = newAgentID;
-            InventoryRoot = new InventoryFolder();
-            InventoryRoot.FolderID = LLUUID.Random();
-            InventoryRoot.ParentID = new LLUUID();
-            InventoryRoot.Version = 1;
-            InventoryRoot.DefaultType = 8;
-            InventoryRoot.OwnerID = this.AgentID;
-            InventoryRoot.FolderName = "My Inventory";
-            InventoryFolders.Add(InventoryRoot.FolderID, InventoryRoot);
-            InventoryRoot.OwnerID = this.AgentID;
-            if (createTextures)
-            {
-                this.CreateNewFolder(LLUUID.Random(), 0, "Textures", InventoryRoot.FolderID);
-            }
-        }
-
-        public bool CreateNewFolder(LLUUID folderID, ushort type, string folderName)
-        {
-            InventoryFolder Folder = new InventoryFolder();
-            Folder.FolderID = folderID;
-            Folder.OwnerID = this.AgentID;
-            Folder.DefaultType = type;
-            Folder.FolderName = folderName;
-            this.InventoryFolders.Add(Folder.FolderID, Folder);
-
-            return (true);
-        }
-
-        public bool CreateNewFolder(LLUUID folderID, ushort type, string folderName, LLUUID parent)
-        {
-            if (!this.InventoryFolders.ContainsKey(folderID))
-            {
-                System.Console.WriteLine("creating new folder called " + folderName + " in agents inventory");
-                InventoryFolder Folder = new InventoryFolder();
-                Folder.FolderID = folderID;
-                Folder.OwnerID = this.AgentID;
-                Folder.DefaultType = type;
-                Folder.FolderName = folderName;
-                Folder.ParentID = parent;
-                this.InventoryFolders.Add(Folder.FolderID, Folder);
-            }
-
-            return (true);
-        }
-
-        public bool HasFolder(LLUUID folderID)
-        {
-            if (this.InventoryFolders.ContainsKey(folderID))
-            {
-                return true;
-            }
-            return false;
-        }
-
-        public LLUUID GetFolderID(string folderName)
-        {
-            foreach (InventoryFolder inv in this.InventoryFolders.Values)
-            {
-                if (inv.FolderName == folderName)
-                {
-                    return inv.FolderID;
-                }
-            }
-
-            return LLUUID.Zero;
-        }
-
-        public bool UpdateItemAsset(LLUUID itemID, AssetBase asset)
-        {
-            if(this.InventoryItems.ContainsKey(itemID))
-            {
-                InventoryItem Item = this.InventoryItems[itemID];
-                Item.AssetID = asset.FullID;
-                System.Console.WriteLine("updated inventory item " + itemID.ToStringHyphenated() + " so it now is set to asset " + asset.FullID.ToStringHyphenated());
-                //TODO need to update the rest of the info
-            }
-            return true;
-        }
-
-        public bool UpdateItemDetails(LLUUID itemID, UpdateInventoryItemPacket.InventoryDataBlock packet)
-        {
-            System.Console.WriteLine("updating inventory item details");
-            if (this.InventoryItems.ContainsKey(itemID))
-            {
-                System.Console.WriteLine("changing name to "+ Util.FieldToString(packet.Name));
-                InventoryItem Item = this.InventoryItems[itemID];
-                Item.Name = Util.FieldToString(packet.Name);
-                System.Console.WriteLine("updated inventory item " + itemID.ToStringHyphenated());
-                //TODO need to update the rest of the info
-            }
-            return true;
-        }
-
-        public LLUUID AddToInventory(LLUUID folderID, AssetBase asset)
-        {
-            if (this.InventoryFolders.ContainsKey(folderID))
-            {
-                LLUUID NewItemID = LLUUID.Random();
-
-                InventoryItem Item = new InventoryItem();
-                Item.FolderID = folderID;
-                Item.OwnerID = AgentID;
-                Item.AssetID = asset.FullID;
-                Item.ItemID = NewItemID;
-                Item.Type = asset.Type;
-                Item.Name = asset.Name;
-                Item.Description = asset.Description;
-                Item.InvType = asset.InvType;
-                this.InventoryItems.Add(Item.ItemID, Item);
-                InventoryFolder Folder = InventoryFolders[Item.FolderID];
-                Folder.Items.Add(Item);
-                return (Item.ItemID);
-            }
-            else
-            {
-                return (null);
-            }
-        }
-
-        public bool DeleteFromInventory(LLUUID itemID)
-        {
-            bool res = false;
-            if (this.InventoryItems.ContainsKey(itemID))
-            {
-                InventoryItem item = this.InventoryItems[itemID];
-                this.InventoryItems.Remove(itemID);
-                foreach (InventoryFolder fold in InventoryFolders.Values)
-                {
-                    if (fold.Items.Contains(item))
-                    {
-                        fold.Items.Remove(item);
-                        break;
-                    }
-                }
-                res = true;
-                
-            }
-            return res;
-        }
-    }
-
-    public class InventoryFolder
-    {
-        public List<InventoryItem> Items;
-        //public List<InventoryFolder> Subfolders;
-        public LLUUID FolderID;
-        public LLUUID OwnerID;
-        public LLUUID ParentID = LLUUID.Zero;
-        public string FolderName;
-        public ushort DefaultType;
-        public ushort Version;
-
-        public InventoryFolder()
-        {
-            Items = new List<InventoryItem>();
-            //Subfolders = new List<InventoryFolder>();
-        }
-
-    }
-
-    public class InventoryItem
-    {
-        public LLUUID FolderID;
-        public LLUUID OwnerID;
-        public LLUUID ItemID;
-        public LLUUID AssetID;
-        public LLUUID CreatorID;
-        public sbyte InvType;
-        public sbyte Type;
-        public string Name ="";
-        public string Description;
-
-        public InventoryItem()
-        {
-            this.CreatorID = LLUUID.Zero;
-        }
-
-        public string ExportString()
-        {
-            string typ = "notecard";
-            string result = "";
-            result += "\tinv_object\t0\n\t{\n";
-            result += "\t\tobj_id\t%s\n";
-            result +=  "\t\tparent_id\t"+ ItemID.ToString() +"\n";
-            result += "\t\ttype\t"+ typ +"\n";
-            result += "\t\tname\t" + Name+"|\n";
-            result += "\t}\n";
-            return result;
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Collections.Generic;
+using libsecondlife;
+using libsecondlife.Packets;
+using OpenSim.Framework.Types;
+using OpenSim.Framework.Utilities;
+
+namespace OpenSim.Framework.Inventory
+{
+    public class AgentInventory
+    {
+        //Holds the local copy of Inventory info for a agent
+        public Dictionary<LLUUID, InventoryFolder> InventoryFolders;
+        public Dictionary<LLUUID, InventoryItem> InventoryItems;
+        public InventoryFolder InventoryRoot;
+        public int LastCached;  //maybe used by opensim app, time this was last stored/compared to user server
+        public LLUUID AgentID;
+        public AvatarWearable[] Wearables;
+
+        public AgentInventory()
+        {
+            InventoryFolders = new Dictionary<LLUUID, InventoryFolder>();
+            InventoryItems = new Dictionary<LLUUID, InventoryItem>();
+            this.Initialise();
+        }
+
+        public virtual void Initialise()
+        {
+            Wearables = new AvatarWearable[13]; //should be 12 of these
+            for (int i = 0; i < 13; i++)
+            {
+                Wearables[i] = new AvatarWearable();
+            }
+      
+        }
+
+        public bool CreateNewFolder(LLUUID folderID, ushort type)
+        {
+            InventoryFolder Folder = new InventoryFolder();
+            Folder.FolderID = folderID;
+            Folder.OwnerID = this.AgentID;
+            Folder.DefaultType = type;
+            this.InventoryFolders.Add(Folder.FolderID, Folder);
+            return (true);
+        }
+
+        public void CreateRootFolder(LLUUID newAgentID, bool createTextures)
+        {
+            this.AgentID = newAgentID;
+            InventoryRoot = new InventoryFolder();
+            InventoryRoot.FolderID = LLUUID.Random();
+            InventoryRoot.ParentID = new LLUUID();
+            InventoryRoot.Version = 1;
+            InventoryRoot.DefaultType = 8;
+            InventoryRoot.OwnerID = this.AgentID;
+            InventoryRoot.FolderName = "My Inventory";
+            InventoryFolders.Add(InventoryRoot.FolderID, InventoryRoot);
+            InventoryRoot.OwnerID = this.AgentID;
+            if (createTextures)
+            {
+                this.CreateNewFolder(LLUUID.Random(), 0, "Textures", InventoryRoot.FolderID);
+            }
+        }
+
+        public bool CreateNewFolder(LLUUID folderID, ushort type, string folderName)
+        {
+            InventoryFolder Folder = new InventoryFolder();
+            Folder.FolderID = folderID;
+            Folder.OwnerID = this.AgentID;
+            Folder.DefaultType = type;
+            Folder.FolderName = folderName;
+            this.InventoryFolders.Add(Folder.FolderID, Folder);
+
+            return (true);
+        }
+
+        public bool CreateNewFolder(LLUUID folderID, ushort type, string folderName, LLUUID parent)
+        {
+            if (!this.InventoryFolders.ContainsKey(folderID))
+            {
+                System.Console.WriteLine("creating new folder called " + folderName + " in agents inventory");
+                InventoryFolder Folder = new InventoryFolder();
+                Folder.FolderID = folderID;
+                Folder.OwnerID = this.AgentID;
+                Folder.DefaultType = type;
+                Folder.FolderName = folderName;
+                Folder.ParentID = parent;
+                this.InventoryFolders.Add(Folder.FolderID, Folder);
+            }
+
+            return (true);
+        }
+
+        public bool HasFolder(LLUUID folderID)
+        {
+            if (this.InventoryFolders.ContainsKey(folderID))
+            {
+                return true;
+            }
+            return false;
+        }
+
+        public LLUUID GetFolderID(string folderName)
+        {
+            foreach (InventoryFolder inv in this.InventoryFolders.Values)
+            {
+                if (inv.FolderName == folderName)
+                {
+                    return inv.FolderID;
+                }
+            }
+
+            return LLUUID.Zero;
+        }
+
+        public bool UpdateItemAsset(LLUUID itemID, AssetBase asset)
+        {
+            if(this.InventoryItems.ContainsKey(itemID))
+            {
+                InventoryItem Item = this.InventoryItems[itemID];
+                Item.AssetID = asset.FullID;
+                System.Console.WriteLine("updated inventory item " + itemID.ToStringHyphenated() + " so it now is set to asset " + asset.FullID.ToStringHyphenated());
+                //TODO need to update the rest of the info
+            }
+            return true;
+        }
+
+        public bool UpdateItemDetails(LLUUID itemID, UpdateInventoryItemPacket.InventoryDataBlock packet)
+        {
+            System.Console.WriteLine("updating inventory item details");
+            if (this.InventoryItems.ContainsKey(itemID))
+            {
+                System.Console.WriteLine("changing name to "+ Util.FieldToString(packet.Name));
+                InventoryItem Item = this.InventoryItems[itemID];
+                Item.Name = Util.FieldToString(packet.Name);
+                System.Console.WriteLine("updated inventory item " + itemID.ToStringHyphenated());
+                //TODO need to update the rest of the info
+            }
+            return true;
+        }
+
+        public LLUUID AddToInventory(LLUUID folderID, AssetBase asset)
+        {
+            if (this.InventoryFolders.ContainsKey(folderID))
+            {
+                LLUUID NewItemID = LLUUID.Random();
+
+                InventoryItem Item = new InventoryItem();
+                Item.FolderID = folderID;
+                Item.OwnerID = AgentID;
+                Item.AssetID = asset.FullID;
+                Item.ItemID = NewItemID;
+                Item.Type = asset.Type;
+                Item.Name = asset.Name;
+                Item.Description = asset.Description;
+                Item.InvType = asset.InvType;
+                this.InventoryItems.Add(Item.ItemID, Item);
+                InventoryFolder Folder = InventoryFolders[Item.FolderID];
+                Folder.Items.Add(Item);
+                return (Item.ItemID);
+            }
+            else
+            {
+                return (null);
+            }
+        }
+
+        public bool DeleteFromInventory(LLUUID itemID)
+        {
+            bool res = false;
+            if (this.InventoryItems.ContainsKey(itemID))
+            {
+                InventoryItem item = this.InventoryItems[itemID];
+                this.InventoryItems.Remove(itemID);
+                foreach (InventoryFolder fold in InventoryFolders.Values)
+                {
+                    if (fold.Items.Contains(item))
+                    {
+                        fold.Items.Remove(item);
+                        break;
+                    }
+                }
+                res = true;
+                
+            }
+            return res;
+        }
+    }
+
+    public class InventoryFolder
+    {
+        public List<InventoryItem> Items;
+        //public List<InventoryFolder> Subfolders;
+        public LLUUID FolderID;
+        public LLUUID OwnerID;
+        public LLUUID ParentID = LLUUID.Zero;
+        public string FolderName;
+        public ushort DefaultType;
+        public ushort Version;
+
+        public InventoryFolder()
+        {
+            Items = new List<InventoryItem>();
+            //Subfolders = new List<InventoryFolder>();
+        }
+
+    }
+
+    public class InventoryItem
+    {
+        public LLUUID FolderID;
+        public LLUUID OwnerID;
+        public LLUUID ItemID;
+        public LLUUID AssetID;
+        public LLUUID CreatorID;
+        public sbyte InvType;
+        public sbyte Type;
+        public string Name ="";
+        public string Description;
+
+        public InventoryItem()
+        {
+            this.CreatorID = LLUUID.Zero;
+        }
+
+        public string ExportString()
+        {
+            string typ = "notecard";
+            string result = "";
+            result += "\tinv_object\t0\n\t{\n";
+            result += "\t\tobj_id\t%s\n";
+            result +=  "\t\tparent_id\t"+ ItemID.ToString() +"\n";
+            result += "\t\ttype\t"+ typ +"\n";
+            result += "\t\tname\t" + Name+"|\n";
+            result += "\t}\n";
+            return result;
+        }
+    }
+}

+ 129 - 129
OpenSim/Framework/General/AuthenticateSessionBase.cs

@@ -1,130 +1,130 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Collections.Generic;
-using libsecondlife;
-using OpenSim.Framework.Interfaces;
-using OpenSim.Framework.Types;
-
-namespace OpenSim.Framework
-{
-    public class AuthenticateSessionsBase
-    {
-        public Dictionary<uint, AgentCircuitData> AgentCircuits = new Dictionary<uint, AgentCircuitData>();
-
-        public AuthenticateSessionsBase()
-        {
-
-        }
-
-        public virtual AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitcode)
-        {
-            AgentCircuitData validcircuit = null;
-            if (this.AgentCircuits.ContainsKey(circuitcode))
-            {
-                validcircuit = this.AgentCircuits[circuitcode];
-            }
-            AuthenticateResponse user = new AuthenticateResponse();
-            if (validcircuit == null)
-            {
-                //don't have this circuit code in our list
-                user.Authorised = false;
-                return (user);
-            }
-
-            if ((sessionID == validcircuit.SessionID) && (agentID == validcircuit.AgentID))
-            {
-                user.Authorised = true;
-                user.LoginInfo = new Login();
-                user.LoginInfo.Agent = agentID;
-                user.LoginInfo.Session = sessionID;
-                user.LoginInfo.SecureSession = validcircuit.SecureSessionID;
-                user.LoginInfo.First = validcircuit.firstname;
-                user.LoginInfo.Last = validcircuit.lastname;
-                user.LoginInfo.InventoryFolder = validcircuit.InventoryFolder;
-                user.LoginInfo.BaseFolder = validcircuit.BaseFolder;
-            }
-            else
-            {
-                // Invalid
-                user.Authorised = false;
-            }
-
-            return (user);
-        }
-
-        public virtual void AddNewCircuit(uint circuitCode, AgentCircuitData agentData)
-        {
-            if (this.AgentCircuits.ContainsKey(circuitCode))
-            {
-                this.AgentCircuits[circuitCode] = agentData;
-            }
-            else
-            {
-                this.AgentCircuits.Add(circuitCode, agentData);
-            }
-        }
-
-        public LLVector3 GetPosition(uint circuitCode)
-        {
-            LLVector3 vec = new LLVector3();
-            if (this.AgentCircuits.ContainsKey(circuitCode))
-            {
-                vec = this.AgentCircuits[circuitCode].startpos;
-            }
-            return vec;
-        }
-
-        public void UpdateAgentData(AgentCircuitData agentData)
-        {
-            if (this.AgentCircuits.ContainsKey((uint)agentData.circuitcode))
-            {
-                this.AgentCircuits[(uint)agentData.circuitcode].firstname = agentData.firstname;
-                this.AgentCircuits[(uint)agentData.circuitcode].lastname = agentData.lastname;
-                this.AgentCircuits[(uint)agentData.circuitcode].startpos = agentData.startpos;
-               // Console.WriteLine("update user start pos is " + agentData.startpos.X + " , " + agentData.startpos.Y + " , " + agentData.startpos.Z);
-            }
-        }
-
-        public void UpdateAgentChildStatus(uint circuitcode, bool childstatus)
-        {
-            if (this.AgentCircuits.ContainsKey(circuitcode))
-            {
-                this.AgentCircuits[circuitcode].child = childstatus;
-            }
-        }
-
-        public bool GetAgentChildStatus(uint circuitcode)
-        {
-            if (this.AgentCircuits.ContainsKey(circuitcode))
-            {
-                return this.AgentCircuits[circuitcode].child;
-            }
-            return false;
-        }
-    }
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Collections.Generic;
+using libsecondlife;
+using OpenSim.Framework.Interfaces;
+using OpenSim.Framework.Types;
+
+namespace OpenSim.Framework
+{
+    public class AuthenticateSessionsBase
+    {
+        public Dictionary<uint, AgentCircuitData> AgentCircuits = new Dictionary<uint, AgentCircuitData>();
+
+        public AuthenticateSessionsBase()
+        {
+
+        }
+
+        public virtual AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitcode)
+        {
+            AgentCircuitData validcircuit = null;
+            if (this.AgentCircuits.ContainsKey(circuitcode))
+            {
+                validcircuit = this.AgentCircuits[circuitcode];
+            }
+            AuthenticateResponse user = new AuthenticateResponse();
+            if (validcircuit == null)
+            {
+                //don't have this circuit code in our list
+                user.Authorised = false;
+                return (user);
+            }
+
+            if ((sessionID == validcircuit.SessionID) && (agentID == validcircuit.AgentID))
+            {
+                user.Authorised = true;
+                user.LoginInfo = new Login();
+                user.LoginInfo.Agent = agentID;
+                user.LoginInfo.Session = sessionID;
+                user.LoginInfo.SecureSession = validcircuit.SecureSessionID;
+                user.LoginInfo.First = validcircuit.firstname;
+                user.LoginInfo.Last = validcircuit.lastname;
+                user.LoginInfo.InventoryFolder = validcircuit.InventoryFolder;
+                user.LoginInfo.BaseFolder = validcircuit.BaseFolder;
+            }
+            else
+            {
+                // Invalid
+                user.Authorised = false;
+            }
+
+            return (user);
+        }
+
+        public virtual void AddNewCircuit(uint circuitCode, AgentCircuitData agentData)
+        {
+            if (this.AgentCircuits.ContainsKey(circuitCode))
+            {
+                this.AgentCircuits[circuitCode] = agentData;
+            }
+            else
+            {
+                this.AgentCircuits.Add(circuitCode, agentData);
+            }
+        }
+
+        public LLVector3 GetPosition(uint circuitCode)
+        {
+            LLVector3 vec = new LLVector3();
+            if (this.AgentCircuits.ContainsKey(circuitCode))
+            {
+                vec = this.AgentCircuits[circuitCode].startpos;
+            }
+            return vec;
+        }
+
+        public void UpdateAgentData(AgentCircuitData agentData)
+        {
+            if (this.AgentCircuits.ContainsKey((uint)agentData.circuitcode))
+            {
+                this.AgentCircuits[(uint)agentData.circuitcode].firstname = agentData.firstname;
+                this.AgentCircuits[(uint)agentData.circuitcode].lastname = agentData.lastname;
+                this.AgentCircuits[(uint)agentData.circuitcode].startpos = agentData.startpos;
+               // Console.WriteLine("update user start pos is " + agentData.startpos.X + " , " + agentData.startpos.Y + " , " + agentData.startpos.Z);
+            }
+        }
+
+        public void UpdateAgentChildStatus(uint circuitcode, bool childstatus)
+        {
+            if (this.AgentCircuits.ContainsKey(circuitcode))
+            {
+                this.AgentCircuits[circuitcode].child = childstatus;
+            }
+        }
+
+        public bool GetAgentChildStatus(uint circuitcode)
+        {
+            if (this.AgentCircuits.ContainsKey(circuitcode))
+            {
+                return this.AgentCircuits[circuitcode].child;
+            }
+            return false;
+        }
+    }
 }

+ 58 - 58
OpenSim/Framework/General/BlockingQueue.cs

@@ -1,58 +1,58 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Collections.Generic;
-using System.Threading;
-
-namespace OpenSim.Framework.Utilities
-{
-    public class BlockingQueue<T>
-    {
-        private Queue<T> _queue = new Queue<T>();
-        private object _queueSync = new object();
-
-        public void Enqueue(T value)
-        {
-            lock (_queueSync)
-            {
-                _queue.Enqueue(value);
-                Monitor.Pulse(_queueSync);
-            }
-        }
-
-        public T Dequeue()
-        {
-            lock (_queueSync)
-            {
-                if (_queue.Count < 1)
-                    Monitor.Wait(_queueSync);
-
-                return _queue.Dequeue();
-            }
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Collections.Generic;
+using System.Threading;
+
+namespace OpenSim.Framework.Utilities
+{
+    public class BlockingQueue<T>
+    {
+        private Queue<T> _queue = new Queue<T>();
+        private object _queueSync = new object();
+
+        public void Enqueue(T value)
+        {
+            lock (_queueSync)
+            {
+                _queue.Enqueue(value);
+                Monitor.Pulse(_queueSync);
+            }
+        }
+
+        public T Dequeue()
+        {
+            lock (_queueSync)
+            {
+                if (_queue.Count < 1)
+                    Monitor.Wait(_queueSync);
+
+                return _queue.Dequeue();
+            }
+        }
+    }
+}

+ 36 - 36
OpenSim/Framework/General/ClientManager.cs

@@ -1,36 +1,36 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OpenSim.Framework.Interfaces;
-
-namespace OpenSim.Framework
-{
-    public delegate void ForEachClientDelegate( IClientAPI client );
-    public class ClientManager
-    {
-        private Dictionary<uint, IClientAPI> m_clients;
-                
-        public void ForEachClient(ForEachClientDelegate whatToDo)
-        {
-            foreach (IClientAPI client in m_clients.Values)
-            {
-                whatToDo(client);
-            }
-        }
-        
-        public ClientManager()
-        {
-            m_clients = new Dictionary<uint, IClientAPI>();
-        }
-
-	public void Remove(uint id)
-	{
-            m_clients.Remove(id);
-	}
-
-        public void Add(uint id, IClientAPI client )
-        {
-            m_clients.Add( id, client );
-        }
-    }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using OpenSim.Framework.Interfaces;
+
+namespace OpenSim.Framework
+{
+    public delegate void ForEachClientDelegate( IClientAPI client );
+    public class ClientManager
+    {
+        private Dictionary<uint, IClientAPI> m_clients;
+                
+        public void ForEachClient(ForEachClientDelegate whatToDo)
+        {
+            foreach (IClientAPI client in m_clients.Values)
+            {
+                whatToDo(client);
+            }
+        }
+        
+        public ClientManager()
+        {
+            m_clients = new Dictionary<uint, IClientAPI>();
+        }
+
+	public void Remove(uint id)
+	{
+            m_clients.Remove(id);
+	}
+
+        public void Add(uint id, IClientAPI client )
+        {
+            m_clients.Add( id, client );
+        }
+    }
+}

+ 46 - 46
OpenSim/Framework/General/IRegionCommsListener.cs

@@ -1,46 +1,46 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Collections.Generic;
-using libsecondlife;
-using OpenSim.Framework.Interfaces;
-using OpenSim.Framework.Types;
-
-namespace OpenSim.Framework
-{
-    public delegate void ExpectUserDelegate(ulong regionHandle, AgentCircuitData agent);
-    public delegate void UpdateNeighbours(List<RegionInfo> neighbours);
-    public delegate void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position);
-
-    public interface IRegionCommsListener
-    {
-        event ExpectUserDelegate OnExpectUser;
-        event GenericCall2 OnExpectChildAgent;
-        event AgentCrossing OnAvatarCrossingIntoRegion;
-        event UpdateNeighbours OnNeighboursUpdate;
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Collections.Generic;
+using libsecondlife;
+using OpenSim.Framework.Interfaces;
+using OpenSim.Framework.Types;
+
+namespace OpenSim.Framework
+{
+    public delegate void ExpectUserDelegate(ulong regionHandle, AgentCircuitData agent);
+    public delegate void UpdateNeighbours(List<RegionInfo> neighbours);
+    public delegate void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position);
+
+    public interface IRegionCommsListener
+    {
+        event ExpectUserDelegate OnExpectUser;
+        event GenericCall2 OnExpectChildAgent;
+        event AgentCrossing OnAvatarCrossingIntoRegion;
+        event UpdateNeighbours OnNeighboursUpdate;
+    }
+}

+ 43 - 43
OpenSim/Framework/General/Interfaces/AuthenticateResponse.cs

@@ -1,43 +1,43 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using OpenSim.Framework.Types;
-
-namespace OpenSim.Framework.Interfaces
-{
-    public class AuthenticateResponse
-    {
-        public bool Authorised;
-        public Login LoginInfo;
-
-        public AuthenticateResponse()
-        {
-
-        }
-
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using OpenSim.Framework.Types;
+
+namespace OpenSim.Framework.Interfaces
+{
+    public class AuthenticateResponse
+    {
+        public bool Authorised;
+        public Login LoginInfo;
+
+        public AuthenticateResponse()
+        {
+
+        }
+
+    }
+}

+ 38 - 38
OpenSim/Framework/General/Interfaces/Config/IGenericConfig.cs

@@ -1,38 +1,38 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-namespace OpenSim.Framework.Interfaces
-{
-    public interface IGenericConfig
-    {
-        void LoadData();
-        string GetAttribute(string attributeName);
-        bool SetAttribute(string attributeName, string attributeValue);
-        void Commit();
-        void Close();
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+namespace OpenSim.Framework.Interfaces
+{
+    public interface IGenericConfig
+    {
+        void LoadData();
+        string GetAttribute(string attributeName);
+        bool SetAttribute(string attributeName, string attributeValue);
+        void Commit();
+        void Close();
+    }
+}

+ 59 - 59
OpenSim/Framework/General/Interfaces/Config/IGridConfig.cs

@@ -1,59 +1,59 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-//using OpenSim.world;
-
-namespace OpenSim.Framework.Interfaces
-{
-    /// <summary>
-    /// </summary>
-
-
-    public abstract class GridConfig
-    {
-	public string GridOwner;
-        public string DefaultStartupMsg;
-        public string DefaultAssetServer;
-        public string AssetSendKey;
-        public string AssetRecvKey;
-        public string DefaultUserServer;
-        public string UserSendKey;
-        public string UserRecvKey;
-        public string SimSendKey;
-        public string SimRecvKey;
-
-
-        public abstract void InitConfig();
-
-    }
-
-    public interface IGridConfig
-    {
-        GridConfig GetConfigObject();
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+//using OpenSim.world;
+
+namespace OpenSim.Framework.Interfaces
+{
+    /// <summary>
+    /// </summary>
+
+
+    public abstract class GridConfig
+    {
+	public string GridOwner;
+        public string DefaultStartupMsg;
+        public string DefaultAssetServer;
+        public string AssetSendKey;
+        public string AssetRecvKey;
+        public string DefaultUserServer;
+        public string UserSendKey;
+        public string UserRecvKey;
+        public string SimSendKey;
+        public string SimRecvKey;
+
+
+        public abstract void InitConfig();
+
+    }
+
+    public interface IGridConfig
+    {
+        GridConfig GetConfigObject();
+    }
+}

+ 53 - 53
OpenSim/Framework/General/Interfaces/Config/IUserConfig.cs

@@ -1,53 +1,53 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-//using OpenSim.world;
-
-namespace OpenSim.Framework.Interfaces
-{
-    /// <summary>
-    /// </summary>
-
-
-    public abstract class UserConfig
-    {
-        public string DefaultStartupMsg;
-        public string GridServerURL;
-        public string GridSendKey;
-        public string GridRecvKey;
-
-
-        public abstract void InitConfig();
-
-    }
-
-    public interface IUserConfig
-    {
-        UserConfig GetConfigObject();
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+//using OpenSim.world;
+
+namespace OpenSim.Framework.Interfaces
+{
+    /// <summary>
+    /// </summary>
+
+
+    public abstract class UserConfig
+    {
+        public string DefaultStartupMsg;
+        public string GridServerURL;
+        public string GridSendKey;
+        public string GridRecvKey;
+
+
+        public abstract void InitConfig();
+
+    }
+
+    public interface IUserConfig
+    {
+        UserConfig GetConfigObject();
+    }
+}

+ 64 - 64
OpenSim/Framework/General/Interfaces/IAssetServer.cs

@@ -1,64 +1,64 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-using OpenSim.Framework.Types;
-
-namespace OpenSim.Framework.Interfaces
-{
-    /// <summary>
-    /// Description of IAssetServer.
-    /// </summary>
-
-    public interface IAssetServer
-    {
-        void SetReceiver(IAssetReceiver receiver);
-        void RequestAsset(LLUUID assetID, bool isTexture);
-        void UpdateAsset(AssetBase asset);
-        void UploadNewAsset(AssetBase asset);
-        void SetServerInfo(string ServerUrl, string ServerKey);
-        void Close();
-    }
-
-    // could change to delegate?
-    public interface IAssetReceiver
-    {
-        void AssetReceived(AssetBase asset, bool IsTexture);
-        void AssetNotFound(AssetBase asset);
-    }
-
-    public interface IAssetPlugin
-    {
-        IAssetServer GetAssetServer();
-    }
-
-    public struct ARequest
-    {
-        public LLUUID AssetID;
-        public bool IsTexture;
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+using OpenSim.Framework.Types;
+
+namespace OpenSim.Framework.Interfaces
+{
+    /// <summary>
+    /// Description of IAssetServer.
+    /// </summary>
+
+    public interface IAssetServer
+    {
+        void SetReceiver(IAssetReceiver receiver);
+        void RequestAsset(LLUUID assetID, bool isTexture);
+        void UpdateAsset(AssetBase asset);
+        void UploadNewAsset(AssetBase asset);
+        void SetServerInfo(string ServerUrl, string ServerKey);
+        void Close();
+    }
+
+    // could change to delegate?
+    public interface IAssetReceiver
+    {
+        void AssetReceived(AssetBase asset, bool IsTexture);
+        void AssetNotFound(AssetBase asset);
+    }
+
+    public interface IAssetPlugin
+    {
+        IAssetServer GetAssetServer();
+    }
+
+    public struct ARequest
+    {
+        public LLUUID AssetID;
+        public bool IsTexture;
+    }
+}

+ 195 - 195
OpenSim/Framework/General/Interfaces/IClientAPI.cs

@@ -1,195 +1,195 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Collections.Generic;
-using System.Net;
-using libsecondlife;
-using libsecondlife.Packets;
-using OpenSim.Framework.Types;
-using OpenSim.Framework.Data;
-
-namespace OpenSim.Framework.Interfaces
-{
-    public delegate void ChatFromViewer(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
-    public delegate void ImprovedInstantMessage(LLUUID fromAgentID, LLUUID toAgentID, uint timestamp, string fromAgentName, string message); // Cut down from full list
-    public delegate void RezObject(AssetBase primAsset, LLVector3 pos);
-    public delegate void ModifyTerrain(float height, float seconds, byte size, byte action, float north, float west);
-    public delegate void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam);
-    public delegate void StartAnim(LLUUID animID, int seq);
-    public delegate void LinkObjects(uint parent, List<uint> children);
-    public delegate void RequestMapBlocks(IClientAPI remoteClient, int minX, int minY, int maxX, int maxY);
-    public delegate void TeleportLocationRequest(IClientAPI remoteClient, ulong regionHandle, LLVector3 position, LLVector3 lookAt, uint flags);
-
-    public delegate void GenericCall(IClientAPI remoteClient);
-    public delegate void GenericCall2();
-    public delegate void GenericCall3(Packet packet); // really don't want to be passing packets in these events, so this is very temporary.
-    public delegate void GenericCall4(Packet packet, IClientAPI remoteClient);
-    public delegate void GenericCall5(IClientAPI remoteClient, bool status);
-    public delegate void GenericCall6(LLUUID uid);
-    public delegate void GenericCall7(uint localID, string message);
-
-    public delegate void UpdateShape(uint localID, ObjectShapePacket.ObjectDataBlock shapeBlock);
-    public delegate void ObjectSelect(uint localID, IClientAPI remoteClient);
-    public delegate void ObjectDeselect(uint localID, IClientAPI remoteClient);
-    public delegate void UpdatePrimFlags(uint localID, Packet packet, IClientAPI remoteClient);
-    public delegate void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient);
-    public delegate void UpdateVector(uint localID, LLVector3 pos, IClientAPI remoteClient);
-    public delegate void UpdatePrimRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient);
-    public delegate void UpdatePrimSingleRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient);
-    public delegate void UpdatePrimGroupRotation(uint localID,LLVector3 pos, LLQuaternion rot, IClientAPI remoteClient);
-    public delegate void ObjectDuplicate(uint localID, LLVector3 offset, uint dupeFlags);
-    public delegate void StatusChange(bool status);
-    public delegate void NewAvatar(IClientAPI remoteClient, LLUUID agentID, bool status);
-    public delegate void UpdateAgent(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation);
-    public delegate void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 grapPos, IClientAPI remoteClient);
-
-    public delegate void ParcelPropertiesRequest(int start_x, int start_y, int end_x, int end_y, int sequence_id, bool snap_selection, IClientAPI remote_client);
-    public delegate void ParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client);
-    public delegate void ParcelJoinRequest(int west, int south, int east, int north, IClientAPI remote_client);
-    public delegate void ParcelPropertiesUpdateRequest(ParcelPropertiesUpdatePacket packet, IClientAPI remote_client);
-    public delegate void ParcelSelectObjects(int parcel_local_id, int request_type, IClientAPI remote_client);
-    public delegate void ParcelObjectOwnerRequest(int local_id, IClientAPI remote_client);
-    public delegate void EstateOwnerMessageRequest(EstateOwnerMessagePacket packet, IClientAPI remote_client);
-
-    public delegate void UUIDNameRequest(LLUUID id, IClientAPI remote_client);
-
-    public delegate void AddNewPrim(LLUUID ownerID, LLVector3 pos, PrimitiveBaseShape shape);
-
-    
-
-    public interface IClientAPI
-    {
-        event ImprovedInstantMessage OnInstantMessage;
-        event ChatFromViewer OnChatFromViewer;
-        event RezObject OnRezObject;
-        event ModifyTerrain OnModifyTerrain;
-        event SetAppearance OnSetAppearance;
-        event StartAnim OnStartAnim;
-        event LinkObjects OnLinkObjects;
-        event RequestMapBlocks OnRequestMapBlocks;
-        event TeleportLocationRequest OnTeleportLocationRequest;
-
-        event GenericCall4 OnDeRezObject;
-        event GenericCall OnRegionHandShakeReply;
-        event GenericCall OnRequestWearables;
-        event GenericCall2 OnCompleteMovementToRegion;
-        event UpdateAgent OnAgentUpdate;
-        event GenericCall OnRequestAvatarsData;
-        event AddNewPrim OnAddPrim;
-        event ObjectDuplicate OnObjectDuplicate;
-        event UpdateVector OnGrapObject;
-        event ObjectSelect OnDeGrapObject;
-        event MoveObject OnGrapUpdate;
-
-        event UpdateShape OnUpdatePrimShape;
-        event ObjectSelect OnObjectSelect;
-        event ObjectDeselect OnObjectDeselect;
-        event GenericCall7 OnObjectDescription;
-        event GenericCall7 OnObjectName;
-        event UpdatePrimFlags OnUpdatePrimFlags;
-        event UpdatePrimTexture OnUpdatePrimTexture;
-        event UpdateVector OnUpdatePrimGroupPosition;
-        event UpdateVector OnUpdatePrimSinglePosition;
-        event UpdatePrimRotation OnUpdatePrimGroupRotation;
-        event UpdatePrimSingleRotation OnUpdatePrimSingleRotation;
-        event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation;
-        event UpdateVector OnUpdatePrimScale;
-        event StatusChange OnChildAgentStatus;
-        event GenericCall2 OnStopMovement;
-        event NewAvatar OnNewAvatar;
-        event GenericCall6 OnRemoveAvatar;
-
-        event UUIDNameRequest OnNameFromUUIDRequest;
-
-        event ParcelPropertiesRequest OnParcelPropertiesRequest;
-        event ParcelDivideRequest OnParcelDivideRequest;
-        event ParcelJoinRequest OnParcelJoinRequest;
-        event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
-        event ParcelSelectObjects OnParcelSelectObjects;
-        event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest;
-        event EstateOwnerMessageRequest OnEstateOwnerMessage;
-
-        LLVector3 StartPos
-        {
-            get;
-            set;
-        }
-
-        LLUUID AgentId
-        {
-            get;
-        }
-
-        string FirstName
-        {
-            get;
-        }
-
-        string LastName
-        {
-            get;
-        }
-
-        void OutPacket(Packet newPack);
-        void SendWearables(AvatarWearable[] wearables);
-        void SendStartPingCheck(byte seq);
-        void SendKillObject(ulong regionHandle, uint avatarLocalID);
-        void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId);
-        void SendRegionHandshake(RegionInfo regionInfo);
-        void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
-        void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
-        void SendInstantMessage(string message, LLUUID target, string fromName);
-        void SendLayerData(float[] map);
-        void SendLayerData(int px, int py, float[] map);
-        void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look);
-        void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint );
-        AgentCircuitData RequestClientInfo();
-        void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint newRegionExternalEndPoint );
-        void SendMapBlock(List<MapBlockData> mapBlocks);
-        void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags);
-        void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags);
-        void SendTeleportCancel();
-        void SendTeleportLocationStart();
-        void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance);
-
-        void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry);
-        void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity);
-
-        void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint);
-        void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID , uint flags);
-        void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags);
-        void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLQuaternion rotation, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID);
-        void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID);
-        void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation);
-    
-        void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items);
-        void SendInventoryItemDetails(LLUUID ownerID, LLUUID folderID, InventoryItemBase item);
-        void SendNameReply(LLUUID profileId, string firstname, string lastname);
-
-        
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Collections.Generic;
+using System.Net;
+using libsecondlife;
+using libsecondlife.Packets;
+using OpenSim.Framework.Types;
+using OpenSim.Framework.Data;
+
+namespace OpenSim.Framework.Interfaces
+{
+    public delegate void ChatFromViewer(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
+    public delegate void ImprovedInstantMessage(LLUUID fromAgentID, LLUUID toAgentID, uint timestamp, string fromAgentName, string message); // Cut down from full list
+    public delegate void RezObject(AssetBase primAsset, LLVector3 pos);
+    public delegate void ModifyTerrain(float height, float seconds, byte size, byte action, float north, float west);
+    public delegate void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam);
+    public delegate void StartAnim(LLUUID animID, int seq);
+    public delegate void LinkObjects(uint parent, List<uint> children);
+    public delegate void RequestMapBlocks(IClientAPI remoteClient, int minX, int minY, int maxX, int maxY);
+    public delegate void TeleportLocationRequest(IClientAPI remoteClient, ulong regionHandle, LLVector3 position, LLVector3 lookAt, uint flags);
+
+    public delegate void GenericCall(IClientAPI remoteClient);
+    public delegate void GenericCall2();
+    public delegate void GenericCall3(Packet packet); // really don't want to be passing packets in these events, so this is very temporary.
+    public delegate void GenericCall4(Packet packet, IClientAPI remoteClient);
+    public delegate void GenericCall5(IClientAPI remoteClient, bool status);
+    public delegate void GenericCall6(LLUUID uid);
+    public delegate void GenericCall7(uint localID, string message);
+
+    public delegate void UpdateShape(uint localID, ObjectShapePacket.ObjectDataBlock shapeBlock);
+    public delegate void ObjectSelect(uint localID, IClientAPI remoteClient);
+    public delegate void ObjectDeselect(uint localID, IClientAPI remoteClient);
+    public delegate void UpdatePrimFlags(uint localID, Packet packet, IClientAPI remoteClient);
+    public delegate void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient);
+    public delegate void UpdateVector(uint localID, LLVector3 pos, IClientAPI remoteClient);
+    public delegate void UpdatePrimRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient);
+    public delegate void UpdatePrimSingleRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient);
+    public delegate void UpdatePrimGroupRotation(uint localID,LLVector3 pos, LLQuaternion rot, IClientAPI remoteClient);
+    public delegate void ObjectDuplicate(uint localID, LLVector3 offset, uint dupeFlags);
+    public delegate void StatusChange(bool status);
+    public delegate void NewAvatar(IClientAPI remoteClient, LLUUID agentID, bool status);
+    public delegate void UpdateAgent(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation);
+    public delegate void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 grapPos, IClientAPI remoteClient);
+
+    public delegate void ParcelPropertiesRequest(int start_x, int start_y, int end_x, int end_y, int sequence_id, bool snap_selection, IClientAPI remote_client);
+    public delegate void ParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client);
+    public delegate void ParcelJoinRequest(int west, int south, int east, int north, IClientAPI remote_client);
+    public delegate void ParcelPropertiesUpdateRequest(ParcelPropertiesUpdatePacket packet, IClientAPI remote_client);
+    public delegate void ParcelSelectObjects(int parcel_local_id, int request_type, IClientAPI remote_client);
+    public delegate void ParcelObjectOwnerRequest(int local_id, IClientAPI remote_client);
+    public delegate void EstateOwnerMessageRequest(EstateOwnerMessagePacket packet, IClientAPI remote_client);
+
+    public delegate void UUIDNameRequest(LLUUID id, IClientAPI remote_client);
+
+    public delegate void AddNewPrim(LLUUID ownerID, LLVector3 pos, PrimitiveBaseShape shape);
+
+    
+
+    public interface IClientAPI
+    {
+        event ImprovedInstantMessage OnInstantMessage;
+        event ChatFromViewer OnChatFromViewer;
+        event RezObject OnRezObject;
+        event ModifyTerrain OnModifyTerrain;
+        event SetAppearance OnSetAppearance;
+        event StartAnim OnStartAnim;
+        event LinkObjects OnLinkObjects;
+        event RequestMapBlocks OnRequestMapBlocks;
+        event TeleportLocationRequest OnTeleportLocationRequest;
+
+        event GenericCall4 OnDeRezObject;
+        event GenericCall OnRegionHandShakeReply;
+        event GenericCall OnRequestWearables;
+        event GenericCall2 OnCompleteMovementToRegion;
+        event UpdateAgent OnAgentUpdate;
+        event GenericCall OnRequestAvatarsData;
+        event AddNewPrim OnAddPrim;
+        event ObjectDuplicate OnObjectDuplicate;
+        event UpdateVector OnGrapObject;
+        event ObjectSelect OnDeGrapObject;
+        event MoveObject OnGrapUpdate;
+
+        event UpdateShape OnUpdatePrimShape;
+        event ObjectSelect OnObjectSelect;
+        event ObjectDeselect OnObjectDeselect;
+        event GenericCall7 OnObjectDescription;
+        event GenericCall7 OnObjectName;
+        event UpdatePrimFlags OnUpdatePrimFlags;
+        event UpdatePrimTexture OnUpdatePrimTexture;
+        event UpdateVector OnUpdatePrimGroupPosition;
+        event UpdateVector OnUpdatePrimSinglePosition;
+        event UpdatePrimRotation OnUpdatePrimGroupRotation;
+        event UpdatePrimSingleRotation OnUpdatePrimSingleRotation;
+        event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation;
+        event UpdateVector OnUpdatePrimScale;
+        event StatusChange OnChildAgentStatus;
+        event GenericCall2 OnStopMovement;
+        event NewAvatar OnNewAvatar;
+        event GenericCall6 OnRemoveAvatar;
+
+        event UUIDNameRequest OnNameFromUUIDRequest;
+
+        event ParcelPropertiesRequest OnParcelPropertiesRequest;
+        event ParcelDivideRequest OnParcelDivideRequest;
+        event ParcelJoinRequest OnParcelJoinRequest;
+        event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
+        event ParcelSelectObjects OnParcelSelectObjects;
+        event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest;
+        event EstateOwnerMessageRequest OnEstateOwnerMessage;
+
+        LLVector3 StartPos
+        {
+            get;
+            set;
+        }
+
+        LLUUID AgentId
+        {
+            get;
+        }
+
+        string FirstName
+        {
+            get;
+        }
+
+        string LastName
+        {
+            get;
+        }
+
+        void OutPacket(Packet newPack);
+        void SendWearables(AvatarWearable[] wearables);
+        void SendStartPingCheck(byte seq);
+        void SendKillObject(ulong regionHandle, uint avatarLocalID);
+        void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId);
+        void SendRegionHandshake(RegionInfo regionInfo);
+        void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
+        void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
+        void SendInstantMessage(string message, LLUUID target, string fromName);
+        void SendLayerData(float[] map);
+        void SendLayerData(int px, int py, float[] map);
+        void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look);
+        void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint );
+        AgentCircuitData RequestClientInfo();
+        void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint newRegionExternalEndPoint );
+        void SendMapBlock(List<MapBlockData> mapBlocks);
+        void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags);
+        void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags);
+        void SendTeleportCancel();
+        void SendTeleportLocationStart();
+        void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance);
+
+        void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry);
+        void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity);
+
+        void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint);
+        void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID , uint flags);
+        void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags);
+        void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLQuaternion rotation, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID);
+        void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID);
+        void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation);
+    
+        void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items);
+        void SendInventoryItemDetails(LLUUID ownerID, LLUUID folderID, InventoryItemBase item);
+        void SendNameReply(LLUUID profileId, string firstname, string lastname);
+
+        
+    }
+}

+ 71 - 71
OpenSim/Framework/General/Interfaces/ILocalStorage.cs

@@ -1,71 +1,71 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-using libsecondlife;
-using OpenSim.Framework.Types;
-
-namespace OpenSim.Framework.Interfaces
-{
-    /// <summary>
-    /// ILocalStorage. Really hacked together right now needs cleaning up
-    /// </summary>
-    [System.Obsolete("Redundant, use IRegionDataStore instead")]
-    public interface ILocalStorage
-    {
-        void Initialise(string datastore);
-
-        void StorePrim(PrimData prim);
-        void RemovePrim(LLUUID primID);
-        void LoadPrimitives(ILocalStorageReceiver receiver);
-
-        [System.Obsolete("Use DataStorage instead")]
-        float[] LoadWorld();
-        [System.Obsolete("Use DataStorage instead")]
-        void SaveMap(float[] heightmap);
-
-        void SaveParcels(ParcelData[] parcels);
-        void SaveParcel(ParcelData parcel);
-        void RemoveParcel(ParcelData parcel);
-        void RemoveAllParcels();
-        void LoadParcels(ILocalStorageParcelReceiver recv);
-
-        void ShutDown();
-    }
-
-    public interface ILocalStorageReceiver
-    {
-        void PrimFromStorage(PrimData prim);
-    }
-
-    public interface ILocalStorageParcelReceiver
-    {
-        void ParcelFromStorage(ParcelData data);
-        void NoParcelDataFromStorage();
-    }
-}
-
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using libsecondlife;
+using OpenSim.Framework.Types;
+
+namespace OpenSim.Framework.Interfaces
+{
+    /// <summary>
+    /// ILocalStorage. Really hacked together right now needs cleaning up
+    /// </summary>
+    [System.Obsolete("Redundant, use IRegionDataStore instead")]
+    public interface ILocalStorage
+    {
+        void Initialise(string datastore);
+
+        void StorePrim(PrimData prim);
+        void RemovePrim(LLUUID primID);
+        void LoadPrimitives(ILocalStorageReceiver receiver);
+
+        [System.Obsolete("Use DataStorage instead")]
+        float[] LoadWorld();
+        [System.Obsolete("Use DataStorage instead")]
+        void SaveMap(float[] heightmap);
+
+        void SaveParcels(ParcelData[] parcels);
+        void SaveParcel(ParcelData parcel);
+        void RemoveParcel(ParcelData parcel);
+        void RemoveAllParcels();
+        void LoadParcels(ILocalStorageParcelReceiver recv);
+
+        void ShutDown();
+    }
+
+    public interface ILocalStorageReceiver
+    {
+        void PrimFromStorage(PrimData prim);
+    }
+
+    public interface ILocalStorageParcelReceiver
+    {
+        void ParcelFromStorage(ParcelData data);
+        void NoParcelDataFromStorage();
+    }
+}
+

+ 39 - 39
OpenSim/Framework/General/Interfaces/IUserServer.cs

@@ -1,39 +1,39 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-using OpenSim.Framework.Inventory;
-
-namespace OpenSim.Framework.Interfaces
-{
-    public interface IUserServer
-    {
-        AgentInventory RequestAgentsInventory(LLUUID agentID);
-        void SetServerInfo(string ServerUrl, string SendKey, string RecvKey);
-        bool UpdateAgentsInventory(LLUUID agentID, AgentInventory inventory);
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+using OpenSim.Framework.Inventory;
+
+namespace OpenSim.Framework.Interfaces
+{
+    public interface IUserServer
+    {
+        AgentInventory RequestAgentsInventory(LLUUID agentID);
+        void SetServerInfo(string ServerUrl, string SendKey, string RecvKey);
+        bool UpdateAgentsInventory(LLUUID agentID, AgentInventory inventory);
+    }
+}

+ 42 - 42
OpenSim/Framework/General/Interfaces/IWorld.cs

@@ -1,42 +1,42 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-using OpenSim.Framework.Types;
-
-namespace OpenSim.Framework.Interfaces
-{
-    public interface IWorld
-    {
-        void AddNewClient(IClientAPI client, bool child);
-        void RemoveClient(LLUUID agentID);
-        
-        RegionInfo RegionInfo { get; }
-        object SyncRoot { get; }
-        uint NextLocalId { get; }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+using OpenSim.Framework.Types;
+
+namespace OpenSim.Framework.Interfaces
+{
+    public interface IWorld
+    {
+        void AddNewClient(IClientAPI client, bool child);
+        void RemoveClient(LLUUID agentID);
+        
+        RegionInfo RegionInfo { get; }
+        object SyncRoot { get; }
+        uint NextLocalId { get; }
+    }
+}

+ 127 - 127
OpenSim/Framework/General/NpcClientBase.cs

@@ -1,127 +1,127 @@
-using System.Collections.Generic;
-using System.Net;
-using OpenSim.Framework.Interfaces;
-using OpenSim.Framework.Types;
-using OpenSim.Framework.Data;
-using libsecondlife;
-using libsecondlife.Packets;
-
-
-namespace OpenSim.Framework
-{
-   public  class NpcClientBase :IClientAPI
-   {
-       public event ImprovedInstantMessage OnInstantMessage;
-       public event ChatFromViewer OnChatFromViewer;
-       public event RezObject OnRezObject;
-       public event ModifyTerrain OnModifyTerrain;
-       public event SetAppearance OnSetAppearance;
-       public event StartAnim OnStartAnim;
-       public event LinkObjects OnLinkObjects;
-       public event RequestMapBlocks OnRequestMapBlocks;
-       public event TeleportLocationRequest OnTeleportLocationRequest;
-
-       public event GenericCall4 OnDeRezObject;
-       public event GenericCall OnRegionHandShakeReply;
-       public event GenericCall OnRequestWearables;
-       public event GenericCall2 OnCompleteMovementToRegion;
-       public event UpdateAgent OnAgentUpdate;
-       public event GenericCall OnRequestAvatarsData;
-       public event AddNewPrim OnAddPrim;
-       public event ObjectDuplicate OnObjectDuplicate;
-       public event UpdateVector OnGrapObject;
-       public event ObjectSelect OnDeGrapObject;
-       public event MoveObject OnGrapUpdate;
-
-       public event UpdateShape OnUpdatePrimShape;
-       public event ObjectSelect OnObjectSelect;
-       public event GenericCall7 OnObjectDescription;
-       public event GenericCall7 OnObjectName;
-       public event UpdatePrimFlags OnUpdatePrimFlags;
-       public event UpdatePrimTexture OnUpdatePrimTexture;
-       public event UpdateVector OnUpdatePrimGroupPosition;
-       public event UpdateVector OnUpdatePrimSinglePosition;
-       public event UpdatePrimRotation OnUpdatePrimGroupRotation;
-       public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation;
-       public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation;
-       public event UpdateVector OnUpdatePrimScale;
-       public event StatusChange OnChildAgentStatus;
-       public event GenericCall2 OnStopMovement;
-       public event NewAvatar OnNewAvatar;
-       public event GenericCall6 OnRemoveAvatar;
-
-       public event UUIDNameRequest OnNameFromUUIDRequest;
-
-       public event ParcelPropertiesRequest OnParcelPropertiesRequest;
-       public event ParcelDivideRequest OnParcelDivideRequest;
-       public event ParcelJoinRequest OnParcelJoinRequest;
-       public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
-       public event ParcelSelectObjects OnParcelSelectObjects;
-       public event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest;
-       public event ObjectDeselect OnObjectDeselect;
-
-
-       public event EstateOwnerMessageRequest OnEstateOwnerMessage;
-
-       public virtual LLVector3 StartPos
-       {
-           get { return new LLVector3(); }
-           set {  }
-       }
-
-       public virtual LLUUID AgentId
-       {
-           get { return LLUUID.Random(); }
-       }
-
-       public virtual string FirstName
-       {
-           get { return ""; }
-       }
-
-       public virtual string LastName
-       {
-           get { return ""; }
-       }
-
-       public NpcClientBase()
-       {
-       }
-
-       public virtual void OutPacket(Packet newPack){}
-       public virtual void SendWearables(AvatarWearable[] wearables){}
-       public virtual void SendStartPingCheck(byte seq){}
-       public virtual void SendKillObject(ulong regionHandle, uint avatarLocalID){}
-       public virtual void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId){}
-       public virtual void SendRegionHandshake(RegionInfo regionInfo){}
-       public virtual void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID){}
-       public virtual void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID){}
-       public virtual void SendInstantMessage(string message, LLUUID target, string fromName){}
-       public virtual void SendLayerData(float[] map){}
-       public virtual void SendLayerData(int px, int py, float[] map){}
-       public virtual void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look){}
-       public virtual void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint){}
-       public virtual AgentCircuitData RequestClientInfo() { return new AgentCircuitData(); }
-       public virtual void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint newRegionExternalEndPoint){}
-       public virtual void SendMapBlock(List<MapBlockData> mapBlocks){}
-       public virtual void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags){}
-       public virtual void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags){}
-       public virtual void SendTeleportCancel(){}
-       public virtual void SendTeleportLocationStart(){}
-       public virtual void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance){}
-
-       public virtual void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry){}
-       public virtual void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity){}
-
-       public virtual void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint){}
-       public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID, uint flags){}
-       public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags){}
-       public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLQuaternion rotation, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID){}
-       public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID){}
-       public virtual void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation){}
-
-       public virtual void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items){}
-       public virtual void SendInventoryItemDetails(LLUUID ownerID, LLUUID folderID, InventoryItemBase item){}
-       public virtual void SendNameReply(LLUUID profileId, string firstname, string lastname){}
-    }
-}
+using System.Collections.Generic;
+using System.Net;
+using OpenSim.Framework.Interfaces;
+using OpenSim.Framework.Types;
+using OpenSim.Framework.Data;
+using libsecondlife;
+using libsecondlife.Packets;
+
+
+namespace OpenSim.Framework
+{
+   public  class NpcClientBase :IClientAPI
+   {
+       public event ImprovedInstantMessage OnInstantMessage;
+       public event ChatFromViewer OnChatFromViewer;
+       public event RezObject OnRezObject;
+       public event ModifyTerrain OnModifyTerrain;
+       public event SetAppearance OnSetAppearance;
+       public event StartAnim OnStartAnim;
+       public event LinkObjects OnLinkObjects;
+       public event RequestMapBlocks OnRequestMapBlocks;
+       public event TeleportLocationRequest OnTeleportLocationRequest;
+
+       public event GenericCall4 OnDeRezObject;
+       public event GenericCall OnRegionHandShakeReply;
+       public event GenericCall OnRequestWearables;
+       public event GenericCall2 OnCompleteMovementToRegion;
+       public event UpdateAgent OnAgentUpdate;
+       public event GenericCall OnRequestAvatarsData;
+       public event AddNewPrim OnAddPrim;
+       public event ObjectDuplicate OnObjectDuplicate;
+       public event UpdateVector OnGrapObject;
+       public event ObjectSelect OnDeGrapObject;
+       public event MoveObject OnGrapUpdate;
+
+       public event UpdateShape OnUpdatePrimShape;
+       public event ObjectSelect OnObjectSelect;
+       public event GenericCall7 OnObjectDescription;
+       public event GenericCall7 OnObjectName;
+       public event UpdatePrimFlags OnUpdatePrimFlags;
+       public event UpdatePrimTexture OnUpdatePrimTexture;
+       public event UpdateVector OnUpdatePrimGroupPosition;
+       public event UpdateVector OnUpdatePrimSinglePosition;
+       public event UpdatePrimRotation OnUpdatePrimGroupRotation;
+       public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation;
+       public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation;
+       public event UpdateVector OnUpdatePrimScale;
+       public event StatusChange OnChildAgentStatus;
+       public event GenericCall2 OnStopMovement;
+       public event NewAvatar OnNewAvatar;
+       public event GenericCall6 OnRemoveAvatar;
+
+       public event UUIDNameRequest OnNameFromUUIDRequest;
+
+       public event ParcelPropertiesRequest OnParcelPropertiesRequest;
+       public event ParcelDivideRequest OnParcelDivideRequest;
+       public event ParcelJoinRequest OnParcelJoinRequest;
+       public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
+       public event ParcelSelectObjects OnParcelSelectObjects;
+       public event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest;
+       public event ObjectDeselect OnObjectDeselect;
+
+
+       public event EstateOwnerMessageRequest OnEstateOwnerMessage;
+
+       public virtual LLVector3 StartPos
+       {
+           get { return new LLVector3(); }
+           set {  }
+       }
+
+       public virtual LLUUID AgentId
+       {
+           get { return LLUUID.Random(); }
+       }
+
+       public virtual string FirstName
+       {
+           get { return ""; }
+       }
+
+       public virtual string LastName
+       {
+           get { return ""; }
+       }
+
+       public NpcClientBase()
+       {
+       }
+
+       public virtual void OutPacket(Packet newPack){}
+       public virtual void SendWearables(AvatarWearable[] wearables){}
+       public virtual void SendStartPingCheck(byte seq){}
+       public virtual void SendKillObject(ulong regionHandle, uint avatarLocalID){}
+       public virtual void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId){}
+       public virtual void SendRegionHandshake(RegionInfo regionInfo){}
+       public virtual void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID){}
+       public virtual void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID){}
+       public virtual void SendInstantMessage(string message, LLUUID target, string fromName){}
+       public virtual void SendLayerData(float[] map){}
+       public virtual void SendLayerData(int px, int py, float[] map){}
+       public virtual void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look){}
+       public virtual void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint){}
+       public virtual AgentCircuitData RequestClientInfo() { return new AgentCircuitData(); }
+       public virtual void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint newRegionExternalEndPoint){}
+       public virtual void SendMapBlock(List<MapBlockData> mapBlocks){}
+       public virtual void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags){}
+       public virtual void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags){}
+       public virtual void SendTeleportCancel(){}
+       public virtual void SendTeleportLocationStart(){}
+       public virtual void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance){}
+
+       public virtual void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry){}
+       public virtual void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity){}
+
+       public virtual void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint){}
+       public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID, uint flags){}
+       public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags){}
+       public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLQuaternion rotation, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID){}
+       public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID){}
+       public virtual void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation){}
+
+       public virtual void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items){}
+       public virtual void SendInventoryItemDetails(LLUUID ownerID, LLUUID folderID, InventoryItemBase item){}
+       public virtual void SendNameReply(LLUUID profileId, string firstname, string lastname){}
+    }
+}

+ 31 - 31
OpenSim/Framework/General/Properties/AssemblyInfo.cs

@@ -1,31 +1,31 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("OpenSim.FrameWork")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("OpenSim.FrameWork")]
-[assembly: AssemblyCopyright("Copyright ©  2007")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("a08e20c7-f191-4137-b1f0-9291408fa521")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+using System.Reflection;
+using System.Runtime.InteropServices;
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OpenSim.FrameWork")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OpenSim.FrameWork")]
+[assembly: AssemblyCopyright("Copyright ©  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("a08e20c7-f191-4137-b1f0-9291408fa521")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 103 - 103
OpenSim/Framework/General/RegionCommsListener.cs

@@ -1,103 +1,103 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-using OpenSim.Framework.Interfaces;
-using OpenSim.Framework.Types;
-
-using System.Collections.Generic;
-
-namespace OpenSim.Framework
-{
-    public class RegionCommsListener :IRegionCommsListener
-    {
-        public event ExpectUserDelegate OnExpectUser;
-        public event GenericCall2 OnExpectChildAgent;
-        public event AgentCrossing OnAvatarCrossingIntoRegion;
-        public event UpdateNeighbours OnNeighboursUpdate;
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="agent"></param>
-        /// <returns></returns>
-        public virtual bool TriggerExpectUser(ulong regionHandle, AgentCircuitData  agent)
-        {
-            if(OnExpectUser != null)
-            {
-                
-                OnExpectUser(regionHandle, agent);
-                return true;
-            }
-
-            return false;
-        }
-
-        public virtual bool TriggerExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position)
-        {
-            if (OnAvatarCrossingIntoRegion != null)
-            {
-                OnAvatarCrossingIntoRegion(regionHandle, agentID, position);
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <remarks>TODO: Doesnt take any args??</remarks>
-        /// <returns></returns>
-        public virtual bool TriggerExpectChildAgent()
-        {
-            if (OnExpectChildAgent != null)
-            {
-                OnExpectChildAgent();
-                return true;
-            }
-
-            return false;
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <remarks>Added to avoid a unused compiler warning on OnNeighboursUpdate, TODO: Check me</remarks>
-        /// <param name="neighbours"></param>
-        /// <returns></returns>
-        public virtual bool TriggerOnNeighboursUpdate(List<RegionInfo> neighbours)
-        {
-            if (OnNeighboursUpdate != null)
-            {
-                OnNeighboursUpdate(neighbours);
-                return true;
-            }
-
-            return false;
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+using OpenSim.Framework.Interfaces;
+using OpenSim.Framework.Types;
+
+using System.Collections.Generic;
+
+namespace OpenSim.Framework
+{
+    public class RegionCommsListener :IRegionCommsListener
+    {
+        public event ExpectUserDelegate OnExpectUser;
+        public event GenericCall2 OnExpectChildAgent;
+        public event AgentCrossing OnAvatarCrossingIntoRegion;
+        public event UpdateNeighbours OnNeighboursUpdate;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="agent"></param>
+        /// <returns></returns>
+        public virtual bool TriggerExpectUser(ulong regionHandle, AgentCircuitData  agent)
+        {
+            if(OnExpectUser != null)
+            {
+                
+                OnExpectUser(regionHandle, agent);
+                return true;
+            }
+
+            return false;
+        }
+
+        public virtual bool TriggerExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position)
+        {
+            if (OnAvatarCrossingIntoRegion != null)
+            {
+                OnAvatarCrossingIntoRegion(regionHandle, agentID, position);
+                return true;
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <remarks>TODO: Doesnt take any args??</remarks>
+        /// <returns></returns>
+        public virtual bool TriggerExpectChildAgent()
+        {
+            if (OnExpectChildAgent != null)
+            {
+                OnExpectChildAgent();
+                return true;
+            }
+
+            return false;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <remarks>Added to avoid a unused compiler warning on OnNeighboursUpdate, TODO: Check me</remarks>
+        /// <param name="neighbours"></param>
+        /// <returns></returns>
+        public virtual bool TriggerOnNeighboursUpdate(List<RegionInfo> neighbours)
+        {
+            if (OnNeighboursUpdate != null)
+            {
+                OnNeighboursUpdate(neighbours);
+                return true;
+            }
+
+            return false;
+        }
+    }
+}

+ 135 - 135
OpenSim/Framework/General/Remoting.cs

@@ -1,135 +1,135 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Security.Cryptography;
-using System.Text;
-
-namespace OpenSim.Framework
-{
-    /// <summary>
-    /// NEEDS AUDIT.
-    /// </summary>
-    /// <remarks>
-    /// Suggested implementation
-    /// <para>Store two digests for each foreign host. A local copy of the local hash using the local challenge (when issued), and a local copy of the remote hash using the remote challenge.</para>
-    /// <para>When sending data to the foreign host - run 'Sign' on the data and affix the returned byte[] to the message.</para>
-    /// <para>When recieving data from the foreign host - run 'Authenticate' against the data and the attached byte[].</para>
-    /// <para>Both hosts should be performing these operations for this to be effective.</para>
-    /// </remarks>
-    class RemoteDigest
-    {
-        private byte[] currentHash;
-        private byte[] secret;
-
-        private SHA512Managed SHA512;
-
-        /// <summary>
-        /// Initialises a new RemoteDigest authentication mechanism
-        /// </summary>
-        /// <remarks>Needs an audit by a cryptographic professional - was not "roll your own"'d by choice but rather a serious lack of decent authentication mechanisms in .NET remoting</remarks>
-        /// <param name="sharedSecret">The shared secret between systems (for inter-sim, this is provided in encrypted form during connection, for grid this is input manually in setup)</param>
-        /// <param name="salt">Binary salt - some common value - to be decided what</param>
-        /// <param name="challenge">The challenge key provided by the third party</param>
-        public RemoteDigest(string sharedSecret, byte[] salt, string challenge)
-        {
-            SHA512 = new SHA512Managed();
-            Rfc2898DeriveBytes RFC2898 = new Rfc2898DeriveBytes(sharedSecret,salt);
-            secret = RFC2898.GetBytes(512);
-            ASCIIEncoding ASCII = new ASCIIEncoding();
-
-            currentHash = SHA512.ComputeHash(AppendArrays(secret, ASCII.GetBytes(challenge)));
-        }
-
-        /// <summary>
-        /// Authenticates a piece of incoming data against the local digest. Upon successful authentication, digest string is incremented.
-        /// </summary>
-        /// <param name="data">The incoming data</param>
-        /// <param name="digest">The remote digest</param>
-        /// <returns></returns>
-        public bool Authenticate(byte[] data, byte[] digest)
-        {
-            byte[] newHash = SHA512.ComputeHash(AppendArrays(AppendArrays(currentHash, secret), data));
-            if (digest == newHash)
-            {
-                currentHash = newHash;
-                return true;
-            }
-            else
-            {
-                throw new Exception("Hash comparison failed. Key resync required.");
-            }
-        }
-
-        /// <summary>
-        /// Signs a new bit of data with the current hash. Returns a byte array which should be affixed to the message.
-        /// Signing a piece of data will automatically increment the hash - if you sign data and do not send it, the 
-        /// hashes will get out of sync and throw an exception when validation is attempted.
-        /// </summary>
-        /// <param name="data">The outgoing data</param>
-        /// <returns>The local digest</returns>
-        public byte[] Sign(byte[] data)
-        {
-            currentHash = SHA512.ComputeHash(AppendArrays(AppendArrays(currentHash, secret), data));
-            return currentHash;
-        }
-
-        /// <summary>
-        /// Generates a new challenge string to be issued to a foreign host. Challenges are 1024-bit (effective strength of less than 512-bits) messages generated using the Crytographic Random Number Generator.
-        /// </summary>
-        /// <returns>A 128-character hexadecimal string containing the challenge.</returns>
-        public static string GenerateChallenge()
-        {
-            RNGCryptoServiceProvider RNG = new RNGCryptoServiceProvider();
-            byte[] bytes = new byte[64];
-            RNG.GetBytes(bytes);
-
-            StringBuilder sb = new StringBuilder(bytes.Length * 2);
-            foreach (byte b in bytes)
-            {
-                sb.AppendFormat("{0:x2}", b);
-            }
-            return sb.ToString();
-        }
-
-        /// <summary>
-        /// Helper function, merges two byte arrays
-        /// </summary>
-        /// <remarks>Sourced from MSDN Forum</remarks>
-        /// <param name="a">A</param>
-        /// <param name="b">B</param>
-        /// <returns>C</returns>
-        private byte[] AppendArrays(byte[] a, byte[] b)
-        {
-            byte[] c = new byte[a.Length + b.Length];
-            Buffer.BlockCopy(a, 0, c, 0, a.Length);
-            Buffer.BlockCopy(b, 0, c, a.Length, b.Length);
-            return c;
-        }
-
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Security.Cryptography;
+using System.Text;
+
+namespace OpenSim.Framework
+{
+    /// <summary>
+    /// NEEDS AUDIT.
+    /// </summary>
+    /// <remarks>
+    /// Suggested implementation
+    /// <para>Store two digests for each foreign host. A local copy of the local hash using the local challenge (when issued), and a local copy of the remote hash using the remote challenge.</para>
+    /// <para>When sending data to the foreign host - run 'Sign' on the data and affix the returned byte[] to the message.</para>
+    /// <para>When recieving data from the foreign host - run 'Authenticate' against the data and the attached byte[].</para>
+    /// <para>Both hosts should be performing these operations for this to be effective.</para>
+    /// </remarks>
+    class RemoteDigest
+    {
+        private byte[] currentHash;
+        private byte[] secret;
+
+        private SHA512Managed SHA512;
+
+        /// <summary>
+        /// Initialises a new RemoteDigest authentication mechanism
+        /// </summary>
+        /// <remarks>Needs an audit by a cryptographic professional - was not "roll your own"'d by choice but rather a serious lack of decent authentication mechanisms in .NET remoting</remarks>
+        /// <param name="sharedSecret">The shared secret between systems (for inter-sim, this is provided in encrypted form during connection, for grid this is input manually in setup)</param>
+        /// <param name="salt">Binary salt - some common value - to be decided what</param>
+        /// <param name="challenge">The challenge key provided by the third party</param>
+        public RemoteDigest(string sharedSecret, byte[] salt, string challenge)
+        {
+            SHA512 = new SHA512Managed();
+            Rfc2898DeriveBytes RFC2898 = new Rfc2898DeriveBytes(sharedSecret,salt);
+            secret = RFC2898.GetBytes(512);
+            ASCIIEncoding ASCII = new ASCIIEncoding();
+
+            currentHash = SHA512.ComputeHash(AppendArrays(secret, ASCII.GetBytes(challenge)));
+        }
+
+        /// <summary>
+        /// Authenticates a piece of incoming data against the local digest. Upon successful authentication, digest string is incremented.
+        /// </summary>
+        /// <param name="data">The incoming data</param>
+        /// <param name="digest">The remote digest</param>
+        /// <returns></returns>
+        public bool Authenticate(byte[] data, byte[] digest)
+        {
+            byte[] newHash = SHA512.ComputeHash(AppendArrays(AppendArrays(currentHash, secret), data));
+            if (digest == newHash)
+            {
+                currentHash = newHash;
+                return true;
+            }
+            else
+            {
+                throw new Exception("Hash comparison failed. Key resync required.");
+            }
+        }
+
+        /// <summary>
+        /// Signs a new bit of data with the current hash. Returns a byte array which should be affixed to the message.
+        /// Signing a piece of data will automatically increment the hash - if you sign data and do not send it, the 
+        /// hashes will get out of sync and throw an exception when validation is attempted.
+        /// </summary>
+        /// <param name="data">The outgoing data</param>
+        /// <returns>The local digest</returns>
+        public byte[] Sign(byte[] data)
+        {
+            currentHash = SHA512.ComputeHash(AppendArrays(AppendArrays(currentHash, secret), data));
+            return currentHash;
+        }
+
+        /// <summary>
+        /// Generates a new challenge string to be issued to a foreign host. Challenges are 1024-bit (effective strength of less than 512-bits) messages generated using the Crytographic Random Number Generator.
+        /// </summary>
+        /// <returns>A 128-character hexadecimal string containing the challenge.</returns>
+        public static string GenerateChallenge()
+        {
+            RNGCryptoServiceProvider RNG = new RNGCryptoServiceProvider();
+            byte[] bytes = new byte[64];
+            RNG.GetBytes(bytes);
+
+            StringBuilder sb = new StringBuilder(bytes.Length * 2);
+            foreach (byte b in bytes)
+            {
+                sb.AppendFormat("{0:x2}", b);
+            }
+            return sb.ToString();
+        }
+
+        /// <summary>
+        /// Helper function, merges two byte arrays
+        /// </summary>
+        /// <remarks>Sourced from MSDN Forum</remarks>
+        /// <param name="a">A</param>
+        /// <param name="b">B</param>
+        /// <returns>C</returns>
+        private byte[] AppendArrays(byte[] a, byte[] b)
+        {
+            byte[] c = new byte[a.Length + b.Length];
+            Buffer.BlockCopy(a, 0, c, 0, a.Length);
+            Buffer.BlockCopy(b, 0, c, a.Length, b.Length);
+            return c;
+        }
+
+    }
+}

+ 49 - 49
OpenSim/Framework/General/Types/AgentCiruitData.cs

@@ -1,49 +1,49 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-using System;
-
-namespace OpenSim.Framework.Types
-{
-    [Serializable]
-    public class AgentCircuitData
-    {
-        public AgentCircuitData() { }
-        public LLUUID AgentID;
-        public LLUUID SessionID;
-        public LLUUID SecureSessionID;
-        public LLVector3 startpos;
-        public string firstname;
-        public string lastname;
-        public uint circuitcode;
-        public bool child;
-        public LLUUID InventoryFolder;
-        public LLUUID BaseFolder;
-        public string CapsPath = ""; 
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+using System;
+
+namespace OpenSim.Framework.Types
+{
+    [Serializable]
+    public class AgentCircuitData
+    {
+        public AgentCircuitData() { }
+        public LLUUID AgentID;
+        public LLUUID SessionID;
+        public LLUUID SecureSessionID;
+        public LLVector3 startpos;
+        public string firstname;
+        public string lastname;
+        public uint circuitcode;
+        public bool child;
+        public LLUUID InventoryFolder;
+        public LLUUID BaseFolder;
+        public string CapsPath = ""; 
+    }
+}

+ 57 - 57
OpenSim/Framework/General/Types/AgentWearable.cs

@@ -1,57 +1,57 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-
-namespace OpenSim.Framework.Types
-{
-    public class AvatarWearable
-    {
-        public LLUUID AssetID = new LLUUID("00000000-0000-0000-0000-000000000000");
-        public LLUUID ItemID = new LLUUID("00000000-0000-0000-0000-000000000000");
-
-        public AvatarWearable()
-        {
-
-        }
-
-        public static AvatarWearable[] DefaultWearables
-        {
-            get
-            {
-                AvatarWearable[] defaultWearables =  new AvatarWearable[13]; //should be 13 of these
-                for (int i = 0; i < 13; i++)
-                {
-                    defaultWearables[i] = new AvatarWearable();
-                }
-                defaultWearables[0].AssetID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
-                defaultWearables[0].ItemID = LLUUID.Random();
-                return defaultWearables;
-            }
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+
+namespace OpenSim.Framework.Types
+{
+    public class AvatarWearable
+    {
+        public LLUUID AssetID = new LLUUID("00000000-0000-0000-0000-000000000000");
+        public LLUUID ItemID = new LLUUID("00000000-0000-0000-0000-000000000000");
+
+        public AvatarWearable()
+        {
+
+        }
+
+        public static AvatarWearable[] DefaultWearables
+        {
+            get
+            {
+                AvatarWearable[] defaultWearables =  new AvatarWearable[13]; //should be 13 of these
+                for (int i = 0; i < 13; i++)
+                {
+                    defaultWearables[i] = new AvatarWearable();
+                }
+                defaultWearables[0].AssetID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
+                defaultWearables[0].ItemID = LLUUID.Random();
+                return defaultWearables;
+            }
+        }
+    }
+}

+ 46 - 46
OpenSim/Framework/General/Types/AssetBase.cs

@@ -1,46 +1,46 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-
-namespace OpenSim.Framework.Types
-{
-    public class AssetBase
-    {
-        public byte[] Data;
-        public LLUUID FullID;
-        public sbyte Type;
-        public sbyte InvType;
-        public string Name;
-        public string Description;
-
-        public AssetBase()
-        {
-
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+
+namespace OpenSim.Framework.Types
+{
+    public class AssetBase
+    {
+        public byte[] Data;
+        public LLUUID FullID;
+        public sbyte Type;
+        public sbyte InvType;
+        public string Name;
+        public string Description;
+
+        public AssetBase()
+        {
+
+        }
+    }
+}

+ 59 - 59
OpenSim/Framework/General/Types/AssetLandmark.cs

@@ -1,59 +1,59 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Text;
-using libsecondlife;
-
-namespace OpenSim.Framework.Types
-{
-    public class AssetLandmark : AssetBase
-    {
-        public int Version;
-        public LLVector3 Position;
-        public LLUUID RegionID;
-
-        public AssetLandmark(AssetBase a)
-        {
-            this.Data = a.Data;
-            this.FullID = a.FullID;
-            this.Type = a.Type;
-            this.InvType = a.InvType;
-            this.Name = a.Name;
-            this.Description = a.Description;
-            InternData();
-        }
-
-        private void InternData()
-        {
-            string temp = Encoding.UTF8.GetString(Data).Trim(); 
-            string[] parts = temp.Split('\n');
-            int.TryParse(parts[0].Substring(17, 1), out Version);
-            LLUUID.TryParse(parts[1].Substring(10, 36), out RegionID);
-            LLVector3.TryParse(parts[2].Substring(11, parts[2].Length - 11), out Position);
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Text;
+using libsecondlife;
+
+namespace OpenSim.Framework.Types
+{
+    public class AssetLandmark : AssetBase
+    {
+        public int Version;
+        public LLVector3 Position;
+        public LLUUID RegionID;
+
+        public AssetLandmark(AssetBase a)
+        {
+            this.Data = a.Data;
+            this.FullID = a.FullID;
+            this.Type = a.Type;
+            this.InvType = a.InvType;
+            this.Name = a.Name;
+            this.Description = a.Description;
+            InternData();
+        }
+
+        private void InternData()
+        {
+            string temp = Encoding.UTF8.GetString(Data).Trim(); 
+            string[] parts = temp.Split('\n');
+            int.TryParse(parts[0].Substring(17, 1), out Version);
+            LLUUID.TryParse(parts[1].Substring(10, 36), out RegionID);
+            LLVector3.TryParse(parts[2].Substring(11, parts[2].Length - 11), out Position);
+        }
+    }
+}

+ 47 - 47
OpenSim/Framework/General/Types/AssetStorage.cs

@@ -1,47 +1,47 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-
-namespace OpenSim.Framework.Types
-{
-	public class AssetStorage
-	{
-
-		public AssetStorage() {
-		}
-
-		public AssetStorage(LLUUID assetUUID) {
-			UUID=assetUUID;
-		}
-
-		public byte[] Data;
-		public sbyte Type;
-		public string Name;
-		public LLUUID UUID;
-	}
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+
+namespace OpenSim.Framework.Types
+{
+	public class AssetStorage
+	{
+
+		public AssetStorage() {
+		}
+
+		public AssetStorage(LLUUID assetUUID) {
+			UUID=assetUUID;
+		}
+
+		public byte[] Data;
+		public sbyte Type;
+		public string Name;
+		public LLUUID UUID;
+	}
+}

+ 93 - 93
OpenSim/Framework/General/Types/EstateSettings.cs

@@ -1,93 +1,93 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-using libsecondlife;
-
-namespace OpenSim.Framework.Types
-{
-    public class EstateSettings
-    {
-        //Settings to this island
-        public float billableFactor = (float)0.0;
-        public uint estateID = 0;
-        public uint parentEstateID = 0;
-
-        public byte maxAgents = 40;
-        public float objectBonusFactor = (float)1.0;
-
-        public int redirectGridX = 0; //??
-        public int redirectGridY = 0; //??
-        public Simulator.RegionFlags regionFlags = Simulator.RegionFlags.None; //Booleam values of various region settings
-        public Simulator.SimAccess simAccess = Simulator.SimAccess.Mature; //Is sim PG, Mature, etc? Mature by default.
-        public float sunHour = 0;
-
-        public float terrainRaiseLimit = 0;
-        public float terrainLowerLimit = 0;
-
-        public bool useFixedSun = false;
-        public int pricePerMeter = 1;
-
-        public ushort regionWaterHeight = 20;
-        public bool regionAllowTerraform = true;
-
-        // Region Information
-        // Low resolution 'base' textures. No longer used.
-        public LLUUID terrainBase0 = new LLUUID("b8d3965a-ad78-bf43-699b-bff8eca6c975"); // Default
-        public LLUUID terrainBase1 = new LLUUID("abb783e6-3e93-26c0-248a-247666855da3"); // Default
-        public LLUUID terrainBase2 = new LLUUID("179cdabd-398a-9b6b-1391-4dc333ba321f"); // Default
-        public LLUUID terrainBase3 = new LLUUID("beb169c7-11ea-fff2-efe5-0f24dc881df2"); // Default
-
-        // Higher resolution terrain textures
-        public LLUUID terrainDetail0 = new LLUUID("00000000-0000-0000-0000-000000000000");
-        public LLUUID terrainDetail1 = new LLUUID("00000000-0000-0000-0000-000000000000");
-        public LLUUID terrainDetail2 = new LLUUID("00000000-0000-0000-0000-000000000000");
-        public LLUUID terrainDetail3 = new LLUUID("00000000-0000-0000-0000-000000000000");
-
-        // First quad - each point is bilinearly interpolated at each meter of terrain
-        public float terrainStartHeight0 = 10.0f;      
-        public float terrainStartHeight1 = 10.0f;      
-        public float terrainStartHeight2 = 10.0f;       
-        public float terrainStartHeight3 = 10.0f;       
-
-        // Second quad - also bilinearly interpolated.
-        // Terrain texturing is done that:
-        // 0..3 (0 = base0, 3 = base3) = (terrain[x,y] - start[x,y]) / range[x,y]
-        public float terrainHeightRange0 = 60.0f; //00
-        public float terrainHeightRange1 = 60.0f; //01
-        public float terrainHeightRange2 = 60.0f; //10
-        public float terrainHeightRange3 = 60.0f; //11
-
-        // Terrain Default (Must be in F32 Format!)
-        public string terrainFile = "default.r32";
-        public double terrainMultiplier = 60.0;
-        public float waterHeight = (float)20.0;
-
-        public LLUUID terrainImageID = LLUUID.Zero; // the assetID that is the current Map image for this region
-
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using libsecondlife;
+
+namespace OpenSim.Framework.Types
+{
+    public class EstateSettings
+    {
+        //Settings to this island
+        public float billableFactor = (float)0.0;
+        public uint estateID = 0;
+        public uint parentEstateID = 0;
+
+        public byte maxAgents = 40;
+        public float objectBonusFactor = (float)1.0;
+
+        public int redirectGridX = 0; //??
+        public int redirectGridY = 0; //??
+        public Simulator.RegionFlags regionFlags = Simulator.RegionFlags.None; //Booleam values of various region settings
+        public Simulator.SimAccess simAccess = Simulator.SimAccess.Mature; //Is sim PG, Mature, etc? Mature by default.
+        public float sunHour = 0;
+
+        public float terrainRaiseLimit = 0;
+        public float terrainLowerLimit = 0;
+
+        public bool useFixedSun = false;
+        public int pricePerMeter = 1;
+
+        public ushort regionWaterHeight = 20;
+        public bool regionAllowTerraform = true;
+
+        // Region Information
+        // Low resolution 'base' textures. No longer used.
+        public LLUUID terrainBase0 = new LLUUID("b8d3965a-ad78-bf43-699b-bff8eca6c975"); // Default
+        public LLUUID terrainBase1 = new LLUUID("abb783e6-3e93-26c0-248a-247666855da3"); // Default
+        public LLUUID terrainBase2 = new LLUUID("179cdabd-398a-9b6b-1391-4dc333ba321f"); // Default
+        public LLUUID terrainBase3 = new LLUUID("beb169c7-11ea-fff2-efe5-0f24dc881df2"); // Default
+
+        // Higher resolution terrain textures
+        public LLUUID terrainDetail0 = new LLUUID("00000000-0000-0000-0000-000000000000");
+        public LLUUID terrainDetail1 = new LLUUID("00000000-0000-0000-0000-000000000000");
+        public LLUUID terrainDetail2 = new LLUUID("00000000-0000-0000-0000-000000000000");
+        public LLUUID terrainDetail3 = new LLUUID("00000000-0000-0000-0000-000000000000");
+
+        // First quad - each point is bilinearly interpolated at each meter of terrain
+        public float terrainStartHeight0 = 10.0f;      
+        public float terrainStartHeight1 = 10.0f;      
+        public float terrainStartHeight2 = 10.0f;       
+        public float terrainStartHeight3 = 10.0f;       
+
+        // Second quad - also bilinearly interpolated.
+        // Terrain texturing is done that:
+        // 0..3 (0 = base0, 3 = base3) = (terrain[x,y] - start[x,y]) / range[x,y]
+        public float terrainHeightRange0 = 60.0f; //00
+        public float terrainHeightRange1 = 60.0f; //01
+        public float terrainHeightRange2 = 60.0f; //10
+        public float terrainHeightRange3 = 60.0f; //11
+
+        // Terrain Default (Must be in F32 Format!)
+        public string terrainFile = "default.r32";
+        public double terrainMultiplier = 60.0;
+        public float waterHeight = (float)20.0;
+
+        public LLUUID terrainImageID = LLUUID.Zero; // the assetID that is the current Map image for this region
+
+    }
+}

+ 49 - 49
OpenSim/Framework/General/Types/Login.cs

@@ -1,49 +1,49 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-
-namespace OpenSim.Framework.Types
-{
-    public class Login
-    {
-        public string First = "Test";
-        public string Last = "User";
-        public LLUUID Agent;
-        public LLUUID Session;
-        public LLUUID SecureSession = LLUUID.Zero;
-        public LLUUID InventoryFolder;
-        public LLUUID BaseFolder;
-        public uint CircuitCode;
-        public string CapsPath ="";
-
-        public Login()
-        {
-
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+
+namespace OpenSim.Framework.Types
+{
+    public class Login
+    {
+        public string First = "Test";
+        public string Last = "User";
+        public LLUUID Agent;
+        public LLUUID Session;
+        public LLUUID SecureSession = LLUUID.Zero;
+        public LLUUID InventoryFolder;
+        public LLUUID BaseFolder;
+        public uint CircuitCode;
+        public string CapsPath ="";
+
+        public Login()
+        {
+
+        }
+    }
+}

+ 23 - 23
OpenSim/Framework/General/Types/MapBlockData.cs

@@ -1,23 +1,23 @@
-using System;
-using libsecondlife;
-
-namespace OpenSim.Framework.Types
-{
-    public class MapBlockData
-    {
-        public uint Flags;
-        public ushort X;
-        public ushort Y;
-        public byte Agents;
-        public byte Access;
-        public byte WaterHeight;
-        public LLUUID MapImageId;
-        public String Name;
-        public uint RegionFlags;
-
-        public MapBlockData()
-        {
-
-        }
-    }
-}
+using System;
+using libsecondlife;
+
+namespace OpenSim.Framework.Types
+{
+    public class MapBlockData
+    {
+        public uint Flags;
+        public ushort X;
+        public ushort Y;
+        public byte Agents;
+        public byte Access;
+        public byte WaterHeight;
+        public LLUUID MapImageId;
+        public String Name;
+        public uint RegionFlags;
+
+        public MapBlockData()
+        {
+
+        }
+    }
+}

+ 42 - 42
OpenSim/Framework/General/Types/NeighbourInfo.cs

@@ -1,42 +1,42 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-namespace OpenSim.Framework.Types
-{
-    public class NeighbourInfo
-    {
-        public NeighbourInfo()
-        {
-        }
-
-        public ulong regionhandle;
-        public uint RegionLocX;
-        public uint RegionLocY;
-        public string sim_ip;
-        public uint sim_port;
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+namespace OpenSim.Framework.Types
+{
+    public class NeighbourInfo
+    {
+        public NeighbourInfo()
+        {
+        }
+
+        public ulong regionhandle;
+        public uint RegionLocX;
+        public uint RegionLocY;
+        public string sim_ip;
+        public uint sim_port;
+    }
+}

+ 219 - 219
OpenSim/Framework/General/Types/NetworkServersInfo.cs

@@ -1,219 +1,219 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using OpenSim.Framework.Console;
-using OpenSim.Framework.Interfaces;
-
-namespace OpenSim.Framework.Types
-{
-    public class NetworkServersInfo
-    {
-        public string AssetURL = "http://127.0.0.1:8003/";
-        public string AssetSendKey = "";
-
-        public string GridURL = "";
-        public string GridSendKey = "";
-        public string GridRecvKey = "";
-        public string UserURL = "";
-        public string UserSendKey = "";
-        public string UserRecvKey = "";
-        public bool isSandbox;
-
-        public uint DefaultHomeLocX = 1000;
-        public uint DefaultHomeLocY = 1000;
-
-        public int HttpListenerPort = 9000;
-        public int RemotingListenerPort = 8895;
-
-        public void InitConfig(bool sandboxMode, IGenericConfig configData)
-        {
-            this.isSandbox = sandboxMode;
-
-            try
-            {
-                string attri = "";
-
-                attri = "";
-                attri = configData.GetAttribute("HttpListenerPort");
-                if (attri == "")
-                {
-                    string location = MainLog.Instance.CmdPrompt("Http Listener Port", "9000");
-                    configData.SetAttribute("HttpListenerPort", location);
-                    this.HttpListenerPort = Convert.ToInt32(location);
-                }
-                else
-                {
-                    this.HttpListenerPort = Convert.ToInt32(attri);
-                }
-
-                attri = "";
-                attri = configData.GetAttribute("RemotingListenerPort");
-                if (attri == "")
-                {
-                    string location = MainLog.Instance.CmdPrompt("Remoting Listener Port", "8895");
-                    configData.SetAttribute("RemotingListenerPort", location);
-                    this.RemotingListenerPort = Convert.ToInt32(location);
-                }
-                else
-                {
-                    this.RemotingListenerPort = Convert.ToInt32(attri);
-                }
-
-                if (sandboxMode)
-                {
-                    // default home location X
-                    attri = "";
-                    attri = configData.GetAttribute("DefaultLocationX");
-                    if (attri == "")
-                    {
-                        string location = MainLog.Instance.CmdPrompt("Default Home Location X", "1000");
-                        configData.SetAttribute("DefaultLocationX", location);
-                        this.DefaultHomeLocX = (uint)Convert.ToUInt32(location);
-                    }
-                    else
-                    {
-                        this.DefaultHomeLocX = (uint)Convert.ToUInt32(attri);
-                    }
-
-                    // default home location Y
-                    attri = "";
-                    attri = configData.GetAttribute("DefaultLocationY");
-                    if (attri == "")
-                    {
-                        string location = MainLog.Instance.CmdPrompt("Default Home Location Y", "1000");
-                        configData.SetAttribute("DefaultLocationY", location);
-                        this.DefaultHomeLocY = (uint)Convert.ToUInt32(location);
-                    }
-                    else
-                    {
-                        this.DefaultHomeLocY = (uint)Convert.ToUInt32(attri);
-                    }
-                }
-                if (!isSandbox)
-                {
-                    //Grid Server 
-                    attri = "";
-                    attri = configData.GetAttribute("GridServerURL");
-                    if (attri == "")
-                    {
-                        this.GridURL = MainLog.Instance.CmdPrompt("Grid server URL", "http://127.0.0.1:8001/");
-                        configData.SetAttribute("GridServerURL", this.GridURL);
-                    }
-                    else
-                    {
-                        this.GridURL = attri;
-                    }
-
-                    //Grid Send Key
-                    attri = "";
-                    attri = configData.GetAttribute("GridSendKey");
-                    if (attri == "")
-                    {
-                        this.GridSendKey = MainLog.Instance.CmdPrompt("Key to send to grid server", "null");
-                        configData.SetAttribute("GridSendKey", this.GridSendKey);
-                    }
-                    else
-                    {
-                        this.GridSendKey = attri;
-                    }
-
-                    //Grid Receive Key
-                    attri = "";
-                    attri = configData.GetAttribute("GridRecvKey");
-                    if (attri == "")
-                    {
-                        this.GridRecvKey = MainLog.Instance.CmdPrompt("Key to expect from grid server", "null");
-                        configData.SetAttribute("GridRecvKey", this.GridRecvKey);
-                    }
-                    else
-                    {
-                        this.GridRecvKey = attri;
-                    }
-
-                    //Grid Server 
-                    attri = "";
-                    attri = configData.GetAttribute("UserServerURL");
-                    if (attri == "")
-                    {
-                        this.UserURL= MainLog.Instance.CmdPrompt("User server URL", "http://127.0.0.1:8002/");
-                        configData.SetAttribute("UserServerURL", this.UserURL);
-                    }
-                    else
-                    {
-                        this.UserURL = attri;
-                    }
-
-                    //Grid Send Key
-                    attri = "";
-                    attri = configData.GetAttribute("UserSendKey");
-                    if (attri == "")
-                    {
-                        this.UserSendKey = MainLog.Instance.CmdPrompt("Key to send to user server", "null");
-                        configData.SetAttribute("UserSendKey", this.UserSendKey);
-                    }
-                    else
-                    {
-                        this.UserSendKey = attri;
-                    }
-
-                    //Grid Receive Key
-                    attri = "";
-                    attri = configData.GetAttribute("UserRecvKey");
-                    if (attri == "")
-                    {
-                        this.UserRecvKey = MainLog.Instance.CmdPrompt("Key to expect from user server", "null");
-                        configData.SetAttribute("UserRecvKey", this.UserRecvKey);
-                    }
-                    else
-                    {
-                        this.UserRecvKey = attri;
-                    }
-
-                    attri = "";
-                    attri = configData.GetAttribute("AssetServerURL");
-                    if (attri == "")
-                    {
-                        this.AssetURL = MainLog.Instance.CmdPrompt("Asset server URL", "http://127.0.0.1:8003/");
-                        configData.SetAttribute("AssetServerURL", this.GridURL);
-                    }
-                    else
-                    {
-                        this.AssetURL = attri;
-                    }
-
-                }
-                configData.Commit();
-            }
-            catch (Exception e)
-            {
-                MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
-                MainLog.Instance.Warn(e.ToString());
-            }
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using OpenSim.Framework.Console;
+using OpenSim.Framework.Interfaces;
+
+namespace OpenSim.Framework.Types
+{
+    public class NetworkServersInfo
+    {
+        public string AssetURL = "http://127.0.0.1:8003/";
+        public string AssetSendKey = "";
+
+        public string GridURL = "";
+        public string GridSendKey = "";
+        public string GridRecvKey = "";
+        public string UserURL = "";
+        public string UserSendKey = "";
+        public string UserRecvKey = "";
+        public bool isSandbox;
+
+        public uint DefaultHomeLocX = 1000;
+        public uint DefaultHomeLocY = 1000;
+
+        public int HttpListenerPort = 9000;
+        public int RemotingListenerPort = 8895;
+
+        public void InitConfig(bool sandboxMode, IGenericConfig configData)
+        {
+            this.isSandbox = sandboxMode;
+
+            try
+            {
+                string attri = "";
+
+                attri = "";
+                attri = configData.GetAttribute("HttpListenerPort");
+                if (attri == "")
+                {
+                    string location = MainLog.Instance.CmdPrompt("Http Listener Port", "9000");
+                    configData.SetAttribute("HttpListenerPort", location);
+                    this.HttpListenerPort = Convert.ToInt32(location);
+                }
+                else
+                {
+                    this.HttpListenerPort = Convert.ToInt32(attri);
+                }
+
+                attri = "";
+                attri = configData.GetAttribute("RemotingListenerPort");
+                if (attri == "")
+                {
+                    string location = MainLog.Instance.CmdPrompt("Remoting Listener Port", "8895");
+                    configData.SetAttribute("RemotingListenerPort", location);
+                    this.RemotingListenerPort = Convert.ToInt32(location);
+                }
+                else
+                {
+                    this.RemotingListenerPort = Convert.ToInt32(attri);
+                }
+
+                if (sandboxMode)
+                {
+                    // default home location X
+                    attri = "";
+                    attri = configData.GetAttribute("DefaultLocationX");
+                    if (attri == "")
+                    {
+                        string location = MainLog.Instance.CmdPrompt("Default Home Location X", "1000");
+                        configData.SetAttribute("DefaultLocationX", location);
+                        this.DefaultHomeLocX = (uint)Convert.ToUInt32(location);
+                    }
+                    else
+                    {
+                        this.DefaultHomeLocX = (uint)Convert.ToUInt32(attri);
+                    }
+
+                    // default home location Y
+                    attri = "";
+                    attri = configData.GetAttribute("DefaultLocationY");
+                    if (attri == "")
+                    {
+                        string location = MainLog.Instance.CmdPrompt("Default Home Location Y", "1000");
+                        configData.SetAttribute("DefaultLocationY", location);
+                        this.DefaultHomeLocY = (uint)Convert.ToUInt32(location);
+                    }
+                    else
+                    {
+                        this.DefaultHomeLocY = (uint)Convert.ToUInt32(attri);
+                    }
+                }
+                if (!isSandbox)
+                {
+                    //Grid Server 
+                    attri = "";
+                    attri = configData.GetAttribute("GridServerURL");
+                    if (attri == "")
+                    {
+                        this.GridURL = MainLog.Instance.CmdPrompt("Grid server URL", "http://127.0.0.1:8001/");
+                        configData.SetAttribute("GridServerURL", this.GridURL);
+                    }
+                    else
+                    {
+                        this.GridURL = attri;
+                    }
+
+                    //Grid Send Key
+                    attri = "";
+                    attri = configData.GetAttribute("GridSendKey");
+                    if (attri == "")
+                    {
+                        this.GridSendKey = MainLog.Instance.CmdPrompt("Key to send to grid server", "null");
+                        configData.SetAttribute("GridSendKey", this.GridSendKey);
+                    }
+                    else
+                    {
+                        this.GridSendKey = attri;
+                    }
+
+                    //Grid Receive Key
+                    attri = "";
+                    attri = configData.GetAttribute("GridRecvKey");
+                    if (attri == "")
+                    {
+                        this.GridRecvKey = MainLog.Instance.CmdPrompt("Key to expect from grid server", "null");
+                        configData.SetAttribute("GridRecvKey", this.GridRecvKey);
+                    }
+                    else
+                    {
+                        this.GridRecvKey = attri;
+                    }
+
+                    //Grid Server 
+                    attri = "";
+                    attri = configData.GetAttribute("UserServerURL");
+                    if (attri == "")
+                    {
+                        this.UserURL= MainLog.Instance.CmdPrompt("User server URL", "http://127.0.0.1:8002/");
+                        configData.SetAttribute("UserServerURL", this.UserURL);
+                    }
+                    else
+                    {
+                        this.UserURL = attri;
+                    }
+
+                    //Grid Send Key
+                    attri = "";
+                    attri = configData.GetAttribute("UserSendKey");
+                    if (attri == "")
+                    {
+                        this.UserSendKey = MainLog.Instance.CmdPrompt("Key to send to user server", "null");
+                        configData.SetAttribute("UserSendKey", this.UserSendKey);
+                    }
+                    else
+                    {
+                        this.UserSendKey = attri;
+                    }
+
+                    //Grid Receive Key
+                    attri = "";
+                    attri = configData.GetAttribute("UserRecvKey");
+                    if (attri == "")
+                    {
+                        this.UserRecvKey = MainLog.Instance.CmdPrompt("Key to expect from user server", "null");
+                        configData.SetAttribute("UserRecvKey", this.UserRecvKey);
+                    }
+                    else
+                    {
+                        this.UserRecvKey = attri;
+                    }
+
+                    attri = "";
+                    attri = configData.GetAttribute("AssetServerURL");
+                    if (attri == "")
+                    {
+                        this.AssetURL = MainLog.Instance.CmdPrompt("Asset server URL", "http://127.0.0.1:8003/");
+                        configData.SetAttribute("AssetServerURL", this.GridURL);
+                    }
+                    else
+                    {
+                        this.AssetURL = attri;
+                    }
+
+                }
+                configData.Commit();
+            }
+            catch (Exception e)
+            {
+                MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
+                MainLog.Instance.Warn(e.ToString());
+            }
+        }
+    }
+}

+ 120 - 120
OpenSim/Framework/General/Types/ParcelData.cs

@@ -1,120 +1,120 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using libsecondlife;
-
-namespace OpenSim.Framework.Types
-{
-    
-        public class ParcelData
-        {
-            public byte[] parcelBitmapByteArray = new byte[512];
-            public string parcelName = "Your Parcel";
-            public string parcelDesc = "";
-            public LLUUID ownerID = new LLUUID();
-            public bool isGroupOwned = false;
-            public LLVector3 AABBMin = new LLVector3();
-            public LLVector3 AABBMax = new LLVector3();
-            public int area = 0;
-            public uint auctionID = 0; //Unemplemented. If set to 0, not being auctioned
-            public LLUUID authBuyerID = new LLUUID(); //Unemplemented. Authorized Buyer's UUID
-            public Parcel.ParcelCategory category = new Parcel.ParcelCategory(); //Unemplemented. Parcel's chosen category
-            public int claimDate = 0; //Unemplemented
-            public int claimPrice = 0; //Unemplemented
-            public LLUUID groupID = new LLUUID(); //Unemplemented
-            public int groupPrims = 0;
-            public int otherPrims = 0;
-            public int ownerPrims = 0;
-            public int selectedPrims = 0;
-            public int simwidePrims = 0;
-            public int simwideArea = 0;
-            public int salePrice = 0; //Unemeplemented. Parcels price.
-            public Parcel.ParcelStatus parcelStatus = Parcel.ParcelStatus.Leased;
-            public uint parcelFlags = (uint)Parcel.ParcelFlags.AllowFly | (uint)Parcel.ParcelFlags.AllowLandmark | (uint)Parcel.ParcelFlags.AllowAllObjectEntry | (uint)Parcel.ParcelFlags.AllowDeedToGroup | (uint)Parcel.ParcelFlags.AllowTerraform | (uint)Parcel.ParcelFlags.CreateObjects | (uint)Parcel.ParcelFlags.AllowOtherScripts;
-            public byte landingType = 0;
-            public byte mediaAutoScale = 0;
-            public LLUUID mediaID = LLUUID.Zero;
-            public int localID = 0;
-            public LLUUID globalID = new LLUUID();
-
-            public string mediaURL = "";
-            public string musicURL = "";
-            public float passHours = 0;
-            public int passPrice = 0;
-            public LLUUID snapshotID = LLUUID.Zero;
-            public LLVector3 userLocation = new LLVector3();
-            public LLVector3 userLookAt = new LLVector3();
-
-            public ParcelData()
-            {
-                globalID = LLUUID.Random();
-            }
-
-            public ParcelData Copy()
-            {
-                ParcelData parcelData = new ParcelData();
-
-                parcelData.AABBMax = this.AABBMax;
-                parcelData.AABBMin = this.AABBMin;
-                parcelData.area = this.area;
-                parcelData.auctionID = this.auctionID;
-                parcelData.authBuyerID = this.authBuyerID;
-                parcelData.category = this.category;
-                parcelData.claimDate = this.claimDate;
-                parcelData.claimPrice = this.claimPrice;
-                parcelData.globalID = this.globalID;
-                parcelData.groupID = this.groupID;
-                parcelData.groupPrims = this.groupPrims;
-                parcelData.otherPrims = this.otherPrims;
-                parcelData.ownerPrims = this.ownerPrims;
-                parcelData.selectedPrims = this.selectedPrims;
-                parcelData.isGroupOwned = this.isGroupOwned;
-                parcelData.localID = this.localID;
-                parcelData.landingType = this.landingType;
-                parcelData.mediaAutoScale = this.mediaAutoScale;
-                parcelData.mediaID = this.mediaID;
-                parcelData.mediaURL = this.mediaURL;
-                parcelData.musicURL = this.musicURL;
-                parcelData.ownerID = this.ownerID;
-                parcelData.parcelBitmapByteArray = (byte[])this.parcelBitmapByteArray.Clone();
-                parcelData.parcelDesc = this.parcelDesc;
-                parcelData.parcelFlags = this.parcelFlags;
-                parcelData.parcelName = this.parcelName;
-                parcelData.parcelStatus = this.parcelStatus;
-                parcelData.passHours = this.passHours;
-                parcelData.passPrice = this.passPrice;
-                parcelData.salePrice = this.salePrice;
-                parcelData.snapshotID = this.snapshotID;
-                parcelData.userLocation = this.userLocation;
-                parcelData.userLookAt = this.userLookAt;
-
-                return parcelData;
-           
-            }
-        }
-    
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using libsecondlife;
+
+namespace OpenSim.Framework.Types
+{
+    
+        public class ParcelData
+        {
+            public byte[] parcelBitmapByteArray = new byte[512];
+            public string parcelName = "Your Parcel";
+            public string parcelDesc = "";
+            public LLUUID ownerID = new LLUUID();
+            public bool isGroupOwned = false;
+            public LLVector3 AABBMin = new LLVector3();
+            public LLVector3 AABBMax = new LLVector3();
+            public int area = 0;
+            public uint auctionID = 0; //Unemplemented. If set to 0, not being auctioned
+            public LLUUID authBuyerID = new LLUUID(); //Unemplemented. Authorized Buyer's UUID
+            public Parcel.ParcelCategory category = new Parcel.ParcelCategory(); //Unemplemented. Parcel's chosen category
+            public int claimDate = 0; //Unemplemented
+            public int claimPrice = 0; //Unemplemented
+            public LLUUID groupID = new LLUUID(); //Unemplemented
+            public int groupPrims = 0;
+            public int otherPrims = 0;
+            public int ownerPrims = 0;
+            public int selectedPrims = 0;
+            public int simwidePrims = 0;
+            public int simwideArea = 0;
+            public int salePrice = 0; //Unemeplemented. Parcels price.
+            public Parcel.ParcelStatus parcelStatus = Parcel.ParcelStatus.Leased;
+            public uint parcelFlags = (uint)Parcel.ParcelFlags.AllowFly | (uint)Parcel.ParcelFlags.AllowLandmark | (uint)Parcel.ParcelFlags.AllowAllObjectEntry | (uint)Parcel.ParcelFlags.AllowDeedToGroup | (uint)Parcel.ParcelFlags.AllowTerraform | (uint)Parcel.ParcelFlags.CreateObjects | (uint)Parcel.ParcelFlags.AllowOtherScripts;
+            public byte landingType = 0;
+            public byte mediaAutoScale = 0;
+            public LLUUID mediaID = LLUUID.Zero;
+            public int localID = 0;
+            public LLUUID globalID = new LLUUID();
+
+            public string mediaURL = "";
+            public string musicURL = "";
+            public float passHours = 0;
+            public int passPrice = 0;
+            public LLUUID snapshotID = LLUUID.Zero;
+            public LLVector3 userLocation = new LLVector3();
+            public LLVector3 userLookAt = new LLVector3();
+
+            public ParcelData()
+            {
+                globalID = LLUUID.Random();
+            }
+
+            public ParcelData Copy()
+            {
+                ParcelData parcelData = new ParcelData();
+
+                parcelData.AABBMax = this.AABBMax;
+                parcelData.AABBMin = this.AABBMin;
+                parcelData.area = this.area;
+                parcelData.auctionID = this.auctionID;
+                parcelData.authBuyerID = this.authBuyerID;
+                parcelData.category = this.category;
+                parcelData.claimDate = this.claimDate;
+                parcelData.claimPrice = this.claimPrice;
+                parcelData.globalID = this.globalID;
+                parcelData.groupID = this.groupID;
+                parcelData.groupPrims = this.groupPrims;
+                parcelData.otherPrims = this.otherPrims;
+                parcelData.ownerPrims = this.ownerPrims;
+                parcelData.selectedPrims = this.selectedPrims;
+                parcelData.isGroupOwned = this.isGroupOwned;
+                parcelData.localID = this.localID;
+                parcelData.landingType = this.landingType;
+                parcelData.mediaAutoScale = this.mediaAutoScale;
+                parcelData.mediaID = this.mediaID;
+                parcelData.mediaURL = this.mediaURL;
+                parcelData.musicURL = this.musicURL;
+                parcelData.ownerID = this.ownerID;
+                parcelData.parcelBitmapByteArray = (byte[])this.parcelBitmapByteArray.Clone();
+                parcelData.parcelDesc = this.parcelDesc;
+                parcelData.parcelFlags = this.parcelFlags;
+                parcelData.parcelName = this.parcelName;
+                parcelData.parcelStatus = this.parcelStatus;
+                parcelData.passHours = this.passHours;
+                parcelData.passPrice = this.passPrice;
+                parcelData.salePrice = this.salePrice;
+                parcelData.snapshotID = this.snapshotID;
+                parcelData.userLocation = this.userLocation;
+                parcelData.userLookAt = this.userLookAt;
+
+                return parcelData;
+           
+            }
+        }
+    
+}

+ 228 - 228
OpenSim/Framework/General/Types/PrimData.cs

@@ -1,228 +1,228 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using libsecondlife;
-
-namespace OpenSim.Framework.Types
-{
-    public class PrimData
-    {
-        private const uint FULL_MASK_PERMISSIONS = 2147483647;
-
-        public LLUUID OwnerID;
-        public byte PCode;
-        public ushort PathBegin;
-        public ushort PathEnd;
-        public byte PathScaleX;
-        public byte PathScaleY;
-        public byte PathShearX;
-        public byte PathShearY;
-        public sbyte PathSkew;
-        public ushort ProfileBegin;
-        public ushort ProfileEnd;
-        public LLVector3 Scale;
-        public byte PathCurve;
-        public byte ProfileCurve;
-        public uint ParentID = 0;
-        public ushort ProfileHollow;
-        public sbyte PathRadiusOffset;
-        public byte PathRevolutions;
-        public sbyte PathTaperX;
-        public sbyte PathTaperY;
-        public sbyte PathTwist;
-        public sbyte PathTwistBegin;
-        public byte[] TextureEntry; // a LL textureEntry in byte[] format
-
-        public Int32 CreationDate;
-        public uint OwnerMask = FULL_MASK_PERMISSIONS;
-        public uint NextOwnerMask = FULL_MASK_PERMISSIONS;
-        public uint GroupMask = FULL_MASK_PERMISSIONS;
-        public uint EveryoneMask = FULL_MASK_PERMISSIONS;
-        public uint BaseMask = FULL_MASK_PERMISSIONS;
-
-        //following only used during prim storage
-        public LLVector3 Position;
-        public LLQuaternion Rotation = new LLQuaternion(0, 1, 0, 0);
-        public uint LocalID;
-        public LLUUID FullID;
-
-        public PrimData()
-        {
-
-        }
-
-        public PrimData(byte[] data)
-        {
-            int i = 0;
-
-            this.OwnerID = new LLUUID(data, i); i += 16;
-            this.PCode = data[i++];
-            this.PathBegin = (ushort)(data[i++] + (data[i++] << 8));
-            this.PathEnd = (ushort)(data[i++] + (data[i++] << 8));
-            this.PathScaleX = data[i++];
-            this.PathScaleY = data[i++];
-            this.PathShearX = data[i++];
-            this.PathShearY = data[i++];
-            this.PathSkew = (sbyte)data[i++];
-            this.ProfileBegin = (ushort)(data[i++] + (data[i++] << 8));
-            this.ProfileEnd = (ushort)(data[i++] + (data[i++] << 8));
-            this.Scale = new LLVector3(data, i); i += 12;
-            this.PathCurve = data[i++];
-            this.ProfileCurve = data[i++];
-            this.ParentID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
-            this.ProfileHollow = (ushort)(data[i++] + (data[i++] << 8));
-            this.PathRadiusOffset = (sbyte)data[i++];
-            this.PathRevolutions = data[i++];
-            this.PathTaperX = (sbyte)data[i++];
-            this.PathTaperY = (sbyte)data[i++];
-            this.PathTwist = (sbyte)data[i++];
-            this.PathTwistBegin = (sbyte)data[i++];
-            ushort length = (ushort)(data[i++] + (data[i++] << 8));
-            this.TextureEntry = new byte[length];
-            Array.Copy(data, i, TextureEntry, 0, length); i += length;
-            this.CreationDate = (Int32)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
-            this.OwnerMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
-            this.NextOwnerMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
-            this.GroupMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
-            this.EveryoneMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
-            this.BaseMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
-            this.Position = new LLVector3(data, i); i += 12;
-            this.Rotation = new LLQuaternion(data, i, true); i += 12;
-            this.LocalID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
-            this.FullID = new LLUUID(data, i); i += 16;
-
-        }
-
-        public byte[] ToBytes()
-        {
-            int i = 0;
-            byte[] bytes = new byte[126 + TextureEntry.Length];
-            Array.Copy(OwnerID.GetBytes(), 0, bytes, i, 16); i += 16;
-            bytes[i++] = this.PCode;
-            bytes[i++] = (byte)(this.PathBegin % 256);
-            bytes[i++] = (byte)((this.PathBegin >> 8) % 256);
-            bytes[i++] = (byte)(this.PathEnd % 256);
-            bytes[i++] = (byte)((this.PathEnd >> 8) % 256);
-            bytes[i++] = this.PathScaleX;
-            bytes[i++] = this.PathScaleY;
-            bytes[i++] = this.PathShearX;
-            bytes[i++] = this.PathShearY;
-            bytes[i++] = (byte)this.PathSkew;
-            bytes[i++] = (byte)(this.ProfileBegin % 256);
-            bytes[i++] = (byte)((this.ProfileBegin >> 8) % 256);
-            bytes[i++] = (byte)(this.ProfileEnd % 256);
-            bytes[i++] = (byte)((this.ProfileEnd >> 8) % 256);
-            Array.Copy(Scale.GetBytes(), 0, bytes, i, 12); i += 12;
-            bytes[i++] = this.PathCurve;
-            bytes[i++] = this.ProfileCurve;
-            bytes[i++] = (byte)(ParentID % 256);
-            bytes[i++] = (byte)((ParentID >> 8) % 256);
-            bytes[i++] = (byte)((ParentID >> 16) % 256);
-            bytes[i++] = (byte)((ParentID >> 24) % 256);
-            bytes[i++] = (byte)(this.ProfileHollow % 256);
-            bytes[i++] = (byte)((this.ProfileHollow >> 8) % 256);
-            bytes[i++] = ((byte)this.PathRadiusOffset);
-            bytes[i++] = this.PathRevolutions;
-            bytes[i++] = ((byte)this.PathTaperX);
-            bytes[i++] = ((byte)this.PathTaperY);
-            bytes[i++] = ((byte)this.PathTwist);
-            bytes[i++] = ((byte)this.PathTwistBegin);
-            bytes[i++] = (byte)(TextureEntry.Length % 256);
-            bytes[i++] = (byte)((TextureEntry.Length >> 8) % 256);
-            Array.Copy(TextureEntry, 0, bytes, i, TextureEntry.Length); i += TextureEntry.Length;
-            bytes[i++] = (byte)(this.CreationDate % 256);
-            bytes[i++] = (byte)((this.CreationDate >> 8) % 256);
-            bytes[i++] = (byte)((this.CreationDate >> 16) % 256);
-            bytes[i++] = (byte)((this.CreationDate >> 24) % 256);
-            bytes[i++] = (byte)(this.OwnerMask % 256);
-            bytes[i++] = (byte)((this.OwnerMask >> 8) % 256);
-            bytes[i++] = (byte)((this.OwnerMask >> 16) % 256);
-            bytes[i++] = (byte)((this.OwnerMask >> 24) % 256);
-            bytes[i++] = (byte)(this.NextOwnerMask % 256);
-            bytes[i++] = (byte)((this.NextOwnerMask >> 8) % 256);
-            bytes[i++] = (byte)((this.NextOwnerMask >> 16) % 256);
-            bytes[i++] = (byte)((this.NextOwnerMask >> 24) % 256);
-            bytes[i++] = (byte)(this.GroupMask % 256);
-            bytes[i++] = (byte)((this.GroupMask >> 8) % 256);
-            bytes[i++] = (byte)((this.GroupMask >> 16) % 256);
-            bytes[i++] = (byte)((this.GroupMask >> 24) % 256);
-            bytes[i++] = (byte)(this.EveryoneMask % 256);
-            bytes[i++] = (byte)((this.EveryoneMask >> 8) % 256);
-            bytes[i++] = (byte)((this.EveryoneMask >> 16) % 256);
-            bytes[i++] = (byte)((this.EveryoneMask >> 24) % 256);
-            bytes[i++] = (byte)(this.BaseMask % 256);
-            bytes[i++] = (byte)((this.BaseMask >> 8) % 256);
-            bytes[i++] = (byte)((this.BaseMask >> 16) % 256);
-            bytes[i++] = (byte)((this.BaseMask >> 24) % 256);
-            Array.Copy(this.Position.GetBytes(), 0, bytes, i, 12); i += 12;
-            if (this.Rotation == new LLQuaternion(0, 0, 0, 0))
-            {
-                this.Rotation = new LLQuaternion(0, 1, 0, 0);
-            }
-            Array.Copy(this.Rotation.GetBytes(), 0, bytes, i, 12); i += 12;
-            bytes[i++] = (byte)(this.LocalID % 256);
-            bytes[i++] = (byte)((this.LocalID >> 8) % 256);
-            bytes[i++] = (byte)((this.LocalID >> 16) % 256);
-            bytes[i++] = (byte)((this.LocalID >> 24) % 256);
-            Array.Copy(FullID.GetBytes(), 0, bytes, i, 16); i += 16;
-
-            return bytes;
-        }
-
-        public static PrimData DefaultCube()
-        {
-            PrimData primData = new PrimData();
-            primData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
-            primData.FullID = LLUUID.Random();
-            primData.Scale = new LLVector3(0.5f, 0.5f, 0.5f);
-            primData.Rotation = new LLQuaternion(0, 0, 0, 1);
-            primData.PCode = 9;
-            primData.ParentID = 0;
-            primData.PathBegin = 0;
-            primData.PathEnd = 0;
-            primData.PathScaleX = 0;
-            primData.PathScaleY = 0;
-            primData.PathShearX = 0;
-            primData.PathShearY = 0;
-            primData.PathSkew = 0;
-            primData.ProfileBegin = 0;
-            primData.ProfileEnd = 0;
-            primData.PathCurve = 16;
-            primData.ProfileCurve = 1;
-            primData.ProfileHollow = 0;
-            primData.PathRadiusOffset = 0;
-            primData.PathRevolutions = 0;
-            primData.PathTaperX = 0;
-            primData.PathTaperY = 0;
-            primData.PathTwist = 0;
-            primData.PathTwistBegin = 0;
-
-            return primData;
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using libsecondlife;
+
+namespace OpenSim.Framework.Types
+{
+    public class PrimData
+    {
+        private const uint FULL_MASK_PERMISSIONS = 2147483647;
+
+        public LLUUID OwnerID;
+        public byte PCode;
+        public ushort PathBegin;
+        public ushort PathEnd;
+        public byte PathScaleX;
+        public byte PathScaleY;
+        public byte PathShearX;
+        public byte PathShearY;
+        public sbyte PathSkew;
+        public ushort ProfileBegin;
+        public ushort ProfileEnd;
+        public LLVector3 Scale;
+        public byte PathCurve;
+        public byte ProfileCurve;
+        public uint ParentID = 0;
+        public ushort ProfileHollow;
+        public sbyte PathRadiusOffset;
+        public byte PathRevolutions;
+        public sbyte PathTaperX;
+        public sbyte PathTaperY;
+        public sbyte PathTwist;
+        public sbyte PathTwistBegin;
+        public byte[] TextureEntry; // a LL textureEntry in byte[] format
+
+        public Int32 CreationDate;
+        public uint OwnerMask = FULL_MASK_PERMISSIONS;
+        public uint NextOwnerMask = FULL_MASK_PERMISSIONS;
+        public uint GroupMask = FULL_MASK_PERMISSIONS;
+        public uint EveryoneMask = FULL_MASK_PERMISSIONS;
+        public uint BaseMask = FULL_MASK_PERMISSIONS;
+
+        //following only used during prim storage
+        public LLVector3 Position;
+        public LLQuaternion Rotation = new LLQuaternion(0, 1, 0, 0);
+        public uint LocalID;
+        public LLUUID FullID;
+
+        public PrimData()
+        {
+
+        }
+
+        public PrimData(byte[] data)
+        {
+            int i = 0;
+
+            this.OwnerID = new LLUUID(data, i); i += 16;
+            this.PCode = data[i++];
+            this.PathBegin = (ushort)(data[i++] + (data[i++] << 8));
+            this.PathEnd = (ushort)(data[i++] + (data[i++] << 8));
+            this.PathScaleX = data[i++];
+            this.PathScaleY = data[i++];
+            this.PathShearX = data[i++];
+            this.PathShearY = data[i++];
+            this.PathSkew = (sbyte)data[i++];
+            this.ProfileBegin = (ushort)(data[i++] + (data[i++] << 8));
+            this.ProfileEnd = (ushort)(data[i++] + (data[i++] << 8));
+            this.Scale = new LLVector3(data, i); i += 12;
+            this.PathCurve = data[i++];
+            this.ProfileCurve = data[i++];
+            this.ParentID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
+            this.ProfileHollow = (ushort)(data[i++] + (data[i++] << 8));
+            this.PathRadiusOffset = (sbyte)data[i++];
+            this.PathRevolutions = data[i++];
+            this.PathTaperX = (sbyte)data[i++];
+            this.PathTaperY = (sbyte)data[i++];
+            this.PathTwist = (sbyte)data[i++];
+            this.PathTwistBegin = (sbyte)data[i++];
+            ushort length = (ushort)(data[i++] + (data[i++] << 8));
+            this.TextureEntry = new byte[length];
+            Array.Copy(data, i, TextureEntry, 0, length); i += length;
+            this.CreationDate = (Int32)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
+            this.OwnerMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
+            this.NextOwnerMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
+            this.GroupMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
+            this.EveryoneMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
+            this.BaseMask = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
+            this.Position = new LLVector3(data, i); i += 12;
+            this.Rotation = new LLQuaternion(data, i, true); i += 12;
+            this.LocalID = (uint)(data[i++] + (data[i++] << 8) + (data[i++] << 16) + (data[i++] << 24));
+            this.FullID = new LLUUID(data, i); i += 16;
+
+        }
+
+        public byte[] ToBytes()
+        {
+            int i = 0;
+            byte[] bytes = new byte[126 + TextureEntry.Length];
+            Array.Copy(OwnerID.GetBytes(), 0, bytes, i, 16); i += 16;
+            bytes[i++] = this.PCode;
+            bytes[i++] = (byte)(this.PathBegin % 256);
+            bytes[i++] = (byte)((this.PathBegin >> 8) % 256);
+            bytes[i++] = (byte)(this.PathEnd % 256);
+            bytes[i++] = (byte)((this.PathEnd >> 8) % 256);
+            bytes[i++] = this.PathScaleX;
+            bytes[i++] = this.PathScaleY;
+            bytes[i++] = this.PathShearX;
+            bytes[i++] = this.PathShearY;
+            bytes[i++] = (byte)this.PathSkew;
+            bytes[i++] = (byte)(this.ProfileBegin % 256);
+            bytes[i++] = (byte)((this.ProfileBegin >> 8) % 256);
+            bytes[i++] = (byte)(this.ProfileEnd % 256);
+            bytes[i++] = (byte)((this.ProfileEnd >> 8) % 256);
+            Array.Copy(Scale.GetBytes(), 0, bytes, i, 12); i += 12;
+            bytes[i++] = this.PathCurve;
+            bytes[i++] = this.ProfileCurve;
+            bytes[i++] = (byte)(ParentID % 256);
+            bytes[i++] = (byte)((ParentID >> 8) % 256);
+            bytes[i++] = (byte)((ParentID >> 16) % 256);
+            bytes[i++] = (byte)((ParentID >> 24) % 256);
+            bytes[i++] = (byte)(this.ProfileHollow % 256);
+            bytes[i++] = (byte)((this.ProfileHollow >> 8) % 256);
+            bytes[i++] = ((byte)this.PathRadiusOffset);
+            bytes[i++] = this.PathRevolutions;
+            bytes[i++] = ((byte)this.PathTaperX);
+            bytes[i++] = ((byte)this.PathTaperY);
+            bytes[i++] = ((byte)this.PathTwist);
+            bytes[i++] = ((byte)this.PathTwistBegin);
+            bytes[i++] = (byte)(TextureEntry.Length % 256);
+            bytes[i++] = (byte)((TextureEntry.Length >> 8) % 256);
+            Array.Copy(TextureEntry, 0, bytes, i, TextureEntry.Length); i += TextureEntry.Length;
+            bytes[i++] = (byte)(this.CreationDate % 256);
+            bytes[i++] = (byte)((this.CreationDate >> 8) % 256);
+            bytes[i++] = (byte)((this.CreationDate >> 16) % 256);
+            bytes[i++] = (byte)((this.CreationDate >> 24) % 256);
+            bytes[i++] = (byte)(this.OwnerMask % 256);
+            bytes[i++] = (byte)((this.OwnerMask >> 8) % 256);
+            bytes[i++] = (byte)((this.OwnerMask >> 16) % 256);
+            bytes[i++] = (byte)((this.OwnerMask >> 24) % 256);
+            bytes[i++] = (byte)(this.NextOwnerMask % 256);
+            bytes[i++] = (byte)((this.NextOwnerMask >> 8) % 256);
+            bytes[i++] = (byte)((this.NextOwnerMask >> 16) % 256);
+            bytes[i++] = (byte)((this.NextOwnerMask >> 24) % 256);
+            bytes[i++] = (byte)(this.GroupMask % 256);
+            bytes[i++] = (byte)((this.GroupMask >> 8) % 256);
+            bytes[i++] = (byte)((this.GroupMask >> 16) % 256);
+            bytes[i++] = (byte)((this.GroupMask >> 24) % 256);
+            bytes[i++] = (byte)(this.EveryoneMask % 256);
+            bytes[i++] = (byte)((this.EveryoneMask >> 8) % 256);
+            bytes[i++] = (byte)((this.EveryoneMask >> 16) % 256);
+            bytes[i++] = (byte)((this.EveryoneMask >> 24) % 256);
+            bytes[i++] = (byte)(this.BaseMask % 256);
+            bytes[i++] = (byte)((this.BaseMask >> 8) % 256);
+            bytes[i++] = (byte)((this.BaseMask >> 16) % 256);
+            bytes[i++] = (byte)((this.BaseMask >> 24) % 256);
+            Array.Copy(this.Position.GetBytes(), 0, bytes, i, 12); i += 12;
+            if (this.Rotation == new LLQuaternion(0, 0, 0, 0))
+            {
+                this.Rotation = new LLQuaternion(0, 1, 0, 0);
+            }
+            Array.Copy(this.Rotation.GetBytes(), 0, bytes, i, 12); i += 12;
+            bytes[i++] = (byte)(this.LocalID % 256);
+            bytes[i++] = (byte)((this.LocalID >> 8) % 256);
+            bytes[i++] = (byte)((this.LocalID >> 16) % 256);
+            bytes[i++] = (byte)((this.LocalID >> 24) % 256);
+            Array.Copy(FullID.GetBytes(), 0, bytes, i, 16); i += 16;
+
+            return bytes;
+        }
+
+        public static PrimData DefaultCube()
+        {
+            PrimData primData = new PrimData();
+            primData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
+            primData.FullID = LLUUID.Random();
+            primData.Scale = new LLVector3(0.5f, 0.5f, 0.5f);
+            primData.Rotation = new LLQuaternion(0, 0, 0, 1);
+            primData.PCode = 9;
+            primData.ParentID = 0;
+            primData.PathBegin = 0;
+            primData.PathEnd = 0;
+            primData.PathScaleX = 0;
+            primData.PathScaleY = 0;
+            primData.PathShearX = 0;
+            primData.PathShearY = 0;
+            primData.PathSkew = 0;
+            primData.ProfileBegin = 0;
+            primData.ProfileEnd = 0;
+            primData.PathCurve = 16;
+            primData.ProfileCurve = 1;
+            primData.ProfileHollow = 0;
+            primData.PathRadiusOffset = 0;
+            primData.PathRevolutions = 0;
+            primData.PathTaperX = 0;
+            primData.PathTaperY = 0;
+            primData.PathTwist = 0;
+            primData.PathTwistBegin = 0;
+
+            return primData;
+        }
+    }
+}

+ 109 - 109
OpenSim/Framework/General/Types/PrimitiveBaseShape.cs

@@ -1,109 +1,109 @@
-using libsecondlife;
-using libsecondlife.Packets;
-
-namespace OpenSim.Framework.Types
-{
-    public enum ShapeType
-    {
-        Box,
-        Sphere,
-        Ring,
-        Tube,
-        Torus,
-        Prism,
-        Scuplted,
-        Cylinder,
-        Foliage,
-        Unknown
-    }
-
-    public class PrimitiveBaseShape
-    {
-        private ShapeType type = ShapeType.Unknown;
-
-        public byte PCode;
-        public ushort PathBegin;
-        public ushort PathEnd;
-        public byte PathScaleX;
-        public byte PathScaleY;
-        public byte PathShearX;
-        public byte PathShearY;
-        public sbyte PathSkew;
-        public ushort ProfileBegin;
-        public ushort ProfileEnd;
-        public LLVector3 Scale;
-        public byte PathCurve;
-        public byte ProfileCurve;
-        public ushort ProfileHollow;
-        public sbyte PathRadiusOffset;
-        public byte PathRevolutions;
-        public sbyte PathTaperX;
-        public sbyte PathTaperY;
-        public sbyte PathTwist;
-        public sbyte PathTwistBegin;
-        public byte[] TextureEntry; // a LL textureEntry in byte[] format
-
-        public ShapeType PrimType
-        {
-            get
-            {
-                return this.type;
-            }
-        }
-
-        public LLVector3 PrimScale
-        {
-            get
-            {
-                return this.Scale;
-            }
-        }
-
-        public PrimitiveBaseShape()
-        {
-
-        }
-
-        //void returns need to change of course
-        public void GetMesh()
-        {
-
-        }
-
-        public PrimitiveBaseShape Copy()
-        {
-            return (PrimitiveBaseShape) this.MemberwiseClone();
-        }
-
-        public static PrimitiveBaseShape DefaultBox()
-        {
-            PrimitiveBaseShape primShape = new PrimitiveBaseShape();
-
-            primShape.type = ShapeType.Box;
-            primShape.Scale = new LLVector3(0.5f, 0.5f, 0.5f);
-            primShape.PCode = 9;
-            primShape.PathBegin = 0;
-            primShape.PathEnd = 0;
-            primShape.PathScaleX = 0;
-            primShape.PathScaleY = 0;
-            primShape.PathShearX = 0;
-            primShape.PathShearY = 0;
-            primShape.PathSkew = 0;
-            primShape.ProfileBegin = 0;
-            primShape.ProfileEnd = 0;
-            primShape.PathCurve = 16;
-            primShape.ProfileCurve = 1;
-            primShape.ProfileHollow = 0;
-            primShape.PathRadiusOffset = 0;
-            primShape.PathRevolutions = 0;
-            primShape.PathTaperX = 0;
-            primShape.PathTaperY = 0;
-            primShape.PathTwist = 0;
-            primShape.PathTwistBegin = 0;
-            LLObject.TextureEntry ntex = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-9999-000000000005"));
-            primShape.TextureEntry = ntex.ToBytes();
-
-            return primShape;
-        }
-    }
-}
+using libsecondlife;
+using libsecondlife.Packets;
+
+namespace OpenSim.Framework.Types
+{
+    public enum ShapeType
+    {
+        Box,
+        Sphere,
+        Ring,
+        Tube,
+        Torus,
+        Prism,
+        Scuplted,
+        Cylinder,
+        Foliage,
+        Unknown
+    }
+
+    public class PrimitiveBaseShape
+    {
+        private ShapeType type = ShapeType.Unknown;
+
+        public byte PCode;
+        public ushort PathBegin;
+        public ushort PathEnd;
+        public byte PathScaleX;
+        public byte PathScaleY;
+        public byte PathShearX;
+        public byte PathShearY;
+        public sbyte PathSkew;
+        public ushort ProfileBegin;
+        public ushort ProfileEnd;
+        public LLVector3 Scale;
+        public byte PathCurve;
+        public byte ProfileCurve;
+        public ushort ProfileHollow;
+        public sbyte PathRadiusOffset;
+        public byte PathRevolutions;
+        public sbyte PathTaperX;
+        public sbyte PathTaperY;
+        public sbyte PathTwist;
+        public sbyte PathTwistBegin;
+        public byte[] TextureEntry; // a LL textureEntry in byte[] format
+
+        public ShapeType PrimType
+        {
+            get
+            {
+                return this.type;
+            }
+        }
+
+        public LLVector3 PrimScale
+        {
+            get
+            {
+                return this.Scale;
+            }
+        }
+
+        public PrimitiveBaseShape()
+        {
+
+        }
+
+        //void returns need to change of course
+        public void GetMesh()
+        {
+
+        }
+
+        public PrimitiveBaseShape Copy()
+        {
+            return (PrimitiveBaseShape) this.MemberwiseClone();
+        }
+
+        public static PrimitiveBaseShape DefaultBox()
+        {
+            PrimitiveBaseShape primShape = new PrimitiveBaseShape();
+
+            primShape.type = ShapeType.Box;
+            primShape.Scale = new LLVector3(0.5f, 0.5f, 0.5f);
+            primShape.PCode = 9;
+            primShape.PathBegin = 0;
+            primShape.PathEnd = 0;
+            primShape.PathScaleX = 0;
+            primShape.PathScaleY = 0;
+            primShape.PathShearX = 0;
+            primShape.PathShearY = 0;
+            primShape.PathSkew = 0;
+            primShape.ProfileBegin = 0;
+            primShape.ProfileEnd = 0;
+            primShape.PathCurve = 16;
+            primShape.ProfileCurve = 1;
+            primShape.ProfileHollow = 0;
+            primShape.PathRadiusOffset = 0;
+            primShape.PathRevolutions = 0;
+            primShape.PathTaperX = 0;
+            primShape.PathTaperY = 0;
+            primShape.PathTwist = 0;
+            primShape.PathTwistBegin = 0;
+            LLObject.TextureEntry ntex = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-9999-000000000005"));
+            primShape.TextureEntry = ntex.ToBytes();
+
+            return primShape;
+        }
+    }
+}

+ 121 - 121
OpenSim/Framework/General/Types/RegionHandle.cs

@@ -1,121 +1,121 @@
-using System;
-using System.Net;
-
-namespace OpenSim.Framework.Types
-{
-    /// <summary>
-    /// A class for manipulating RegionHandle coordinates
-    /// </summary>
-    class RegionHandle
-    {
-        private UInt64 handle;
-
-        /// <summary>
-        /// Initialises a new grid-aware RegionHandle
-        /// </summary>
-        /// <param name="ip">IP Address of the Grid Server for this region</param>
-        /// <param name="x">Grid X Coordinate</param>
-        /// <param name="y">Grid Y Coordinate</param>
-        public RegionHandle(string ip, short x, short y)
-        {
-            IPAddress addr = IPAddress.Parse(ip);
-
-            if (addr.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork)
-                throw new Exception("Bad RegionHandle Parameter - must be an IPv4 address");
-
-            uint baseHandle = BitConverter.ToUInt32(addr.GetAddressBytes(), 0);
-
-            // Split the IP address in half
-            short a = (short)((baseHandle << 16) & 0xFFFF);
-            short b = (short)((baseHandle <<  0) & 0xFFFF);
-
-            // Raise the bounds a little
-            uint nx = (uint)x;
-            uint ny = (uint)y;
-
-            // Multiply grid coords to get region coords
-            nx *= 256;
-            ny *= 256;
-
-            // Stuff the IP address in too
-            nx = (uint)a << 16;
-            ny = (uint)b << 16;
-
-            handle = ((UInt64)nx << 32) | (uint)ny;
-        }
-
-        /// <summary>
-        /// Initialises a new RegionHandle that is not inter-grid aware
-        /// </summary>
-        /// <param name="x">Grid X Coordinate</param>
-        /// <param name="y">Grid Y Coordinate</param>
-        public RegionHandle(uint x, uint y)
-        {
-            handle = ((x * 256) << 32) | (y * 256);
-        }
-
-        /// <summary>
-        /// Initialises a new RegionHandle from an existing value
-        /// </summary>
-        /// <param name="Region">A U64 RegionHandle</param>
-        public RegionHandle(UInt64 Region)
-        {
-            handle = Region;
-        }
-
-        /// <summary>
-        /// Returns the Grid Masked RegionHandle - For use in Teleport packets and other packets where sending the grid IP address may be handy.
-        /// </summary>
-        /// <remarks>Do not use for SimulatorEnable packets. The client will choke.</remarks>
-        /// <returns>Region Handle including IP Address encoding</returns>
-        public UInt64 getTeleportHandle()
-        {
-            return handle;
-        }
-
-        /// <summary>
-        /// Returns a RegionHandle which may be used for SimulatorEnable packets. Removes the IP address encoding and returns the lower bounds.
-        /// </summary>
-        /// <returns>A U64 RegionHandle for use in SimulatorEnable packets.</returns>
-        public UInt64 getNeighbourHandle()
-        {
-            UInt64 mask = 0x0000FFFF0000FFFF;
-
-            return handle | mask;
-        }
-
-        /// <summary>
-        /// Returns the IP Address of the GridServer from a Grid-Encoded RegionHandle
-        /// </summary>
-        /// <returns>Grid Server IP Address</returns>
-        public IPAddress getGridIP()
-        {
-            uint a = (uint)((handle >> 16) & 0xFFFF);
-            uint b = (uint)((handle >> 48) & 0xFFFF);
-
-            return new IPAddress((long)(a << 16) | (long)b);
-        }
-
-        /// <summary>
-        /// Returns the X Coordinate from a Grid-Encoded RegionHandle
-        /// </summary>
-        /// <returns>X Coordinate</returns>
-        public uint getGridX()
-        {
-            uint x = (uint)((handle >> 32) & 0xFFFF);
-
-            return x;
-        }
-
-        /// <summary>
-        /// Returns the Y Coordinate from a Grid-Encoded RegionHandle
-        /// </summary>
-        /// <returns>Y Coordinate</returns>
-        public uint getGridY()
-        {
-            uint y = (uint)((handle >> 0) & 0xFFFF);
-
-            return y;
-        }
-    }
-}
+using System;
+using System.Net;
+
+namespace OpenSim.Framework.Types
+{
+    /// <summary>
+    /// A class for manipulating RegionHandle coordinates
+    /// </summary>
+    class RegionHandle
+    {
+        private UInt64 handle;
+
+        /// <summary>
+        /// Initialises a new grid-aware RegionHandle
+        /// </summary>
+        /// <param name="ip">IP Address of the Grid Server for this region</param>
+        /// <param name="x">Grid X Coordinate</param>
+        /// <param name="y">Grid Y Coordinate</param>
+        public RegionHandle(string ip, short x, short y)
+        {
+            IPAddress addr = IPAddress.Parse(ip);
+
+            if (addr.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork)
+                throw new Exception("Bad RegionHandle Parameter - must be an IPv4 address");
+
+            uint baseHandle = BitConverter.ToUInt32(addr.GetAddressBytes(), 0);
+
+            // Split the IP address in half
+            short a = (short)((baseHandle << 16) & 0xFFFF);
+            short b = (short)((baseHandle <<  0) & 0xFFFF);
+
+            // Raise the bounds a little
+            uint nx = (uint)x;
+            uint ny = (uint)y;
+
+            // Multiply grid coords to get region coords
+            nx *= 256;
+            ny *= 256;
+
+            // Stuff the IP address in too
+            nx = (uint)a << 16;
+            ny = (uint)b << 16;
+
+            handle = ((UInt64)nx << 32) | (uint)ny;
+        }
+
+        /// <summary>
+        /// Initialises a new RegionHandle that is not inter-grid aware
+        /// </summary>
+        /// <param name="x">Grid X Coordinate</param>
+        /// <param name="y">Grid Y Coordinate</param>
+        public RegionHandle(uint x, uint y)
+        {
+            handle = ((x * 256) << 32) | (y * 256);
+        }
+
+        /// <summary>
+        /// Initialises a new RegionHandle from an existing value
+        /// </summary>
+        /// <param name="Region">A U64 RegionHandle</param>
+        public RegionHandle(UInt64 Region)
+        {
+            handle = Region;
+        }
+
+        /// <summary>
+        /// Returns the Grid Masked RegionHandle - For use in Teleport packets and other packets where sending the grid IP address may be handy.
+        /// </summary>
+        /// <remarks>Do not use for SimulatorEnable packets. The client will choke.</remarks>
+        /// <returns>Region Handle including IP Address encoding</returns>
+        public UInt64 getTeleportHandle()
+        {
+            return handle;
+        }
+
+        /// <summary>
+        /// Returns a RegionHandle which may be used for SimulatorEnable packets. Removes the IP address encoding and returns the lower bounds.
+        /// </summary>
+        /// <returns>A U64 RegionHandle for use in SimulatorEnable packets.</returns>
+        public UInt64 getNeighbourHandle()
+        {
+            UInt64 mask = 0x0000FFFF0000FFFF;
+
+            return handle | mask;
+        }
+
+        /// <summary>
+        /// Returns the IP Address of the GridServer from a Grid-Encoded RegionHandle
+        /// </summary>
+        /// <returns>Grid Server IP Address</returns>
+        public IPAddress getGridIP()
+        {
+            uint a = (uint)((handle >> 16) & 0xFFFF);
+            uint b = (uint)((handle >> 48) & 0xFFFF);
+
+            return new IPAddress((long)(a << 16) | (long)b);
+        }
+
+        /// <summary>
+        /// Returns the X Coordinate from a Grid-Encoded RegionHandle
+        /// </summary>
+        /// <returns>X Coordinate</returns>
+        public uint getGridX()
+        {
+            uint x = (uint)((handle >> 32) & 0xFFFF);
+
+            return x;
+        }
+
+        /// <summary>
+        /// Returns the Y Coordinate from a Grid-Encoded RegionHandle
+        /// </summary>
+        /// <returns>Y Coordinate</returns>
+        public uint getGridY()
+        {
+            uint y = (uint)((handle >> 0) & 0xFFFF);
+
+            return y;
+        }
+    }
+}

+ 342 - 342
OpenSim/Framework/General/Types/RegionInfo.cs

@@ -1,342 +1,342 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Globalization;
-using System.Net;
-using System.Net.Sockets;
-using libsecondlife;
-using OpenSim.Framework.Console;
-using OpenSim.Framework.Interfaces;
-using OpenSim.Framework.Utilities;
-
-namespace OpenSim.Framework.Types
-{
-    public class RegionInfo
-    {
-        public LLUUID SimUUID = new LLUUID();
-        public string RegionName = "";
-
-        private IPEndPoint m_internalEndPoint;
-        public IPEndPoint InternalEndPoint
-        {
-            get
-            {
-                return m_internalEndPoint;
-            }
-        }
-
-        public IPEndPoint ExternalEndPoint
-        {
-            get
-            {
-                // Old one defaults to IPv6
-                //return new IPEndPoint( Dns.GetHostAddresses( m_externalHostName )[0], m_internalEndPoint.Port );
-
-                // New method favors IPv4
-                IPAddress ia = null;
-                foreach (IPAddress Adr in Dns.GetHostAddresses(m_externalHostName))
-                {
-                    if (ia == null)
-                        ia = Adr;
-
-                    if (Adr.AddressFamily == AddressFamily.InterNetwork)
-                    {
-                        ia = Adr;
-                        break;
-                    }
-
-                }
-                
-                return new IPEndPoint(ia, m_internalEndPoint.Port);
-            }
-        }
-        
-        private string m_externalHostName;
-        public string ExternalHostName
-        {
-            get
-            {
-                return m_externalHostName;
-            }
-        }
-
-        private uint? m_regionLocX;
-        public uint RegionLocX
-        {
-            get
-            {
-                return m_regionLocX.Value;
-            }
-        }
-
-        private uint? m_regionLocY;
-        public uint RegionLocY
-        {
-            get
-            {
-                return m_regionLocY.Value;
-            }
-        }
-
-        private ulong? m_regionHandle;
-        public ulong RegionHandle
-        {
-            get
-            {
-                if (!m_regionHandle.HasValue)
-                {
-                    m_regionHandle = Util.UIntsToLong((RegionLocX * 256), (RegionLocY * 256));
-                }
-
-                return m_regionHandle.Value;
-            }
-        }
-
-        // Only used for remote regions , ie ones not in the current instance
-        private uint m_remotingPort;
-        public uint RemotingPort
-        {
-            get
-            {
-                return m_remotingPort;
-            }
-            set
-            {
-                m_remotingPort = value;
-            }
-        }
-        public string RemotingAddress;
-
-        public string DataStore = "";
-        public bool isSandbox = false;
-
-        public LLUUID MasterAvatarAssignedUUID = new LLUUID();
-        public string MasterAvatarFirstName = "";
-        public string MasterAvatarLastName = "";
-        public string MasterAvatarSandboxPassword = "";
-
-        public EstateSettings estateSettings;
-
-        public RegionInfo()
-        {
-            estateSettings = new EstateSettings();
-        }
-
-        public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri)
-            : this()
-        {
-            m_regionLocX = regionLocX;
-            m_regionLocY = regionLocY;
-
-            m_internalEndPoint = internalEndPoint;
-            m_externalHostName = externalUri;
-        }
-
-        public void InitConfig(bool sandboxMode, IGenericConfig configData)
-        {
-            this.isSandbox = sandboxMode;
-            try
-            {
-                string attri = "";
-
-                // Sim UUID
-                string simId = configData.GetAttribute("SimUUID");
-                if (String.IsNullOrEmpty( simId ))
-                {
-                    this.SimUUID = LLUUID.Random();
-                }
-                else
-                {
-                    this.SimUUID = new LLUUID(simId);
-                }
-                configData.SetAttribute("SimUUID", this.SimUUID.ToString());
-
-                this.RegionName = GetString(configData, "SimName", "OpenSim test", "Region Name");
-
-                //m_regionLocX = (uint) GetInt(configData, "SimLocationX", 1000, "Grid Location X");
-                
-                attri = "";
-                attri = configData.GetAttribute("SimLocationX");
-                if (attri == "")
-                {
-                    string location = MainLog.Instance.CmdPrompt("Grid Location X", "1000");
-                    configData.SetAttribute("SimLocationX", location);
-                    m_regionLocX = (uint)Convert.ToUInt32(location);
-                }
-                else
-                {
-                    m_regionLocX = (uint)Convert.ToUInt32(attri);
-                }
-                // Sim/Grid location Y
-                attri = "";
-                attri = configData.GetAttribute("SimLocationY");
-                if (attri == "")
-                {
-                    string location = MainLog.Instance.CmdPrompt("Grid Location Y", "1000");
-                    configData.SetAttribute("SimLocationY", location);
-                    m_regionLocY = (uint)Convert.ToUInt32(location);
-                }
-                else
-                {
-                    m_regionLocY = (uint)Convert.ToUInt32(attri);
-                }
-
-                m_regionHandle = null;
-
-                this.DataStore = GetString(configData, "Datastore", "localworld.yap", "Filename for local storage");
-                
-                IPAddress internalAddress = GetIPAddress(configData, "InternalIPAddress", "0.0.0.0", "Internal IP Address for UDP client connections");
-                int internalPort = GetIPPort(configData, "InternalIPPort", "9000", "Internal IP Port for UDP client connections");
-                m_internalEndPoint = new IPEndPoint(internalAddress, internalPort);
-
-                m_externalHostName = GetString(configData, "ExternalHostName", "127.0.0.1", "External Host Name");
-
-                estateSettings.terrainFile =
-                    GetString(configData, "TerrainFile", "default.r32", "GENERAL SETTING: Default Terrain File");                
-                
-                attri = "";
-                attri = configData.GetAttribute("TerrainMultiplier");
-                if (attri == "")
-                {
-                    string re = MainLog.Instance.CmdPrompt("GENERAL SETTING: Terrain Height Multiplier", "60.0");
-                    this.estateSettings.terrainMultiplier = Convert.ToDouble(re, CultureInfo.InvariantCulture);
-                    configData.SetAttribute("TerrainMultiplier", this.estateSettings.terrainMultiplier.ToString());
-                }
-                else
-                {
-                    this.estateSettings.terrainMultiplier = Convert.ToDouble(attri);
-                }
-
-                attri = "";
-                attri = configData.GetAttribute("MasterAvatarFirstName");
-                if (attri == "")
-                {
-                    this.MasterAvatarFirstName = MainLog.Instance.CmdPrompt("First name of Master Avatar (Land and Region Owner)", "Test");
-
-                    configData.SetAttribute("MasterAvatarFirstName", this.MasterAvatarFirstName);
-                }
-                else
-                {
-                    this.MasterAvatarFirstName = attri;
-                }
-
-                attri = "";
-                attri = configData.GetAttribute("MasterAvatarLastName");
-                if (attri == "")
-                {
-                    this.MasterAvatarLastName = MainLog.Instance.CmdPrompt("Last name of Master Avatar (Land and Region Owner)", "User");
-
-                    configData.SetAttribute("MasterAvatarLastName", this.MasterAvatarLastName);
-                }
-                else
-                {
-                    this.MasterAvatarLastName = attri;
-                }
-
-                if (isSandbox) //Sandbox Mode Specific Settings
-                {
-                    attri = "";
-                    attri = configData.GetAttribute("MasterAvatarSandboxPassword");
-                    if (attri == "")
-                    {
-                        this.MasterAvatarSandboxPassword = MainLog.Instance.CmdPrompt("Password of Master Avatar (Needed for sandbox mode account creation only)", "test");
-
-                        //Should I store this?
-                        configData.SetAttribute("MasterAvatarSandboxPassword", this.MasterAvatarSandboxPassword);
-                    }
-                    else
-                    {
-                        this.MasterAvatarSandboxPassword = attri;
-                    }
-                }
-
-                configData.Commit();
-            }
-            catch (Exception e)
-            {
-                MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
-                MainLog.Instance.Warn(e.ToString());
-            }
-
-            MainLog.Instance.Verbose("Sim settings loaded:");
-            MainLog.Instance.Verbose("UUID: " + this.SimUUID.ToStringHyphenated());
-            MainLog.Instance.Verbose("Name: " + this.RegionName);
-            MainLog.Instance.Verbose("Region Location: [" + this.RegionLocX.ToString() + "," + this.RegionLocY + "]");
-            MainLog.Instance.Verbose("Region Handle: " + this.RegionHandle.ToString());
-            MainLog.Instance.Verbose("Listening on IP end point: " + m_internalEndPoint.ToString() );
-            MainLog.Instance.Verbose("Sandbox Mode? " + isSandbox.ToString());
-
-        }
-
-        private uint GetInt(IGenericConfig configData, string p, int p_3, string p_4)
-        {
-            throw new Exception("The method or operation is not implemented.");
-        }
-
-        private string GetString(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
-        {
-            string s = configData.GetAttribute(attrName);
-
-            if (String.IsNullOrEmpty( s ))
-            {
-                s = MainLog.Instance.CmdPrompt(prompt, defaultvalue);
-                configData.SetAttribute(attrName, s );
-            }
-            return s;
-        }
-
-        private IPAddress GetIPAddress(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
-        {
-            string addressStr = configData.GetAttribute(attrName);
-
-            IPAddress address;
-
-            if (!IPAddress.TryParse(addressStr, out address))
-            {
-                address =  MainLog.Instance.CmdPromptIPAddress(prompt, defaultvalue);
-                configData.SetAttribute(attrName, address.ToString());
-            }
-            return address;
-        }
-        
-        private int GetIPPort(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
-        {
-            string portStr = configData.GetAttribute(attrName);
-
-            int port;
-
-            if (!int.TryParse(portStr, out port))
-            {
-                port = MainLog.Instance.CmdPromptIPPort(prompt, defaultvalue);
-                configData.SetAttribute(attrName, port.ToString());
-            }
-            
-            return port;
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Globalization;
+using System.Net;
+using System.Net.Sockets;
+using libsecondlife;
+using OpenSim.Framework.Console;
+using OpenSim.Framework.Interfaces;
+using OpenSim.Framework.Utilities;
+
+namespace OpenSim.Framework.Types
+{
+    public class RegionInfo
+    {
+        public LLUUID SimUUID = new LLUUID();
+        public string RegionName = "";
+
+        private IPEndPoint m_internalEndPoint;
+        public IPEndPoint InternalEndPoint
+        {
+            get
+            {
+                return m_internalEndPoint;
+            }
+        }
+
+        public IPEndPoint ExternalEndPoint
+        {
+            get
+            {
+                // Old one defaults to IPv6
+                //return new IPEndPoint( Dns.GetHostAddresses( m_externalHostName )[0], m_internalEndPoint.Port );
+
+                // New method favors IPv4
+                IPAddress ia = null;
+                foreach (IPAddress Adr in Dns.GetHostAddresses(m_externalHostName))
+                {
+                    if (ia == null)
+                        ia = Adr;
+
+                    if (Adr.AddressFamily == AddressFamily.InterNetwork)
+                    {
+                        ia = Adr;
+                        break;
+                    }
+
+                }
+                
+                return new IPEndPoint(ia, m_internalEndPoint.Port);
+            }
+        }
+        
+        private string m_externalHostName;
+        public string ExternalHostName
+        {
+            get
+            {
+                return m_externalHostName;
+            }
+        }
+
+        private uint? m_regionLocX;
+        public uint RegionLocX
+        {
+            get
+            {
+                return m_regionLocX.Value;
+            }
+        }
+
+        private uint? m_regionLocY;
+        public uint RegionLocY
+        {
+            get
+            {
+                return m_regionLocY.Value;
+            }
+        }
+
+        private ulong? m_regionHandle;
+        public ulong RegionHandle
+        {
+            get
+            {
+                if (!m_regionHandle.HasValue)
+                {
+                    m_regionHandle = Util.UIntsToLong((RegionLocX * 256), (RegionLocY * 256));
+                }
+
+                return m_regionHandle.Value;
+            }
+        }
+
+        // Only used for remote regions , ie ones not in the current instance
+        private uint m_remotingPort;
+        public uint RemotingPort
+        {
+            get
+            {
+                return m_remotingPort;
+            }
+            set
+            {
+                m_remotingPort = value;
+            }
+        }
+        public string RemotingAddress;
+
+        public string DataStore = "";
+        public bool isSandbox = false;
+
+        public LLUUID MasterAvatarAssignedUUID = new LLUUID();
+        public string MasterAvatarFirstName = "";
+        public string MasterAvatarLastName = "";
+        public string MasterAvatarSandboxPassword = "";
+
+        public EstateSettings estateSettings;
+
+        public RegionInfo()
+        {
+            estateSettings = new EstateSettings();
+        }
+
+        public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri)
+            : this()
+        {
+            m_regionLocX = regionLocX;
+            m_regionLocY = regionLocY;
+
+            m_internalEndPoint = internalEndPoint;
+            m_externalHostName = externalUri;
+        }
+
+        public void InitConfig(bool sandboxMode, IGenericConfig configData)
+        {
+            this.isSandbox = sandboxMode;
+            try
+            {
+                string attri = "";
+
+                // Sim UUID
+                string simId = configData.GetAttribute("SimUUID");
+                if (String.IsNullOrEmpty( simId ))
+                {
+                    this.SimUUID = LLUUID.Random();
+                }
+                else
+                {
+                    this.SimUUID = new LLUUID(simId);
+                }
+                configData.SetAttribute("SimUUID", this.SimUUID.ToString());
+
+                this.RegionName = GetString(configData, "SimName", "OpenSim test", "Region Name");
+
+                //m_regionLocX = (uint) GetInt(configData, "SimLocationX", 1000, "Grid Location X");
+                
+                attri = "";
+                attri = configData.GetAttribute("SimLocationX");
+                if (attri == "")
+                {
+                    string location = MainLog.Instance.CmdPrompt("Grid Location X", "1000");
+                    configData.SetAttribute("SimLocationX", location);
+                    m_regionLocX = (uint)Convert.ToUInt32(location);
+                }
+                else
+                {
+                    m_regionLocX = (uint)Convert.ToUInt32(attri);
+                }
+                // Sim/Grid location Y
+                attri = "";
+                attri = configData.GetAttribute("SimLocationY");
+                if (attri == "")
+                {
+                    string location = MainLog.Instance.CmdPrompt("Grid Location Y", "1000");
+                    configData.SetAttribute("SimLocationY", location);
+                    m_regionLocY = (uint)Convert.ToUInt32(location);
+                }
+                else
+                {
+                    m_regionLocY = (uint)Convert.ToUInt32(attri);
+                }
+
+                m_regionHandle = null;
+
+                this.DataStore = GetString(configData, "Datastore", "localworld.yap", "Filename for local storage");
+                
+                IPAddress internalAddress = GetIPAddress(configData, "InternalIPAddress", "0.0.0.0", "Internal IP Address for UDP client connections");
+                int internalPort = GetIPPort(configData, "InternalIPPort", "9000", "Internal IP Port for UDP client connections");
+                m_internalEndPoint = new IPEndPoint(internalAddress, internalPort);
+
+                m_externalHostName = GetString(configData, "ExternalHostName", "127.0.0.1", "External Host Name");
+
+                estateSettings.terrainFile =
+                    GetString(configData, "TerrainFile", "default.r32", "GENERAL SETTING: Default Terrain File");                
+                
+                attri = "";
+                attri = configData.GetAttribute("TerrainMultiplier");
+                if (attri == "")
+                {
+                    string re = MainLog.Instance.CmdPrompt("GENERAL SETTING: Terrain Height Multiplier", "60.0");
+                    this.estateSettings.terrainMultiplier = Convert.ToDouble(re, CultureInfo.InvariantCulture);
+                    configData.SetAttribute("TerrainMultiplier", this.estateSettings.terrainMultiplier.ToString());
+                }
+                else
+                {
+                    this.estateSettings.terrainMultiplier = Convert.ToDouble(attri);
+                }
+
+                attri = "";
+                attri = configData.GetAttribute("MasterAvatarFirstName");
+                if (attri == "")
+                {
+                    this.MasterAvatarFirstName = MainLog.Instance.CmdPrompt("First name of Master Avatar (Land and Region Owner)", "Test");
+
+                    configData.SetAttribute("MasterAvatarFirstName", this.MasterAvatarFirstName);
+                }
+                else
+                {
+                    this.MasterAvatarFirstName = attri;
+                }
+
+                attri = "";
+                attri = configData.GetAttribute("MasterAvatarLastName");
+                if (attri == "")
+                {
+                    this.MasterAvatarLastName = MainLog.Instance.CmdPrompt("Last name of Master Avatar (Land and Region Owner)", "User");
+
+                    configData.SetAttribute("MasterAvatarLastName", this.MasterAvatarLastName);
+                }
+                else
+                {
+                    this.MasterAvatarLastName = attri;
+                }
+
+                if (isSandbox) //Sandbox Mode Specific Settings
+                {
+                    attri = "";
+                    attri = configData.GetAttribute("MasterAvatarSandboxPassword");
+                    if (attri == "")
+                    {
+                        this.MasterAvatarSandboxPassword = MainLog.Instance.CmdPrompt("Password of Master Avatar (Needed for sandbox mode account creation only)", "test");
+
+                        //Should I store this?
+                        configData.SetAttribute("MasterAvatarSandboxPassword", this.MasterAvatarSandboxPassword);
+                    }
+                    else
+                    {
+                        this.MasterAvatarSandboxPassword = attri;
+                    }
+                }
+
+                configData.Commit();
+            }
+            catch (Exception e)
+            {
+                MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
+                MainLog.Instance.Warn(e.ToString());
+            }
+
+            MainLog.Instance.Verbose("Sim settings loaded:");
+            MainLog.Instance.Verbose("UUID: " + this.SimUUID.ToStringHyphenated());
+            MainLog.Instance.Verbose("Name: " + this.RegionName);
+            MainLog.Instance.Verbose("Region Location: [" + this.RegionLocX.ToString() + "," + this.RegionLocY + "]");
+            MainLog.Instance.Verbose("Region Handle: " + this.RegionHandle.ToString());
+            MainLog.Instance.Verbose("Listening on IP end point: " + m_internalEndPoint.ToString() );
+            MainLog.Instance.Verbose("Sandbox Mode? " + isSandbox.ToString());
+
+        }
+
+        private uint GetInt(IGenericConfig configData, string p, int p_3, string p_4)
+        {
+            throw new Exception("The method or operation is not implemented.");
+        }
+
+        private string GetString(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
+        {
+            string s = configData.GetAttribute(attrName);
+
+            if (String.IsNullOrEmpty( s ))
+            {
+                s = MainLog.Instance.CmdPrompt(prompt, defaultvalue);
+                configData.SetAttribute(attrName, s );
+            }
+            return s;
+        }
+
+        private IPAddress GetIPAddress(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
+        {
+            string addressStr = configData.GetAttribute(attrName);
+
+            IPAddress address;
+
+            if (!IPAddress.TryParse(addressStr, out address))
+            {
+                address =  MainLog.Instance.CmdPromptIPAddress(prompt, defaultvalue);
+                configData.SetAttribute(attrName, address.ToString());
+            }
+            return address;
+        }
+        
+        private int GetIPPort(IGenericConfig configData, string attrName, string defaultvalue, string prompt)
+        {
+            string portStr = configData.GetAttribute(attrName);
+
+            int port;
+
+            if (!int.TryParse(portStr, out port))
+            {
+                port = MainLog.Instance.CmdPromptIPPort(prompt, defaultvalue);
+                configData.SetAttribute(attrName, port.ToString());
+            }
+            
+            return port;
+        }
+    }
+}

+ 127 - 127
OpenSim/Framework/General/Types/UUID.cs

@@ -1,127 +1,127 @@
-using System;
-using libsecondlife;
-
-namespace OpenSim.Framework.Types
-{
-    class UUID
-    {
-        public LLUUID llUUID;
-
-        public UUID(string uuid)
-        {
-            llUUID = new LLUUID(uuid);
-        }
-
-        public UUID(byte[] uuid)
-        {
-            llUUID = new LLUUID(uuid, 0);
-        }
-
-        public UUID(byte[] uuid, int offset)
-        {
-            llUUID = new LLUUID(uuid, offset);
-        }
-
-        public UUID()
-        {
-            llUUID = LLUUID.Zero;
-        }
-
-        public UUID(ulong uuid)
-        {
-            llUUID = new LLUUID(uuid);
-        }
-
-        public UUID(UInt32 first, UInt32 second, UInt32 third, UInt32 fourth)
-        {
-            byte[] uuid = new byte[16];
-
-            byte[] n = BitConverter.GetBytes(first);
-            n.CopyTo(uuid, 0);
-            n = BitConverter.GetBytes(second);
-            n.CopyTo(uuid, 4);
-            n = BitConverter.GetBytes(third);
-            n.CopyTo(uuid, 8);
-            n = BitConverter.GetBytes(fourth);
-            n.CopyTo(uuid, 12);
-
-            llUUID = new LLUUID(uuid,0);
-        }
-
-        public override string ToString()
-        {
-            return llUUID.ToString();
-        }
-
-        public string ToStringHyphenated()
-        {
-            return llUUID.ToStringHyphenated();
-        }
-
-        public byte[] GetBytes()
-        {
-            return llUUID.GetBytes();
-        }
-
-        public UInt32[] GetInts()
-        {
-            UInt32[] ints = new UInt32[4];
-            ints[0] = BitConverter.ToUInt32(llUUID.Data, 0);
-            ints[1] = BitConverter.ToUInt32(llUUID.Data, 4);
-            ints[2] = BitConverter.ToUInt32(llUUID.Data, 8);
-            ints[3] = BitConverter.ToUInt32(llUUID.Data, 12);
-
-            return ints;
-        }
-
-        public LLUUID GetLLUUID()
-        {
-            return llUUID;
-        }
-
-        public uint CRC()
-        {
-            return llUUID.CRC();
-        }
-
-        public override int GetHashCode()
-        {
-            return llUUID.GetHashCode();
-        }
-
-        public void Combine(UUID other)
-        {
-            llUUID.Combine(other.GetLLUUID());
-        }
-
-        public void Combine(LLUUID other)
-        {
-            llUUID.Combine(other);
-        }
-
-        public override bool Equals(Object other)
-        {
-            return llUUID.Equals(other);
-        }
-
-        public static bool operator ==(UUID a, UUID b)
-        {
-            return a.llUUID.Equals(b.GetLLUUID());
-        }
-
-        public static bool operator !=(UUID a, UUID b)
-        {
-            return !a.llUUID.Equals(b.GetLLUUID());
-        }
-
-        public static bool operator ==(UUID a, LLUUID b)
-        {
-            return a.Equals(b);
-        }
-
-        public static bool operator !=(UUID a, LLUUID b)
-        {
-            return !a.Equals(b);
-        }
-    }
-}
+using System;
+using libsecondlife;
+
+namespace OpenSim.Framework.Types
+{
+    class UUID
+    {
+        public LLUUID llUUID;
+
+        public UUID(string uuid)
+        {
+            llUUID = new LLUUID(uuid);
+        }
+
+        public UUID(byte[] uuid)
+        {
+            llUUID = new LLUUID(uuid, 0);
+        }
+
+        public UUID(byte[] uuid, int offset)
+        {
+            llUUID = new LLUUID(uuid, offset);
+        }
+
+        public UUID()
+        {
+            llUUID = LLUUID.Zero;
+        }
+
+        public UUID(ulong uuid)
+        {
+            llUUID = new LLUUID(uuid);
+        }
+
+        public UUID(UInt32 first, UInt32 second, UInt32 third, UInt32 fourth)
+        {
+            byte[] uuid = new byte[16];
+
+            byte[] n = BitConverter.GetBytes(first);
+            n.CopyTo(uuid, 0);
+            n = BitConverter.GetBytes(second);
+            n.CopyTo(uuid, 4);
+            n = BitConverter.GetBytes(third);
+            n.CopyTo(uuid, 8);
+            n = BitConverter.GetBytes(fourth);
+            n.CopyTo(uuid, 12);
+
+            llUUID = new LLUUID(uuid,0);
+        }
+
+        public override string ToString()
+        {
+            return llUUID.ToString();
+        }
+
+        public string ToStringHyphenated()
+        {
+            return llUUID.ToStringHyphenated();
+        }
+
+        public byte[] GetBytes()
+        {
+            return llUUID.GetBytes();
+        }
+
+        public UInt32[] GetInts()
+        {
+            UInt32[] ints = new UInt32[4];
+            ints[0] = BitConverter.ToUInt32(llUUID.Data, 0);
+            ints[1] = BitConverter.ToUInt32(llUUID.Data, 4);
+            ints[2] = BitConverter.ToUInt32(llUUID.Data, 8);
+            ints[3] = BitConverter.ToUInt32(llUUID.Data, 12);
+
+            return ints;
+        }
+
+        public LLUUID GetLLUUID()
+        {
+            return llUUID;
+        }
+
+        public uint CRC()
+        {
+            return llUUID.CRC();
+        }
+
+        public override int GetHashCode()
+        {
+            return llUUID.GetHashCode();
+        }
+
+        public void Combine(UUID other)
+        {
+            llUUID.Combine(other.GetLLUUID());
+        }
+
+        public void Combine(LLUUID other)
+        {
+            llUUID.Combine(other);
+        }
+
+        public override bool Equals(Object other)
+        {
+            return llUUID.Equals(other);
+        }
+
+        public static bool operator ==(UUID a, UUID b)
+        {
+            return a.llUUID.Equals(b.GetLLUUID());
+        }
+
+        public static bool operator !=(UUID a, UUID b)
+        {
+            return !a.llUUID.Equals(b.GetLLUUID());
+        }
+
+        public static bool operator ==(UUID a, LLUUID b)
+        {
+            return a.Equals(b);
+        }
+
+        public static bool operator !=(UUID a, LLUUID b)
+        {
+            return !a.Equals(b);
+        }
+    }
+}

+ 87 - 87
OpenSim/Framework/General/UserProfile.cs

@@ -1,87 +1,87 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Collections.Generic;
-using System.Security.Cryptography;
-using libsecondlife;
-using OpenSim.Framework.Inventory;
-
-namespace OpenSim.Framework.User
-{
-    public class UserProfile
-    {
-
-        public string firstname;
-        public string lastname;
-        public ulong homeregionhandle;
-        public LLVector3 homepos;
-        public LLVector3 homelookat;
-
-        public bool IsGridGod = false;
-        public bool IsLocal = true;	// will be used in future for visitors from foreign grids
-        public string AssetURL;
-        public string MD5passwd;
-
-        public LLUUID CurrentSessionID;
-        public LLUUID CurrentSecureSessionID;
-        public LLUUID UUID;
-        public Dictionary<LLUUID, uint> Circuits = new Dictionary<LLUUID, uint>();	// tracks circuit codes
-
-        public AgentInventory Inventory;
-
-        public UserProfile()
-        {
-            Circuits = new Dictionary<LLUUID, uint>();
-            Inventory = new AgentInventory();
-            homeregionhandle = Helpers.UIntsToLong((1000 * 256), (1000 * 256));
-            homepos = new LLVector3();
-	    homelookat = new LLVector3();
-        }
-
-        public void InitSessionData()
-        {
-            RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider();
-
-            byte[] randDataS = new byte[16];
-            byte[] randDataSS = new byte[16];
-
-            rand.GetBytes(randDataS);
-            rand.GetBytes(randDataSS);
-
-            CurrentSecureSessionID = new LLUUID(randDataSS,0);
-            CurrentSessionID = new LLUUID(randDataS,0);
-            
-        }
-
-        public void AddSimCircuit(uint circuitCode, LLUUID regionUUID)
-        {
-            if (this.Circuits.ContainsKey(regionUUID) == false)
-                this.Circuits.Add(regionUUID, circuitCode);
-        }
-
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Collections.Generic;
+using System.Security.Cryptography;
+using libsecondlife;
+using OpenSim.Framework.Inventory;
+
+namespace OpenSim.Framework.User
+{
+    public class UserProfile
+    {
+
+        public string firstname;
+        public string lastname;
+        public ulong homeregionhandle;
+        public LLVector3 homepos;
+        public LLVector3 homelookat;
+
+        public bool IsGridGod = false;
+        public bool IsLocal = true;	// will be used in future for visitors from foreign grids
+        public string AssetURL;
+        public string MD5passwd;
+
+        public LLUUID CurrentSessionID;
+        public LLUUID CurrentSecureSessionID;
+        public LLUUID UUID;
+        public Dictionary<LLUUID, uint> Circuits = new Dictionary<LLUUID, uint>();	// tracks circuit codes
+
+        public AgentInventory Inventory;
+
+        public UserProfile()
+        {
+            Circuits = new Dictionary<LLUUID, uint>();
+            Inventory = new AgentInventory();
+            homeregionhandle = Helpers.UIntsToLong((1000 * 256), (1000 * 256));
+            homepos = new LLVector3();
+	    homelookat = new LLVector3();
+        }
+
+        public void InitSessionData()
+        {
+            RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider();
+
+            byte[] randDataS = new byte[16];
+            byte[] randDataSS = new byte[16];
+
+            rand.GetBytes(randDataS);
+            rand.GetBytes(randDataSS);
+
+            CurrentSecureSessionID = new LLUUID(randDataSS,0);
+            CurrentSessionID = new LLUUID(randDataS,0);
+            
+        }
+
+        public void AddSimCircuit(uint circuitCode, LLUUID regionUUID)
+        {
+            if (this.Circuits.ContainsKey(regionUUID) == false)
+                this.Circuits.Add(regionUUID, circuitCode);
+        }
+
+    }
+}

+ 184 - 184
OpenSim/Framework/General/Util.cs

@@ -1,184 +1,184 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Security.Cryptography;
-using System.Text;
-using libsecondlife;
-
-namespace OpenSim.Framework.Utilities
-{
-    public class Util
-    {
-        private static Random randomClass = new Random();
-        private static uint nextXferID = 5000;
-        private static object XferLock = new object();
-
-        public static ulong UIntsToLong(uint X, uint Y)
-        {
-            return Helpers.UIntsToLong(X, Y);
-        }
-
-        public static Random RandomClass
-        {
-            get
-            {
-                return randomClass;
-            }
-        }
-
-        public static uint GetNextXferID()
-        {
-            uint id = 0;
-            lock(XferLock)
-            {
-                id = nextXferID;
-                nextXferID++;
-            }
-            return id;
-        }
-
-        public static int UnixTimeSinceEpoch()
-        {
-            TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1));
-            int timestamp = (int)t.TotalSeconds;
-            return timestamp;
-        }
-
-        public static string Md5Hash(string pass)
-        {
-            MD5 md5 = MD5CryptoServiceProvider.Create();
-            byte[] dataMd5 = md5.ComputeHash(Encoding.Default.GetBytes(pass));
-            StringBuilder sb = new StringBuilder();
-            for (int i = 0; i < dataMd5.Length; i++)
-                sb.AppendFormat("{0:x2}", dataMd5[i]);
-            return sb.ToString();
-        }
-
-        public static string GetRandomCapsPath()
-        {
-            LLUUID caps = LLUUID.Random();
-            string capsPath = caps.ToStringHyphenated();
-            capsPath = capsPath.Remove(capsPath.Length - 4, 4);
-            return capsPath;
-        }
-
-        //public static int fast_distance2d(int x, int y)
-        //{
-        //    x = System.Math.Abs(x);
-        //    y = System.Math.Abs(y);
-
-        //    int min = System.Math.Min(x, y);
-
-        //    return (x + y - (min >> 1) - (min >> 2) + (min >> 4));
-        //}
-
-        public static string FieldToString(byte[] bytes)
-        {
-            return FieldToString(bytes, String.Empty);
-        }
-
-        /// <summary>
-        /// Convert a variable length field (byte array) to a string, with a
-        /// field name prepended to each line of the output
-        /// </summary>
-        /// <remarks>If the byte array has unprintable characters in it, a 
-        /// hex dump will be put in the string instead</remarks>
-        /// <param name="bytes">The byte array to convert to a string</param>
-        /// <param name="fieldName">A field name to prepend to each line of output</param>
-        /// <returns>An ASCII string or a string containing a hex dump, minus 
-        /// the null terminator</returns>
-        public static string FieldToString(byte[] bytes, string fieldName)
-        {
-            // Check for a common case
-            if (bytes.Length == 0) return String.Empty;
-
-            StringBuilder output = new StringBuilder();
-            bool printable = true;
-
-            for (int i = 0; i < bytes.Length; ++i)
-            {
-                // Check if there are any unprintable characters in the array
-                if ((bytes[i] < 0x20 || bytes[i] > 0x7E) && bytes[i] != 0x09
-                    && bytes[i] != 0x0D && bytes[i] != 0x0A && bytes[i] != 0x00)
-                {
-                    printable = false;
-                    break;
-                }
-            }
-
-            if (printable)
-            {
-                if (fieldName.Length > 0)
-                {
-                    output.Append(fieldName);
-                    output.Append(": ");
-                }
-
-                if (bytes[bytes.Length - 1] == 0x00)
-                    output.Append(UTF8Encoding.UTF8.GetString(bytes, 0, bytes.Length - 1));
-                else
-                    output.Append(UTF8Encoding.UTF8.GetString(bytes));
-            }
-            else
-            {
-                for (int i = 0; i < bytes.Length; i += 16)
-                {
-                    if (i != 0)
-                        output.Append(Environment.NewLine);
-                    if (fieldName.Length > 0)
-                    {
-                        output.Append(fieldName);
-                        output.Append(": ");
-                    }
-
-                    for (int j = 0; j < 16; j++)
-                    {
-                        if ((i + j) < bytes.Length)
-                            output.Append(String.Format("{0:X2} ", bytes[i + j]));
-                        else
-                            output.Append("   ");
-                    }
-
-                    for (int j = 0; j < 16 && (i + j) < bytes.Length; j++)
-                    {
-                        if (bytes[i + j] >= 0x20 && bytes[i + j] < 0x7E)
-                            output.Append((char)bytes[i + j]);
-                        else
-                            output.Append(".");
-                    }
-                }
-            }
-
-            return output.ToString();
-        }
-        public Util()
-        {
-
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Security.Cryptography;
+using System.Text;
+using libsecondlife;
+
+namespace OpenSim.Framework.Utilities
+{
+    public class Util
+    {
+        private static Random randomClass = new Random();
+        private static uint nextXferID = 5000;
+        private static object XferLock = new object();
+
+        public static ulong UIntsToLong(uint X, uint Y)
+        {
+            return Helpers.UIntsToLong(X, Y);
+        }
+
+        public static Random RandomClass
+        {
+            get
+            {
+                return randomClass;
+            }
+        }
+
+        public static uint GetNextXferID()
+        {
+            uint id = 0;
+            lock(XferLock)
+            {
+                id = nextXferID;
+                nextXferID++;
+            }
+            return id;
+        }
+
+        public static int UnixTimeSinceEpoch()
+        {
+            TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1));
+            int timestamp = (int)t.TotalSeconds;
+            return timestamp;
+        }
+
+        public static string Md5Hash(string pass)
+        {
+            MD5 md5 = MD5CryptoServiceProvider.Create();
+            byte[] dataMd5 = md5.ComputeHash(Encoding.Default.GetBytes(pass));
+            StringBuilder sb = new StringBuilder();
+            for (int i = 0; i < dataMd5.Length; i++)
+                sb.AppendFormat("{0:x2}", dataMd5[i]);
+            return sb.ToString();
+        }
+
+        public static string GetRandomCapsPath()
+        {
+            LLUUID caps = LLUUID.Random();
+            string capsPath = caps.ToStringHyphenated();
+            capsPath = capsPath.Remove(capsPath.Length - 4, 4);
+            return capsPath;
+        }
+
+        //public static int fast_distance2d(int x, int y)
+        //{
+        //    x = System.Math.Abs(x);
+        //    y = System.Math.Abs(y);
+
+        //    int min = System.Math.Min(x, y);
+
+        //    return (x + y - (min >> 1) - (min >> 2) + (min >> 4));
+        //}
+
+        public static string FieldToString(byte[] bytes)
+        {
+            return FieldToString(bytes, String.Empty);
+        }
+
+        /// <summary>
+        /// Convert a variable length field (byte array) to a string, with a
+        /// field name prepended to each line of the output
+        /// </summary>
+        /// <remarks>If the byte array has unprintable characters in it, a 
+        /// hex dump will be put in the string instead</remarks>
+        /// <param name="bytes">The byte array to convert to a string</param>
+        /// <param name="fieldName">A field name to prepend to each line of output</param>
+        /// <returns>An ASCII string or a string containing a hex dump, minus 
+        /// the null terminator</returns>
+        public static string FieldToString(byte[] bytes, string fieldName)
+        {
+            // Check for a common case
+            if (bytes.Length == 0) return String.Empty;
+
+            StringBuilder output = new StringBuilder();
+            bool printable = true;
+
+            for (int i = 0; i < bytes.Length; ++i)
+            {
+                // Check if there are any unprintable characters in the array
+                if ((bytes[i] < 0x20 || bytes[i] > 0x7E) && bytes[i] != 0x09
+                    && bytes[i] != 0x0D && bytes[i] != 0x0A && bytes[i] != 0x00)
+                {
+                    printable = false;
+                    break;
+                }
+            }
+
+            if (printable)
+            {
+                if (fieldName.Length > 0)
+                {
+                    output.Append(fieldName);
+                    output.Append(": ");
+                }
+
+                if (bytes[bytes.Length - 1] == 0x00)
+                    output.Append(UTF8Encoding.UTF8.GetString(bytes, 0, bytes.Length - 1));
+                else
+                    output.Append(UTF8Encoding.UTF8.GetString(bytes));
+            }
+            else
+            {
+                for (int i = 0; i < bytes.Length; i += 16)
+                {
+                    if (i != 0)
+                        output.Append(Environment.NewLine);
+                    if (fieldName.Length > 0)
+                    {
+                        output.Append(fieldName);
+                        output.Append(": ");
+                    }
+
+                    for (int j = 0; j < 16; j++)
+                    {
+                        if ((i + j) < bytes.Length)
+                            output.Append(String.Format("{0:X2} ", bytes[i + j]));
+                        else
+                            output.Append("   ");
+                    }
+
+                    for (int j = 0; j < 16 && (i + j) < bytes.Length; j++)
+                    {
+                        if (bytes[i + j] >= 0x20 && bytes[i + j] < 0x7E)
+                            output.Append((char)bytes[i + j]);
+                        else
+                            output.Append(".");
+                    }
+                }
+            }
+
+            return output.ToString();
+        }
+        public Util()
+        {
+
+        }
+    }
+}

+ 33 - 33
OpenSim/Framework/GenericConfig/Xml/Properties/AssemblyInfo.cs

@@ -1,33 +1,33 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("OpenSim.GenericConfig")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("OpenSim.GenericConfig")]
-[assembly: AssemblyCopyright("Copyright ©  2007")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("285a3047-f165-46c8-8767-b51428738a09")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+using System.Reflection;
+using System.Runtime.InteropServices;
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OpenSim.GenericConfig")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OpenSim.GenericConfig")]
+[assembly: AssemblyCopyright("Copyright ©  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("285a3047-f165-46c8-8767-b51428738a09")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 122 - 122
OpenSim/Framework/GenericConfig/Xml/XmlConfig.cs

@@ -1,122 +1,122 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.IO;
-using System.Xml;
-using OpenSim.Framework.Interfaces;
-
-namespace OpenSim.GenericConfig
-{
-    public class XmlConfig : IGenericConfig
-    {
-        private XmlDocument doc;
-        private XmlNode rootNode;
-        private XmlNode configNode;
-        private string fileName;
-        private bool createdFile = false;
-
-        public XmlConfig(string filename)
-        {
-            fileName = filename;
-        }
-
-        public void LoadData()
-        {
-            doc = new XmlDocument();
-
-            if (File.Exists(fileName))
-            {
-                XmlTextReader reader = new XmlTextReader(fileName);
-                reader.WhitespaceHandling = WhitespaceHandling.None;
-                doc.Load(reader);
-                reader.Close();
-            }
-            else
-            {
-                createdFile = true;
-                rootNode = doc.CreateNode(XmlNodeType.Element, "Root", "");
-                doc.AppendChild(rootNode);
-                configNode = doc.CreateNode(XmlNodeType.Element, "Config", "");
-                rootNode.AppendChild(configNode);
-            }
-
-
-            rootNode = doc.FirstChild;
-            if (rootNode.Name != "Root")
-                throw new Exception("Error: Invalid .xml File. Missing <Root>");
-
-            configNode = rootNode.FirstChild;
-            if (configNode.Name != "Config")
-                throw new Exception("Error: Invalid .xml File. <Root> first child should be <Config>");
-
-            if (createdFile)
-            {
-                this.Commit();
-            }
-        }
-
-        public string GetAttribute(string attributeName)
-        {
-            string result = "";
-            if (configNode.Attributes[attributeName] != null)
-            {
-                result = ((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value;
-            }
-            return result;
-        }
-
-        public bool SetAttribute(string attributeName, string attributeValue)
-        {
-            if (configNode.Attributes[attributeName] != null)
-            {
-                ((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value = attributeValue;
-            }
-            else
-            {
-                XmlAttribute attri;
-                attri = doc.CreateAttribute(attributeName);
-                attri.Value = attributeValue;
-                configNode.Attributes.Append(attri);
-            }
-            return true;
-        }
-
-        public void Commit()
-        {
-            doc.Save(fileName);
-        }
-
-        public void Close()
-        {
-            configNode = null;
-            rootNode = null;
-            doc = null;
-        }
-
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.IO;
+using System.Xml;
+using OpenSim.Framework.Interfaces;
+
+namespace OpenSim.GenericConfig
+{
+    public class XmlConfig : IGenericConfig
+    {
+        private XmlDocument doc;
+        private XmlNode rootNode;
+        private XmlNode configNode;
+        private string fileName;
+        private bool createdFile = false;
+
+        public XmlConfig(string filename)
+        {
+            fileName = filename;
+        }
+
+        public void LoadData()
+        {
+            doc = new XmlDocument();
+
+            if (File.Exists(fileName))
+            {
+                XmlTextReader reader = new XmlTextReader(fileName);
+                reader.WhitespaceHandling = WhitespaceHandling.None;
+                doc.Load(reader);
+                reader.Close();
+            }
+            else
+            {
+                createdFile = true;
+                rootNode = doc.CreateNode(XmlNodeType.Element, "Root", "");
+                doc.AppendChild(rootNode);
+                configNode = doc.CreateNode(XmlNodeType.Element, "Config", "");
+                rootNode.AppendChild(configNode);
+            }
+
+
+            rootNode = doc.FirstChild;
+            if (rootNode.Name != "Root")
+                throw new Exception("Error: Invalid .xml File. Missing <Root>");
+
+            configNode = rootNode.FirstChild;
+            if (configNode.Name != "Config")
+                throw new Exception("Error: Invalid .xml File. <Root> first child should be <Config>");
+
+            if (createdFile)
+            {
+                this.Commit();
+            }
+        }
+
+        public string GetAttribute(string attributeName)
+        {
+            string result = "";
+            if (configNode.Attributes[attributeName] != null)
+            {
+                result = ((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value;
+            }
+            return result;
+        }
+
+        public bool SetAttribute(string attributeName, string attributeValue)
+        {
+            if (configNode.Attributes[attributeName] != null)
+            {
+                ((XmlAttribute)configNode.Attributes.GetNamedItem(attributeName)).Value = attributeValue;
+            }
+            else
+            {
+                XmlAttribute attri;
+                attri = doc.CreateAttribute(attributeName);
+                attri.Value = attributeValue;
+                configNode.Attributes.Append(attri);
+            }
+            return true;
+        }
+
+        public void Commit()
+        {
+            doc.Save(fileName);
+        }
+
+        public void Close()
+        {
+            configNode = null;
+            rootNode = null;
+            doc = null;
+        }
+
+    }
+}

+ 224 - 224
OpenSim/Framework/Servers/BaseHttpServer.cs

@@ -1,224 +1,224 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
-using System.Net;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Threading;
-using Nwc.XmlRpc;
-using OpenSim.Framework.Console;
-
-namespace OpenSim.Framework.Servers
-{
-    public class BaseHttpServer
-    {
-        protected Thread m_workerThread;
-        protected HttpListener m_httpListener;
-        protected Dictionary<string, XmlRpcMethod> m_rpcHandlers = new Dictionary<string, XmlRpcMethod>();
-        protected Dictionary<string, IStreamHandler> m_streamHandlers = new Dictionary<string, IStreamHandler>();
-        protected int m_port;
-        protected bool m_firstcaps = true;
-
-        public BaseHttpServer(int port)
-        {
-            m_port = port;
-        }
-
-        public void AddStreamHandler( IStreamHandler handler)
-        {
-            string httpMethod = handler.HttpMethod;
-            string path = handler.Path;
-            
-            string handlerKey = GetHandlerKey(httpMethod, path);
-            m_streamHandlers.Add(handlerKey, handler);
-        }
-
-        private static string GetHandlerKey(string httpMethod, string path)
-        {
-            return httpMethod + ":" + path;
-        }
-
-        public bool AddXmlRPCHandler(string method, XmlRpcMethod handler)
-        {
-            if (!this.m_rpcHandlers.ContainsKey(method))
-            {
-                this.m_rpcHandlers.Add(method, handler);
-                return true;
-            }
-
-            //must already have a handler for that path so return false
-            return false;
-        }
-
-
-        public virtual void HandleRequest(Object stateinfo)
-        {
-            HttpListenerContext context = (HttpListenerContext)stateinfo;
-
-            HttpListenerRequest request = context.Request;
-            HttpListenerResponse response = context.Response;
-
-            response.KeepAlive = false;
-            response.SendChunked = false;
-
-            string path = request.RawUrl;
-            string handlerKey = GetHandlerKey( request.HttpMethod, path );
-
-            IStreamHandler streamHandler;
-
-            if (TryGetStreamHandler( handlerKey, out streamHandler))
-            {
-                byte[] buffer = streamHandler.Handle(path, request.InputStream);
-                request.InputStream.Close();
-
-                response.ContentType = streamHandler.ContentType;
-                response.ContentLength64 = buffer.LongLength;
-                response.OutputStream.Write(buffer, 0, buffer.Length);
-                response.OutputStream.Close();
-            }
-            else
-            {
-                HandleXmlRpcRequests(request, response);
-            }
-        }
-
-        private bool TryGetStreamHandler(string handlerKey, out IStreamHandler streamHandler)
-        {
-            string bestMatch = null;
-
-            foreach (string pattern in m_streamHandlers.Keys)
-            {
-                if (handlerKey.StartsWith(pattern))
-                {
-                    if (String.IsNullOrEmpty(bestMatch) || pattern.Length > bestMatch.Length)
-                    {
-                        bestMatch = pattern;
-                    }
-                }
-            }
-
-            if (String.IsNullOrEmpty(bestMatch))
-            {
-                streamHandler = null;
-                return false;
-            }
-            else
-            {
-                streamHandler = m_streamHandlers[bestMatch];
-                return true;
-            }
-        }
-
-        private void HandleXmlRpcRequests(HttpListenerRequest request, HttpListenerResponse response)
-        {
-            Stream requestStream = request.InputStream;
-
-            Encoding encoding = Encoding.UTF8;
-            StreamReader reader = new StreamReader(requestStream, encoding);
-
-            string requestBody = reader.ReadToEnd();
-            reader.Close();
-            requestStream.Close();
-
-            XmlRpcRequest xmlRprcRequest = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody);
-
-            string methodName = xmlRprcRequest.MethodName;
-
-            XmlRpcResponse xmlRpcResponse;
-
-            XmlRpcMethod method;
-            if (this.m_rpcHandlers.TryGetValue(methodName, out method))
-            {
-                xmlRpcResponse = method(xmlRprcRequest);
-            }
-            else
-            {
-                xmlRpcResponse = new XmlRpcResponse();
-                Hashtable unknownMethodError = new Hashtable();
-                unknownMethodError["reason"] = "XmlRequest"; ;
-                unknownMethodError["message"] = "Unknown Rpc Request ["+methodName+"]";
-                unknownMethodError["login"] = "false";
-                xmlRpcResponse.Value = unknownMethodError;
-            }
-
-            response.AddHeader("Content-type", "text/xml");
-
-            string responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse);
-            
-            byte[] buffer = Encoding.UTF8.GetBytes(responseString);
-
-            response.SendChunked = false;
-            response.ContentLength64 = buffer.Length;
-            response.ContentEncoding = Encoding.UTF8;
-
-            response.OutputStream.Write(buffer, 0, buffer.Length);
-            response.OutputStream.Close();
-        }
-
-        public void Start()
-        {
-            MainLog.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: Starting up HTTP Server");
-
-            m_workerThread = new Thread(new ThreadStart(StartHTTP));
-            m_workerThread.IsBackground = true;
-            m_workerThread.Start();
-        }
-
-        private void StartHTTP()
-        {
-            try
-            {
-                MainLog.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: StartHTTP() - Spawned main thread OK");
-                m_httpListener = new HttpListener();
-
-                m_httpListener.Prefixes.Add("http://+:" + m_port + "/");
-                m_httpListener.Start();
-
-                HttpListenerContext context;
-                while (true)
-                {
-                    context = m_httpListener.GetContext();
-                    ThreadPool.QueueUserWorkItem(new WaitCallback(HandleRequest), context);
-                }
-            }
-            catch (Exception e)
-            {
-                MainLog.Instance.WriteLine(LogPriority.MEDIUM, e.Message);
-            }
-        }
-
-
-        public void RemoveStreamHandler(string httpMethod, string path)
-        {
-            m_streamHandlers.Remove(GetHandlerKey(httpMethod, path));
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Net;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading;
+using Nwc.XmlRpc;
+using OpenSim.Framework.Console;
+
+namespace OpenSim.Framework.Servers
+{
+    public class BaseHttpServer
+    {
+        protected Thread m_workerThread;
+        protected HttpListener m_httpListener;
+        protected Dictionary<string, XmlRpcMethod> m_rpcHandlers = new Dictionary<string, XmlRpcMethod>();
+        protected Dictionary<string, IStreamHandler> m_streamHandlers = new Dictionary<string, IStreamHandler>();
+        protected int m_port;
+        protected bool m_firstcaps = true;
+
+        public BaseHttpServer(int port)
+        {
+            m_port = port;
+        }
+
+        public void AddStreamHandler( IStreamHandler handler)
+        {
+            string httpMethod = handler.HttpMethod;
+            string path = handler.Path;
+            
+            string handlerKey = GetHandlerKey(httpMethod, path);
+            m_streamHandlers.Add(handlerKey, handler);
+        }
+
+        private static string GetHandlerKey(string httpMethod, string path)
+        {
+            return httpMethod + ":" + path;
+        }
+
+        public bool AddXmlRPCHandler(string method, XmlRpcMethod handler)
+        {
+            if (!this.m_rpcHandlers.ContainsKey(method))
+            {
+                this.m_rpcHandlers.Add(method, handler);
+                return true;
+            }
+
+            //must already have a handler for that path so return false
+            return false;
+        }
+
+
+        public virtual void HandleRequest(Object stateinfo)
+        {
+            HttpListenerContext context = (HttpListenerContext)stateinfo;
+
+            HttpListenerRequest request = context.Request;
+            HttpListenerResponse response = context.Response;
+
+            response.KeepAlive = false;
+            response.SendChunked = false;
+
+            string path = request.RawUrl;
+            string handlerKey = GetHandlerKey( request.HttpMethod, path );
+
+            IStreamHandler streamHandler;
+
+            if (TryGetStreamHandler( handlerKey, out streamHandler))
+            {
+                byte[] buffer = streamHandler.Handle(path, request.InputStream);
+                request.InputStream.Close();
+
+                response.ContentType = streamHandler.ContentType;
+                response.ContentLength64 = buffer.LongLength;
+                response.OutputStream.Write(buffer, 0, buffer.Length);
+                response.OutputStream.Close();
+            }
+            else
+            {
+                HandleXmlRpcRequests(request, response);
+            }
+        }
+
+        private bool TryGetStreamHandler(string handlerKey, out IStreamHandler streamHandler)
+        {
+            string bestMatch = null;
+
+            foreach (string pattern in m_streamHandlers.Keys)
+            {
+                if (handlerKey.StartsWith(pattern))
+                {
+                    if (String.IsNullOrEmpty(bestMatch) || pattern.Length > bestMatch.Length)
+                    {
+                        bestMatch = pattern;
+                    }
+                }
+            }
+
+            if (String.IsNullOrEmpty(bestMatch))
+            {
+                streamHandler = null;
+                return false;
+            }
+            else
+            {
+                streamHandler = m_streamHandlers[bestMatch];
+                return true;
+            }
+        }
+
+        private void HandleXmlRpcRequests(HttpListenerRequest request, HttpListenerResponse response)
+        {
+            Stream requestStream = request.InputStream;
+
+            Encoding encoding = Encoding.UTF8;
+            StreamReader reader = new StreamReader(requestStream, encoding);
+
+            string requestBody = reader.ReadToEnd();
+            reader.Close();
+            requestStream.Close();
+
+            XmlRpcRequest xmlRprcRequest = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody);
+
+            string methodName = xmlRprcRequest.MethodName;
+
+            XmlRpcResponse xmlRpcResponse;
+
+            XmlRpcMethod method;
+            if (this.m_rpcHandlers.TryGetValue(methodName, out method))
+            {
+                xmlRpcResponse = method(xmlRprcRequest);
+            }
+            else
+            {
+                xmlRpcResponse = new XmlRpcResponse();
+                Hashtable unknownMethodError = new Hashtable();
+                unknownMethodError["reason"] = "XmlRequest"; ;
+                unknownMethodError["message"] = "Unknown Rpc Request ["+methodName+"]";
+                unknownMethodError["login"] = "false";
+                xmlRpcResponse.Value = unknownMethodError;
+            }
+
+            response.AddHeader("Content-type", "text/xml");
+
+            string responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse);
+            
+            byte[] buffer = Encoding.UTF8.GetBytes(responseString);
+
+            response.SendChunked = false;
+            response.ContentLength64 = buffer.Length;
+            response.ContentEncoding = Encoding.UTF8;
+
+            response.OutputStream.Write(buffer, 0, buffer.Length);
+            response.OutputStream.Close();
+        }
+
+        public void Start()
+        {
+            MainLog.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: Starting up HTTP Server");
+
+            m_workerThread = new Thread(new ThreadStart(StartHTTP));
+            m_workerThread.IsBackground = true;
+            m_workerThread.Start();
+        }
+
+        private void StartHTTP()
+        {
+            try
+            {
+                MainLog.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: StartHTTP() - Spawned main thread OK");
+                m_httpListener = new HttpListener();
+
+                m_httpListener.Prefixes.Add("http://+:" + m_port + "/");
+                m_httpListener.Start();
+
+                HttpListenerContext context;
+                while (true)
+                {
+                    context = m_httpListener.GetContext();
+                    ThreadPool.QueueUserWorkItem(new WaitCallback(HandleRequest), context);
+                }
+            }
+            catch (Exception e)
+            {
+                MainLog.Instance.WriteLine(LogPriority.MEDIUM, e.Message);
+            }
+        }
+
+
+        public void RemoveStreamHandler(string httpMethod, string path)
+        {
+            m_streamHandlers.Remove(GetHandlerKey(httpMethod, path));
+        }
+    }
+}

+ 40 - 40
OpenSim/Framework/Servers/BaseStreamHandler.cs

@@ -1,40 +1,40 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.IO;
-
-namespace OpenSim.Framework.Servers
-{
-    public abstract class BaseStreamHandler : IStreamHandler
-    {
-        virtual public string ContentType
-        {
-            get { return "application/xml"; }
-        }
-
-        private string m_httpMethod;
-        virtual public string HttpMethod
-        {
-            get { return m_httpMethod; }
-        }
-
-        private string m_path;
-        virtual public string Path
-        {
-            get { return m_path; }
-        }
-	
-        protected string GetParam( string path )
-        {
-           return path.Substring( m_path.Length );
-        }
-        
-        public abstract byte[] Handle(string path, Stream request);
-
-        protected BaseStreamHandler(string httpMethod, string path)
-        {
-            m_httpMethod = httpMethod;
-            m_path = path;
-        }
-    }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+
+namespace OpenSim.Framework.Servers
+{
+    public abstract class BaseStreamHandler : IStreamHandler
+    {
+        virtual public string ContentType
+        {
+            get { return "application/xml"; }
+        }
+
+        private string m_httpMethod;
+        virtual public string HttpMethod
+        {
+            get { return m_httpMethod; }
+        }
+
+        private string m_path;
+        virtual public string Path
+        {
+            get { return m_path; }
+        }
+	
+        protected string GetParam( string path )
+        {
+           return path.Substring( m_path.Length );
+        }
+        
+        public abstract byte[] Handle(string path, Stream request);
+
+        protected BaseStreamHandler(string httpMethod, string path)
+        {
+            m_httpMethod = httpMethod;
+            m_path = path;
+        }
+    }
+}

+ 49 - 49
OpenSim/Framework/Servers/BinaryStreamHandler.cs

@@ -1,49 +1,49 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.IO;
-
-namespace OpenSim.Framework.Servers
-{
-    public delegate string BinaryMethod(byte[] data, string path, string param);
-
-    public class BinaryStreamHandler : BaseStreamHandler
-    {
-        BinaryMethod m_method;
-
-        override public byte[] Handle(string path, Stream request)
-        {
-            byte[] data = ReadFully(request);
-            string param = GetParam(path);
-            string responseString = m_method(data, path, param);
-            
-            return Encoding.UTF8.GetBytes(responseString);
-        }
-
-        public BinaryStreamHandler(string httpMethod, string path, BinaryMethod binaryMethod)
-            : base(httpMethod, path)
-        {
-            m_method = binaryMethod;
-        }
-
-        private byte[] ReadFully(Stream stream)
-        {
-            byte[] buffer = new byte[32768];
-            using (MemoryStream ms = new MemoryStream())
-            {
-                while (true)
-                {
-                    int read = stream.Read(buffer, 0, buffer.Length);
-
-                    if (read <= 0)
-                    {
-                        return ms.ToArray();
-                    }
-                    
-                    ms.Write(buffer, 0, read);
-                }
-            }           
-        }
-    }
-
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+
+namespace OpenSim.Framework.Servers
+{
+    public delegate string BinaryMethod(byte[] data, string path, string param);
+
+    public class BinaryStreamHandler : BaseStreamHandler
+    {
+        BinaryMethod m_method;
+
+        override public byte[] Handle(string path, Stream request)
+        {
+            byte[] data = ReadFully(request);
+            string param = GetParam(path);
+            string responseString = m_method(data, path, param);
+            
+            return Encoding.UTF8.GetBytes(responseString);
+        }
+
+        public BinaryStreamHandler(string httpMethod, string path, BinaryMethod binaryMethod)
+            : base(httpMethod, path)
+        {
+            m_method = binaryMethod;
+        }
+
+        private byte[] ReadFully(Stream stream)
+        {
+            byte[] buffer = new byte[32768];
+            using (MemoryStream ms = new MemoryStream())
+            {
+                while (true)
+                {
+                    int read = stream.Read(buffer, 0, buffer.Length);
+
+                    if (read <= 0)
+                    {
+                        return ms.ToArray();
+                    }
+                    
+                    ms.Write(buffer, 0, read);
+                }
+            }           
+        }
+    }
+
+}

+ 126 - 126
OpenSim/Framework/Servers/CheckSumServer.cs

@@ -1,127 +1,127 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-namespace OpenSim.Framework.Servers
-{/*
-   public class CheckSumServer : UDPServerBase
-    {
-        //protected ConsoleBase m_log;
-
-        public CheckSumServer(int port)
-            : base(port)
-        {
-        }
-
-        protected override void OnReceivedData(IAsyncResult result)
-        {
-            ipeSender = new IPEndPoint(IPAddress.Any, 0);
-            epSender = (EndPoint)ipeSender;
-            Packet packet = null;
-            int numBytes = Server.EndReceiveFrom(result, ref epSender);
-            int packetEnd = numBytes - 1;
-
-            packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer);
-
-            if (packet.Type == PacketType.SecuredTemplateChecksumRequest)
-            {
-                SecuredTemplateChecksumRequestPacket checksum = (SecuredTemplateChecksumRequestPacket)packet;
-                TemplateChecksumReplyPacket checkreply = new TemplateChecksumReplyPacket();
-                checkreply.DataBlock.Checksum = 3220703154;//180572585;
-                checkreply.DataBlock.Flags = 0;
-                checkreply.DataBlock.MajorVersion = 1;
-                checkreply.DataBlock.MinorVersion = 15;
-                checkreply.DataBlock.PatchVersion = 0;
-                checkreply.DataBlock.ServerVersion = 0;
-                checkreply.TokenBlock.Token = checksum.TokenBlock.Token;
-                this.SendPacket(checkreply, epSender);
-
-                /*
-                //if we wanted to echo the the checksum/ version from the client (so that any client worked)
-                SecuredTemplateChecksumRequestPacket checkrequest = new SecuredTemplateChecksumRequestPacket();
-                checkrequest.TokenBlock.Token = checksum.TokenBlock.Token;
-                this.SendPacket(checkrequest, epSender);
-                
-            }
-            else if (packet.Type == PacketType.TemplateChecksumReply)
-            {
-                //echo back the client checksum reply (Hegemon's method)
-                TemplateChecksumReplyPacket checksum2 = (TemplateChecksumReplyPacket)packet;
-                TemplateChecksumReplyPacket checkreply2 = new TemplateChecksumReplyPacket();
-                checkreply2.DataBlock.Checksum = checksum2.DataBlock.Checksum;
-                checkreply2.DataBlock.Flags = checksum2.DataBlock.Flags;
-                checkreply2.DataBlock.MajorVersion = checksum2.DataBlock.MajorVersion;
-                checkreply2.DataBlock.MinorVersion = checksum2.DataBlock.MinorVersion;
-                checkreply2.DataBlock.PatchVersion = checksum2.DataBlock.PatchVersion;
-                checkreply2.DataBlock.ServerVersion = checksum2.DataBlock.ServerVersion;
-                checkreply2.TokenBlock.Token = checksum2.TokenBlock.Token;
-                this.SendPacket(checkreply2, epSender);
-            }
-            else
-            {
-            }
-
-            Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
-        }
-
-        private void SendPacket(Packet Pack, EndPoint endp)
-        {
-            if (!Pack.Header.Resent)
-            {
-                Pack.Header.Sequence = 1;
-            }
-
-            byte[] ZeroOutBuffer = new byte[4096];
-            byte[] sendbuffer;
-            sendbuffer = Pack.ToBytes();
-
-            try
-            {
-                if (Pack.Header.Zerocoded)
-                {
-                    int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer);
-                    this.SendPackTo(ZeroOutBuffer, packetsize, SocketFlags.None, endp);
-                }
-                else
-                {
-                    this.SendPackTo(sendbuffer, sendbuffer.Length, SocketFlags.None, endp);
-                }
-            }
-            catch (Exception)
-            {
-                OpenSim.Framework.Console.MainLog.Instance.Warn("OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection ");
-
-            }
-        }
-
-        private void SendPackTo(byte[] buffer, int size, SocketFlags flags, EndPoint endp)
-        {
-            this.Server.SendTo(buffer, size, flags, endp);
-        }
-  * }
- */
-    
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+namespace OpenSim.Framework.Servers
+{/*
+   public class CheckSumServer : UDPServerBase
+    {
+        //protected ConsoleBase m_log;
+
+        public CheckSumServer(int port)
+            : base(port)
+        {
+        }
+
+        protected override void OnReceivedData(IAsyncResult result)
+        {
+            ipeSender = new IPEndPoint(IPAddress.Any, 0);
+            epSender = (EndPoint)ipeSender;
+            Packet packet = null;
+            int numBytes = Server.EndReceiveFrom(result, ref epSender);
+            int packetEnd = numBytes - 1;
+
+            packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer);
+
+            if (packet.Type == PacketType.SecuredTemplateChecksumRequest)
+            {
+                SecuredTemplateChecksumRequestPacket checksum = (SecuredTemplateChecksumRequestPacket)packet;
+                TemplateChecksumReplyPacket checkreply = new TemplateChecksumReplyPacket();
+                checkreply.DataBlock.Checksum = 3220703154;//180572585;
+                checkreply.DataBlock.Flags = 0;
+                checkreply.DataBlock.MajorVersion = 1;
+                checkreply.DataBlock.MinorVersion = 15;
+                checkreply.DataBlock.PatchVersion = 0;
+                checkreply.DataBlock.ServerVersion = 0;
+                checkreply.TokenBlock.Token = checksum.TokenBlock.Token;
+                this.SendPacket(checkreply, epSender);
+
+                /*
+                //if we wanted to echo the the checksum/ version from the client (so that any client worked)
+                SecuredTemplateChecksumRequestPacket checkrequest = new SecuredTemplateChecksumRequestPacket();
+                checkrequest.TokenBlock.Token = checksum.TokenBlock.Token;
+                this.SendPacket(checkrequest, epSender);
+                
+            }
+            else if (packet.Type == PacketType.TemplateChecksumReply)
+            {
+                //echo back the client checksum reply (Hegemon's method)
+                TemplateChecksumReplyPacket checksum2 = (TemplateChecksumReplyPacket)packet;
+                TemplateChecksumReplyPacket checkreply2 = new TemplateChecksumReplyPacket();
+                checkreply2.DataBlock.Checksum = checksum2.DataBlock.Checksum;
+                checkreply2.DataBlock.Flags = checksum2.DataBlock.Flags;
+                checkreply2.DataBlock.MajorVersion = checksum2.DataBlock.MajorVersion;
+                checkreply2.DataBlock.MinorVersion = checksum2.DataBlock.MinorVersion;
+                checkreply2.DataBlock.PatchVersion = checksum2.DataBlock.PatchVersion;
+                checkreply2.DataBlock.ServerVersion = checksum2.DataBlock.ServerVersion;
+                checkreply2.TokenBlock.Token = checksum2.TokenBlock.Token;
+                this.SendPacket(checkreply2, epSender);
+            }
+            else
+            {
+            }
+
+            Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
+        }
+
+        private void SendPacket(Packet Pack, EndPoint endp)
+        {
+            if (!Pack.Header.Resent)
+            {
+                Pack.Header.Sequence = 1;
+            }
+
+            byte[] ZeroOutBuffer = new byte[4096];
+            byte[] sendbuffer;
+            sendbuffer = Pack.ToBytes();
+
+            try
+            {
+                if (Pack.Header.Zerocoded)
+                {
+                    int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer);
+                    this.SendPackTo(ZeroOutBuffer, packetsize, SocketFlags.None, endp);
+                }
+                else
+                {
+                    this.SendPackTo(sendbuffer, sendbuffer.Length, SocketFlags.None, endp);
+                }
+            }
+            catch (Exception)
+            {
+                OpenSim.Framework.Console.MainLog.Instance.Warn("OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection ");
+
+            }
+        }
+
+        private void SendPackTo(byte[] buffer, int size, SocketFlags flags, EndPoint endp)
+        {
+            this.Server.SendTo(buffer, size, flags, endp);
+        }
+  * }
+ */
+    
 }

+ 22 - 22
OpenSim/Framework/Servers/IStreamHandler.cs

@@ -1,22 +1,22 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.IO;
-
-namespace OpenSim.Framework.Servers
-{
-    public interface IStreamHandler
-    {
-        // Handle request stream, return byte array
-        byte[] Handle(string path, Stream request );
-        
-        // Return response content type
-        string ContentType { get; }
-        
-        // Return required http method
-        string HttpMethod { get;}
-
-        // Return path
-        string Path { get; }
-    }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+
+namespace OpenSim.Framework.Servers
+{
+    public interface IStreamHandler
+    {
+        // Handle request stream, return byte array
+        byte[] Handle(string path, Stream request );
+        
+        // Return response content type
+        string ContentType { get; }
+        
+        // Return required http method
+        string HttpMethod { get;}
+
+        // Return path
+        string Path { get; }
+    }
+}

+ 31 - 31
OpenSim/Framework/Servers/RestMethod.cs

@@ -1,31 +1,31 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-namespace OpenSim.Framework.Servers
-{
-    public delegate string RestMethod( string request, string path, string param );
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+namespace OpenSim.Framework.Servers
+{
+    public delegate string RestMethod( string request, string path, string param );
+}

+ 31 - 31
OpenSim/Framework/Servers/RestStreamHandler.cs

@@ -1,31 +1,31 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.IO;
-
-namespace OpenSim.Framework.Servers
-{
-    public class RestStreamHandler : BaseStreamHandler
-    {
-        RestMethod m_restMethod;
-
-        override public byte[] Handle(string path, Stream request )
-        {
-            Encoding encoding = Encoding.UTF8;
-            StreamReader streamReader = new StreamReader(request, encoding);
-
-            string requestBody = streamReader.ReadToEnd();
-            streamReader.Close();
-
-            string param = GetParam(path);
-            string responseString = m_restMethod(requestBody, path, param );
-
-            return Encoding.UTF8.GetBytes(responseString);
-        }
-
-        public RestStreamHandler(string httpMethod, string path, RestMethod restMethod) : base( httpMethod, path )
-        {
-            m_restMethod = restMethod;
-        }
-    }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+
+namespace OpenSim.Framework.Servers
+{
+    public class RestStreamHandler : BaseStreamHandler
+    {
+        RestMethod m_restMethod;
+
+        override public byte[] Handle(string path, Stream request )
+        {
+            Encoding encoding = Encoding.UTF8;
+            StreamReader streamReader = new StreamReader(request, encoding);
+
+            string requestBody = streamReader.ReadToEnd();
+            streamReader.Close();
+
+            string param = GetParam(path);
+            string responseString = m_restMethod(requestBody, path, param );
+
+            return Encoding.UTF8.GetBytes(responseString);
+        }
+
+        public RestStreamHandler(string httpMethod, string path, RestMethod restMethod) : base( httpMethod, path )
+        {
+            m_restMethod = restMethod;
+        }
+    }
+}

+ 87 - 87
OpenSim/Framework/Servers/UDPServerBase.cs

@@ -1,87 +1,87 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Net;
-using System.Net.Sockets;
-using libsecondlife.Packets;
-
-namespace OpenSim.Framework.Servers
-{
-    public class UDPServerBase
-    {
-        public Socket Server;
-        protected IPEndPoint ServerIncoming;
-        protected byte[] RecvBuffer = new byte[4096];
-        protected byte[] ZeroBuffer = new byte[8192];
-        protected IPEndPoint ipeSender;
-        protected EndPoint epSender;
-        protected AsyncCallback ReceivedData;
-        protected int listenPort;
-
-        public UDPServerBase(int port)
-        {
-            listenPort = port;
-        }
-
-        protected virtual void OnReceivedData(IAsyncResult result)
-        {
-            ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
-            epSender = (EndPoint)ipeSender;
-            Packet packet = null;
-            int numBytes = Server.EndReceiveFrom(result, ref epSender);
-            int packetEnd = numBytes - 1;
-
-            packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer);
-
-            Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
-        }
-
-        protected virtual void AddNewClient(Packet packet)
-        {
-        }
-
-        public virtual void ServerListener()
-        {
-
-            ServerIncoming = new IPEndPoint(IPAddress.Parse("0.0.0.0"), listenPort);
-            Server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
-            Server.Bind(ServerIncoming);
-
-            ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
-            epSender = (EndPoint)ipeSender;
-            ReceivedData = new AsyncCallback(this.OnReceivedData);
-            Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
-        }
-
-        public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)
-        {
-
-        }
-    }
-}
-
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Net;
+using System.Net.Sockets;
+using libsecondlife.Packets;
+
+namespace OpenSim.Framework.Servers
+{
+    public class UDPServerBase
+    {
+        public Socket Server;
+        protected IPEndPoint ServerIncoming;
+        protected byte[] RecvBuffer = new byte[4096];
+        protected byte[] ZeroBuffer = new byte[8192];
+        protected IPEndPoint ipeSender;
+        protected EndPoint epSender;
+        protected AsyncCallback ReceivedData;
+        protected int listenPort;
+
+        public UDPServerBase(int port)
+        {
+            listenPort = port;
+        }
+
+        protected virtual void OnReceivedData(IAsyncResult result)
+        {
+            ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
+            epSender = (EndPoint)ipeSender;
+            Packet packet = null;
+            int numBytes = Server.EndReceiveFrom(result, ref epSender);
+            int packetEnd = numBytes - 1;
+
+            packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer);
+
+            Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
+        }
+
+        protected virtual void AddNewClient(Packet packet)
+        {
+        }
+
+        public virtual void ServerListener()
+        {
+
+            ServerIncoming = new IPEndPoint(IPAddress.Parse("0.0.0.0"), listenPort);
+            Server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
+            Server.Bind(ServerIncoming);
+
+            ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
+            epSender = (EndPoint)ipeSender;
+            ReceivedData = new AsyncCallback(this.OnReceivedData);
+            Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
+        }
+
+        public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)
+        {
+
+        }
+    }
+}
+

+ 33 - 33
OpenSim/Framework/Servers/XmlRpcMethod.cs

@@ -1,33 +1,33 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using Nwc.XmlRpc;
-
-namespace OpenSim.Framework.Servers
-{
-    public delegate XmlRpcResponse XmlRpcMethod( XmlRpcRequest request );    
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using Nwc.XmlRpc;
+
+namespace OpenSim.Framework.Servers
+{
+    public delegate XmlRpcResponse XmlRpcMethod( XmlRpcRequest request );    
+}

+ 643 - 643
OpenSim/Framework/UserManager/LoginResponse.cs

@@ -1,643 +1,643 @@
-using System;
-using System.Collections;
-using libsecondlife;
-using Nwc.XmlRpc;
-using OpenSim.Framework.Console;
-
-namespace OpenSim.Framework.UserManagement
-{
-
-    /// <summary>
-    /// A temp class to handle login response.
-    /// Should make use of UserProfileManager where possible.
-    /// </summary>
-
-    public class LoginResponse
-    {
-        private Hashtable loginFlagsHash;
-        private Hashtable globalTexturesHash;
-        private Hashtable loginError;
-        private Hashtable eventCategoriesHash;
-        private Hashtable uiConfigHash;
-        private Hashtable classifiedCategoriesHash;
-
-        private ArrayList loginFlags;
-        private ArrayList globalTextures;
-        private ArrayList eventCategories;
-        private ArrayList uiConfig;
-        private ArrayList classifiedCategories;
-        private ArrayList inventoryRoot;
-        private ArrayList initialOutfit;
-        private ArrayList agentInventory;
-
-        private UserInfo userProfile;
-
-        private LLUUID agentID;
-        private LLUUID sessionID;
-        private LLUUID secureSessionID;
-
-        // Login Flags
-        private string dst;
-        private string stipendSinceLogin;
-        private string gendered;
-        private string everLoggedIn;
-        private string login;
-        private int simPort;
-        private string simAddress;
-        private string agentAccess;
-        private Int32 circuitCode;
-        private uint regionX;
-        private uint regionY;
-
-        // Login
-        private string firstname;
-        private string lastname;
-
-        // Global Textures
-        private string sunTexture;
-        private string cloudTexture;
-        private string moonTexture;
-
-        // Error Flags
-        private string errorReason;
-        private string errorMessage;
-
-        // Response
-        private XmlRpcResponse xmlRpcResponse;
-        private XmlRpcResponse defaultXmlRpcResponse;
-
-        private string welcomeMessage;
-        private string startLocation;
-        private string allowFirstLife;
-        private string home;
-        private string seedCapability;
-        private string lookAt;
-
-        public LoginResponse()
-        {
-            this.loginFlags = new ArrayList();
-            this.globalTextures = new ArrayList();
-            this.eventCategories = new ArrayList();
-            this.uiConfig = new ArrayList();
-            this.classifiedCategories = new ArrayList();
-
-            this.loginError = new Hashtable();
-            this.eventCategoriesHash = new Hashtable();
-            this.classifiedCategoriesHash = new Hashtable();
-            this.uiConfigHash = new Hashtable();
-
-            this.defaultXmlRpcResponse = new XmlRpcResponse();
-            this.userProfile = new UserInfo();
-            this.inventoryRoot = new ArrayList();
-            this.initialOutfit = new ArrayList();
-            this.agentInventory = new ArrayList();
-
-            this.xmlRpcResponse = new XmlRpcResponse();
-            this.defaultXmlRpcResponse = new XmlRpcResponse();
-
-            this.SetDefaultValues();
-        } // LoginServer
-
-        public void SetDefaultValues()
-        {
-                this.DST = "N";
-                this.StipendSinceLogin = "N";
-                this.Gendered = "Y";
-                this.EverLoggedIn = "Y";
-                this.login = "false";
-                this.firstname = "Test";
-                this.lastname = "User";
-                this.agentAccess = "M";
-                this.startLocation = "last";
-                this.allowFirstLife = "Y";
-
-                this.SunTexture = "cce0f112-878f-4586-a2e2-a8f104bba271";
-                this.CloudTexture = "fc4b9f0b-d008-45c6-96a4-01dd947ac621";
-                this.MoonTexture = "fc4b9f0b-d008-45c6-96a4-01dd947ac621";
-
-                this.ErrorMessage = "You have entered an invalid name/password combination.  Check Caps/lock.";
-                this.ErrorReason = "key";
-                this.welcomeMessage = "Welcome to OpenSim!";
-                this.seedCapability = "";
-                this.home = "{'region_handle':[r" + (1000 * 256).ToString() + ",r" + (1000 * 256).ToString() + "], 'position':[r" + this.userProfile.homepos.X.ToString() + ",r" + this.userProfile.homepos.Y.ToString() + ",r" + this.userProfile.homepos.Z.ToString() + "], 'look_at':[r" + this.userProfile.homelookat.X.ToString() + ",r" + this.userProfile.homelookat.Y.ToString() + ",r" + this.userProfile.homelookat.Z.ToString() + "]}";
-                this.lookAt = "[r0.99949799999999999756,r0.03166859999999999814,r0]";
-                this.RegionX = (uint)255232;
-                this.RegionY = (uint)254976;
-
-                // Classifieds;
-                this.AddClassifiedCategory((Int32)1, "Shopping");
-                this.AddClassifiedCategory((Int32)2, "Land Rental");
-                this.AddClassifiedCategory((Int32)3, "Property Rental");
-                this.AddClassifiedCategory((Int32)4, "Special Attraction");
-                this.AddClassifiedCategory((Int32)5, "New Products");
-                this.AddClassifiedCategory((Int32)6, "Employment");
-                this.AddClassifiedCategory((Int32)7, "Wanted");
-                this.AddClassifiedCategory((Int32)8, "Service");
-                this.AddClassifiedCategory((Int32)9, "Personal");
-                
-
-                this.SessionID = LLUUID.Random();
-                this.SecureSessionID = LLUUID.Random();
-                this.AgentID = LLUUID.Random();
-
-                Hashtable InitialOutfitHash = new Hashtable();
-                InitialOutfitHash["folder_name"] = "Nightclub Female";
-                InitialOutfitHash["gender"] = "female";
-                this.initialOutfit.Add(InitialOutfitHash);
-          
-
-        } // SetDefaultValues
-
-        #region Login Failure Methods
-        public XmlRpcResponse GenerateFailureResponse(string reason, string message, string login)
-        {
-            // Overwrite any default values;
-            this.xmlRpcResponse = new XmlRpcResponse();
-
-            // Ensure Login Failed message/reason;
-            this.ErrorMessage = message;
-            this.ErrorReason = reason;
-
-            this.loginError["reason"] = this.ErrorReason;
-            this.loginError["message"] = this.ErrorMessage;
-            this.loginError["login"] = login;
-            this.xmlRpcResponse.Value = this.loginError;
-            return (this.xmlRpcResponse);
-        } // GenerateResponse
-
-        public XmlRpcResponse CreateFailedResponse()
-        {
-            return (this.CreateLoginFailedResponse());
-        } // CreateErrorConnectingToGridResponse()
-
-        public XmlRpcResponse CreateLoginFailedResponse()
-        {
-            return (this.GenerateFailureResponse("key", "Could not authenticate your avatar. Please check your username and password, and check the grid if problems persist.", "false"));
-        } // LoginFailedResponse
-
-        public XmlRpcResponse CreateAlreadyLoggedInResponse()
-        {
-            return (this.GenerateFailureResponse("presence", "You appear to be already logged in, if this is not the case please wait for your session to timeout, if this takes longer than a few minutes please contact the grid owner", "false"));
-        } // CreateAlreadyLoggedInResponse()
-
-        public XmlRpcResponse CreateDeadRegionResponse()
-        {
-            return (this.GenerateFailureResponse("key", "The region you are attempting to log into is not responding. Please select another region and try again.", "false"));
-        }
-
-         public XmlRpcResponse CreateGridErrorResponse()
-        {
-            return (this.GenerateFailureResponse("key", "Error connecting to grid. Could not percieve credentials from login XML.", "false"));
-        }
-        
-        #endregion
-
-        public XmlRpcResponse ToXmlRpcResponse()
-        {
-            try
-            {
-
-                Hashtable responseData = new Hashtable();
-
-                this.loginFlagsHash = new Hashtable();
-                this.loginFlagsHash["daylight_savings"] = this.DST;
-                this.loginFlagsHash["stipend_since_login"] = this.StipendSinceLogin;
-                this.loginFlagsHash["gendered"] = this.Gendered;
-                this.loginFlagsHash["ever_logged_in"] = this.EverLoggedIn;
-                this.loginFlags.Add(this.loginFlagsHash);
-
-                responseData["first_name"] = this.Firstname;
-                responseData["last_name"] = this.Lastname;
-                responseData["agent_access"] = this.agentAccess;
-
-                this.globalTexturesHash = new Hashtable();
-                this.globalTexturesHash["sun_texture_id"] = this.SunTexture;
-                this.globalTexturesHash["cloud_texture_id"] = this.CloudTexture;
-                this.globalTexturesHash["moon_texture_id"] = this.MoonTexture;
-                this.globalTextures.Add(this.globalTexturesHash);
-                this.eventCategories.Add(this.eventCategoriesHash);
-
-                this.AddToUIConfig("allow_first_life", this.allowFirstLife);
-                this.uiConfig.Add(this.uiConfigHash);
-
-                responseData["sim_port"] =(Int32) this.SimPort;
-                responseData["sim_ip"] = this.SimAddress;
-                
-                MainLog.Instance.Warn("SIM IP: " + responseData["sim_ip"] + "; SIM PORT: " + responseData["sim_port"]);
-                
-                responseData["agent_id"] = this.AgentID.ToStringHyphenated();
-                responseData["session_id"] = this.SessionID.ToStringHyphenated();
-                responseData["secure_session_id"] = this.SecureSessionID.ToStringHyphenated();
-                responseData["circuit_code"] = this.CircuitCode;
-                responseData["seconds_since_epoch"] = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
-                responseData["login-flags"] = this.loginFlags;
-                responseData["global-textures"] = this.globalTextures;
-                responseData["seed_capability"] = this.seedCapability;
-
-                responseData["event_categories"] = this.eventCategories;
-                responseData["event_notifications"] = new ArrayList(); // todo
-                responseData["classified_categories"] = this.classifiedCategories;
-                responseData["ui-config"] = this.uiConfig;
-
-                responseData["inventory-skeleton"] = this.agentInventory;
-                responseData["inventory-skel-lib"] = new ArrayList(); // todo
-                responseData["inventory-root"] = this.inventoryRoot;
-                responseData["gestures"] = new ArrayList(); // todo
-                responseData["inventory-lib-owner"] = new ArrayList(); // todo
-                responseData["initial-outfit"] = this.initialOutfit;
-                responseData["start_location"] = this.startLocation;
-                responseData["seed_capability"] = this.seedCapability;
-                responseData["home"] = this.home;
-                responseData["look_at"] = this.lookAt;
-                responseData["message"] = this.welcomeMessage;
-                responseData["region_x"] = (Int32)this.RegionX * 256;
-                responseData["region_y"] = (Int32)this.RegionY * 256;
-
-                //responseData["inventory-lib-root"] = new ArrayList(); // todo
-                //responseData["buddy-list"] = new ArrayList(); // todo
-
-                responseData["login"] = "true";
-                this.xmlRpcResponse.Value = responseData;
-
-                return (this.xmlRpcResponse);
-            }
-            catch (Exception e)
-            {
-                MainLog.Instance.WriteLine(
-                    LogPriority.LOW,
-                    "LoginResponse: Error creating XML-RPC Response: " + e.Message
-                );
-                return (this.GenerateFailureResponse("Internal Error", "Error generating Login Response", "false"));
-
-            }
-
-        } // ToXmlRpcResponse
-
-        public void SetEventCategories(string category, string value)
-        {
-            this.eventCategoriesHash[category] = value;
-        } // SetEventCategories
-
-        public void AddToUIConfig(string itemName, string item)
-        {
-            this.uiConfigHash[itemName] = item;
-        } // SetUIConfig
-
-        public void AddClassifiedCategory(Int32 ID, string categoryName)
-        {
-            this.classifiedCategoriesHash["category_name"] = categoryName;
-            this.classifiedCategoriesHash["category_id"] = ID;
-            this.classifiedCategories.Add(this.classifiedCategoriesHash);
-            // this.classifiedCategoriesHash.Clear();
-        } // SetClassifiedCategory
-
-        #region Properties
-        public string Login
-        {
-            get
-            {
-                return this.login;
-            }
-            set
-            {
-                this.login = value;
-            }
-        } // Login
-
-        public string DST
-        {
-            get
-            {
-                return this.dst;
-            }
-            set
-            {
-                this.dst = value;
-            }
-        } // DST
-
-        public string StipendSinceLogin
-        {
-            get
-            {
-                return this.stipendSinceLogin;
-            }
-            set
-            {
-                this.stipendSinceLogin = value;
-            }
-        } // StipendSinceLogin
-
-        public string Gendered
-        {
-            get
-            {
-                return this.gendered;
-            }
-            set
-            {
-                this.gendered = value;
-            }
-        } // Gendered
-
-        public string EverLoggedIn
-        {
-            get
-            {
-                return this.everLoggedIn;
-            }
-            set
-            {
-                this.everLoggedIn = value;
-            }
-        } // EverLoggedIn
-
-        public int SimPort
-        {
-            get
-            {
-                return this.simPort;
-            }
-            set
-            {
-                this.simPort = value;
-            }
-        } // SimPort
-
-        public string SimAddress
-        {
-            get
-            {
-                return this.simAddress;
-            }
-            set
-            {
-                this.simAddress = value;
-            }
-        } // SimAddress
-
-        public LLUUID AgentID
-        {
-            get
-            {
-                return this.agentID;
-            }
-            set
-            {
-                this.agentID = value;
-            }
-        } // AgentID
-
-        public LLUUID SessionID
-        {
-            get
-            {
-                return this.sessionID;
-            }
-            set
-            {
-                this.sessionID = value;
-            }
-        } // SessionID
-
-        public LLUUID SecureSessionID
-        {
-            get
-            {
-                return this.secureSessionID;
-            }
-            set
-            {
-                this.secureSessionID = value;
-            }
-        } // SecureSessionID
-
-        public Int32 CircuitCode
-        {
-            get
-            {
-                return this.circuitCode;
-            }
-            set
-            {
-                this.circuitCode = value;
-            }
-        } // CircuitCode
-
-        public uint RegionX
-        {
-            get
-            {
-                return this.regionX;
-            }
-            set
-            {
-                this.regionX = value;
-            }
-        } // RegionX
-
-        public uint RegionY
-        {
-            get
-            {
-                return this.regionY;
-            }
-            set
-            {
-                this.regionY = value;
-            }
-        } // RegionY
-
-        public string SunTexture
-        {
-            get
-            {
-                return this.sunTexture;
-            }
-            set
-            {
-                this.sunTexture = value;
-            }
-        } // SunTexture
-
-        public string CloudTexture
-        {
-            get
-            {
-                return this.cloudTexture;
-            }
-            set
-            {
-                this.cloudTexture = value;
-            }
-        } // CloudTexture
-
-        public string MoonTexture
-        {
-            get
-            {
-                return this.moonTexture;
-            }
-            set
-            {
-                this.moonTexture = value;
-            }
-        } // MoonTexture
-
-        public string Firstname
-        {
-            get
-            {
-                return this.firstname;
-            }
-            set
-            {
-                this.firstname = value;
-            }
-        } // Firstname
-
-        public string Lastname
-        {
-            get
-            {
-                return this.lastname;
-            }
-            set
-            {
-                this.lastname = value;
-            }
-        } // Lastname
-
-        public string AgentAccess
-        {
-            get
-            {
-                return this.agentAccess;
-            }
-            set
-            {
-                this.agentAccess = value;
-            }
-        }
-
-        public string StartLocation
-        {
-            get
-            {
-                return this.startLocation;
-            }
-            set
-            {
-                this.startLocation = value;
-            }
-        } // StartLocation
-
-        public string LookAt
-        {
-            get
-            {
-                return this.lookAt;
-            }
-            set
-            {
-                this.lookAt = value;
-            }
-        }
-
-        public string SeedCapability
-        {
-            get
-            {
-                return this.seedCapability;
-            }
-            set
-            {
-                this.seedCapability = value;
-            }
-        } // SeedCapability
-
-        public string ErrorReason
-        {
-            get
-            {
-                return this.errorReason;
-            }
-            set
-            {
-                this.errorReason = value;
-            }
-        } // ErrorReason
-
-        public string ErrorMessage
-        {
-            get
-            {
-                return this.errorMessage;
-            }
-            set
-            {
-                this.errorMessage = value;
-            }
-        } // ErrorMessage
-
-        public ArrayList InventoryRoot
-        {
-            get
-            {
-                return this.inventoryRoot;
-            }
-            set
-            {
-                this.inventoryRoot = value;
-            }
-        }
-
-        public ArrayList InventorySkeleton
-        {
-            get
-            {
-                return this.agentInventory;
-            }
-            set
-            {
-                this.agentInventory = value;
-            }
-        }
-
-        public string Home
-        {
-            get
-            {
-                return this.home;
-            }
-            set
-            {
-                this.home = value;
-            }
-        }
-
-        public string Message
-        {
-            get
-            {
-                return this.welcomeMessage;
-            }
-            set
-            {
-                this.welcomeMessage = value;
-            }
-        }
-        #endregion
-
-
-        public class UserInfo
-        {
-            public string firstname;
-            public string lastname;
-            public ulong homeregionhandle;
-            public LLVector3 homepos;
-            public LLVector3 homelookat;
-        }
-    }
-}
-
+using System;
+using System.Collections;
+using libsecondlife;
+using Nwc.XmlRpc;
+using OpenSim.Framework.Console;
+
+namespace OpenSim.Framework.UserManagement
+{
+
+    /// <summary>
+    /// A temp class to handle login response.
+    /// Should make use of UserProfileManager where possible.
+    /// </summary>
+
+    public class LoginResponse
+    {
+        private Hashtable loginFlagsHash;
+        private Hashtable globalTexturesHash;
+        private Hashtable loginError;
+        private Hashtable eventCategoriesHash;
+        private Hashtable uiConfigHash;
+        private Hashtable classifiedCategoriesHash;
+
+        private ArrayList loginFlags;
+        private ArrayList globalTextures;
+        private ArrayList eventCategories;
+        private ArrayList uiConfig;
+        private ArrayList classifiedCategories;
+        private ArrayList inventoryRoot;
+        private ArrayList initialOutfit;
+        private ArrayList agentInventory;
+
+        private UserInfo userProfile;
+
+        private LLUUID agentID;
+        private LLUUID sessionID;
+        private LLUUID secureSessionID;
+
+        // Login Flags
+        private string dst;
+        private string stipendSinceLogin;
+        private string gendered;
+        private string everLoggedIn;
+        private string login;
+        private int simPort;
+        private string simAddress;
+        private string agentAccess;
+        private Int32 circuitCode;
+        private uint regionX;
+        private uint regionY;
+
+        // Login
+        private string firstname;
+        private string lastname;
+
+        // Global Textures
+        private string sunTexture;
+        private string cloudTexture;
+        private string moonTexture;
+
+        // Error Flags
+        private string errorReason;
+        private string errorMessage;
+
+        // Response
+        private XmlRpcResponse xmlRpcResponse;
+        private XmlRpcResponse defaultXmlRpcResponse;
+
+        private string welcomeMessage;
+        private string startLocation;
+        private string allowFirstLife;
+        private string home;
+        private string seedCapability;
+        private string lookAt;
+
+        public LoginResponse()
+        {
+            this.loginFlags = new ArrayList();
+            this.globalTextures = new ArrayList();
+            this.eventCategories = new ArrayList();
+            this.uiConfig = new ArrayList();
+            this.classifiedCategories = new ArrayList();
+
+            this.loginError = new Hashtable();
+            this.eventCategoriesHash = new Hashtable();
+            this.classifiedCategoriesHash = new Hashtable();
+            this.uiConfigHash = new Hashtable();
+
+            this.defaultXmlRpcResponse = new XmlRpcResponse();
+            this.userProfile = new UserInfo();
+            this.inventoryRoot = new ArrayList();
+            this.initialOutfit = new ArrayList();
+            this.agentInventory = new ArrayList();
+
+            this.xmlRpcResponse = new XmlRpcResponse();
+            this.defaultXmlRpcResponse = new XmlRpcResponse();
+
+            this.SetDefaultValues();
+        } // LoginServer
+
+        public void SetDefaultValues()
+        {
+                this.DST = "N";
+                this.StipendSinceLogin = "N";
+                this.Gendered = "Y";
+                this.EverLoggedIn = "Y";
+                this.login = "false";
+                this.firstname = "Test";
+                this.lastname = "User";
+                this.agentAccess = "M";
+                this.startLocation = "last";
+                this.allowFirstLife = "Y";
+
+                this.SunTexture = "cce0f112-878f-4586-a2e2-a8f104bba271";
+                this.CloudTexture = "fc4b9f0b-d008-45c6-96a4-01dd947ac621";
+                this.MoonTexture = "fc4b9f0b-d008-45c6-96a4-01dd947ac621";
+
+                this.ErrorMessage = "You have entered an invalid name/password combination.  Check Caps/lock.";
+                this.ErrorReason = "key";
+                this.welcomeMessage = "Welcome to OpenSim!";
+                this.seedCapability = "";
+                this.home = "{'region_handle':[r" + (1000 * 256).ToString() + ",r" + (1000 * 256).ToString() + "], 'position':[r" + this.userProfile.homepos.X.ToString() + ",r" + this.userProfile.homepos.Y.ToString() + ",r" + this.userProfile.homepos.Z.ToString() + "], 'look_at':[r" + this.userProfile.homelookat.X.ToString() + ",r" + this.userProfile.homelookat.Y.ToString() + ",r" + this.userProfile.homelookat.Z.ToString() + "]}";
+                this.lookAt = "[r0.99949799999999999756,r0.03166859999999999814,r0]";
+                this.RegionX = (uint)255232;
+                this.RegionY = (uint)254976;
+
+                // Classifieds;
+                this.AddClassifiedCategory((Int32)1, "Shopping");
+                this.AddClassifiedCategory((Int32)2, "Land Rental");
+                this.AddClassifiedCategory((Int32)3, "Property Rental");
+                this.AddClassifiedCategory((Int32)4, "Special Attraction");
+                this.AddClassifiedCategory((Int32)5, "New Products");
+                this.AddClassifiedCategory((Int32)6, "Employment");
+                this.AddClassifiedCategory((Int32)7, "Wanted");
+                this.AddClassifiedCategory((Int32)8, "Service");
+                this.AddClassifiedCategory((Int32)9, "Personal");
+                
+
+                this.SessionID = LLUUID.Random();
+                this.SecureSessionID = LLUUID.Random();
+                this.AgentID = LLUUID.Random();
+
+                Hashtable InitialOutfitHash = new Hashtable();
+                InitialOutfitHash["folder_name"] = "Nightclub Female";
+                InitialOutfitHash["gender"] = "female";
+                this.initialOutfit.Add(InitialOutfitHash);
+          
+
+        } // SetDefaultValues
+
+        #region Login Failure Methods
+        public XmlRpcResponse GenerateFailureResponse(string reason, string message, string login)
+        {
+            // Overwrite any default values;
+            this.xmlRpcResponse = new XmlRpcResponse();
+
+            // Ensure Login Failed message/reason;
+            this.ErrorMessage = message;
+            this.ErrorReason = reason;
+
+            this.loginError["reason"] = this.ErrorReason;
+            this.loginError["message"] = this.ErrorMessage;
+            this.loginError["login"] = login;
+            this.xmlRpcResponse.Value = this.loginError;
+            return (this.xmlRpcResponse);
+        } // GenerateResponse
+
+        public XmlRpcResponse CreateFailedResponse()
+        {
+            return (this.CreateLoginFailedResponse());
+        } // CreateErrorConnectingToGridResponse()
+
+        public XmlRpcResponse CreateLoginFailedResponse()
+        {
+            return (this.GenerateFailureResponse("key", "Could not authenticate your avatar. Please check your username and password, and check the grid if problems persist.", "false"));
+        } // LoginFailedResponse
+
+        public XmlRpcResponse CreateAlreadyLoggedInResponse()
+        {
+            return (this.GenerateFailureResponse("presence", "You appear to be already logged in, if this is not the case please wait for your session to timeout, if this takes longer than a few minutes please contact the grid owner", "false"));
+        } // CreateAlreadyLoggedInResponse()
+
+        public XmlRpcResponse CreateDeadRegionResponse()
+        {
+            return (this.GenerateFailureResponse("key", "The region you are attempting to log into is not responding. Please select another region and try again.", "false"));
+        }
+
+         public XmlRpcResponse CreateGridErrorResponse()
+        {
+            return (this.GenerateFailureResponse("key", "Error connecting to grid. Could not percieve credentials from login XML.", "false"));
+        }
+        
+        #endregion
+
+        public XmlRpcResponse ToXmlRpcResponse()
+        {
+            try
+            {
+
+                Hashtable responseData = new Hashtable();
+
+                this.loginFlagsHash = new Hashtable();
+                this.loginFlagsHash["daylight_savings"] = this.DST;
+                this.loginFlagsHash["stipend_since_login"] = this.StipendSinceLogin;
+                this.loginFlagsHash["gendered"] = this.Gendered;
+                this.loginFlagsHash["ever_logged_in"] = this.EverLoggedIn;
+                this.loginFlags.Add(this.loginFlagsHash);
+
+                responseData["first_name"] = this.Firstname;
+                responseData["last_name"] = this.Lastname;
+                responseData["agent_access"] = this.agentAccess;
+
+                this.globalTexturesHash = new Hashtable();
+                this.globalTexturesHash["sun_texture_id"] = this.SunTexture;
+                this.globalTexturesHash["cloud_texture_id"] = this.CloudTexture;
+                this.globalTexturesHash["moon_texture_id"] = this.MoonTexture;
+                this.globalTextures.Add(this.globalTexturesHash);
+                this.eventCategories.Add(this.eventCategoriesHash);
+
+                this.AddToUIConfig("allow_first_life", this.allowFirstLife);
+                this.uiConfig.Add(this.uiConfigHash);
+
+                responseData["sim_port"] =(Int32) this.SimPort;
+                responseData["sim_ip"] = this.SimAddress;
+                
+                MainLog.Instance.Warn("SIM IP: " + responseData["sim_ip"] + "; SIM PORT: " + responseData["sim_port"]);
+                
+                responseData["agent_id"] = this.AgentID.ToStringHyphenated();
+                responseData["session_id"] = this.SessionID.ToStringHyphenated();
+                responseData["secure_session_id"] = this.SecureSessionID.ToStringHyphenated();
+                responseData["circuit_code"] = this.CircuitCode;
+                responseData["seconds_since_epoch"] = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
+                responseData["login-flags"] = this.loginFlags;
+                responseData["global-textures"] = this.globalTextures;
+                responseData["seed_capability"] = this.seedCapability;
+
+                responseData["event_categories"] = this.eventCategories;
+                responseData["event_notifications"] = new ArrayList(); // todo
+                responseData["classified_categories"] = this.classifiedCategories;
+                responseData["ui-config"] = this.uiConfig;
+
+                responseData["inventory-skeleton"] = this.agentInventory;
+                responseData["inventory-skel-lib"] = new ArrayList(); // todo
+                responseData["inventory-root"] = this.inventoryRoot;
+                responseData["gestures"] = new ArrayList(); // todo
+                responseData["inventory-lib-owner"] = new ArrayList(); // todo
+                responseData["initial-outfit"] = this.initialOutfit;
+                responseData["start_location"] = this.startLocation;
+                responseData["seed_capability"] = this.seedCapability;
+                responseData["home"] = this.home;
+                responseData["look_at"] = this.lookAt;
+                responseData["message"] = this.welcomeMessage;
+                responseData["region_x"] = (Int32)this.RegionX * 256;
+                responseData["region_y"] = (Int32)this.RegionY * 256;
+
+                //responseData["inventory-lib-root"] = new ArrayList(); // todo
+                //responseData["buddy-list"] = new ArrayList(); // todo
+
+                responseData["login"] = "true";
+                this.xmlRpcResponse.Value = responseData;
+
+                return (this.xmlRpcResponse);
+            }
+            catch (Exception e)
+            {
+                MainLog.Instance.WriteLine(
+                    LogPriority.LOW,
+                    "LoginResponse: Error creating XML-RPC Response: " + e.Message
+                );
+                return (this.GenerateFailureResponse("Internal Error", "Error generating Login Response", "false"));
+
+            }
+
+        } // ToXmlRpcResponse
+
+        public void SetEventCategories(string category, string value)
+        {
+            this.eventCategoriesHash[category] = value;
+        } // SetEventCategories
+
+        public void AddToUIConfig(string itemName, string item)
+        {
+            this.uiConfigHash[itemName] = item;
+        } // SetUIConfig
+
+        public void AddClassifiedCategory(Int32 ID, string categoryName)
+        {
+            this.classifiedCategoriesHash["category_name"] = categoryName;
+            this.classifiedCategoriesHash["category_id"] = ID;
+            this.classifiedCategories.Add(this.classifiedCategoriesHash);
+            // this.classifiedCategoriesHash.Clear();
+        } // SetClassifiedCategory
+
+        #region Properties
+        public string Login
+        {
+            get
+            {
+                return this.login;
+            }
+            set
+            {
+                this.login = value;
+            }
+        } // Login
+
+        public string DST
+        {
+            get
+            {
+                return this.dst;
+            }
+            set
+            {
+                this.dst = value;
+            }
+        } // DST
+
+        public string StipendSinceLogin
+        {
+            get
+            {
+                return this.stipendSinceLogin;
+            }
+            set
+            {
+                this.stipendSinceLogin = value;
+            }
+        } // StipendSinceLogin
+
+        public string Gendered
+        {
+            get
+            {
+                return this.gendered;
+            }
+            set
+            {
+                this.gendered = value;
+            }
+        } // Gendered
+
+        public string EverLoggedIn
+        {
+            get
+            {
+                return this.everLoggedIn;
+            }
+            set
+            {
+                this.everLoggedIn = value;
+            }
+        } // EverLoggedIn
+
+        public int SimPort
+        {
+            get
+            {
+                return this.simPort;
+            }
+            set
+            {
+                this.simPort = value;
+            }
+        } // SimPort
+
+        public string SimAddress
+        {
+            get
+            {
+                return this.simAddress;
+            }
+            set
+            {
+                this.simAddress = value;
+            }
+        } // SimAddress
+
+        public LLUUID AgentID
+        {
+            get
+            {
+                return this.agentID;
+            }
+            set
+            {
+                this.agentID = value;
+            }
+        } // AgentID
+
+        public LLUUID SessionID
+        {
+            get
+            {
+                return this.sessionID;
+            }
+            set
+            {
+                this.sessionID = value;
+            }
+        } // SessionID
+
+        public LLUUID SecureSessionID
+        {
+            get
+            {
+                return this.secureSessionID;
+            }
+            set
+            {
+                this.secureSessionID = value;
+            }
+        } // SecureSessionID
+
+        public Int32 CircuitCode
+        {
+            get
+            {
+                return this.circuitCode;
+            }
+            set
+            {
+                this.circuitCode = value;
+            }
+        } // CircuitCode
+
+        public uint RegionX
+        {
+            get
+            {
+                return this.regionX;
+            }
+            set
+            {
+                this.regionX = value;
+            }
+        } // RegionX
+
+        public uint RegionY
+        {
+            get
+            {
+                return this.regionY;
+            }
+            set
+            {
+                this.regionY = value;
+            }
+        } // RegionY
+
+        public string SunTexture
+        {
+            get
+            {
+                return this.sunTexture;
+            }
+            set
+            {
+                this.sunTexture = value;
+            }
+        } // SunTexture
+
+        public string CloudTexture
+        {
+            get
+            {
+                return this.cloudTexture;
+            }
+            set
+            {
+                this.cloudTexture = value;
+            }
+        } // CloudTexture
+
+        public string MoonTexture
+        {
+            get
+            {
+                return this.moonTexture;
+            }
+            set
+            {
+                this.moonTexture = value;
+            }
+        } // MoonTexture
+
+        public string Firstname
+        {
+            get
+            {
+                return this.firstname;
+            }
+            set
+            {
+                this.firstname = value;
+            }
+        } // Firstname
+
+        public string Lastname
+        {
+            get
+            {
+                return this.lastname;
+            }
+            set
+            {
+                this.lastname = value;
+            }
+        } // Lastname
+
+        public string AgentAccess
+        {
+            get
+            {
+                return this.agentAccess;
+            }
+            set
+            {
+                this.agentAccess = value;
+            }
+        }
+
+        public string StartLocation
+        {
+            get
+            {
+                return this.startLocation;
+            }
+            set
+            {
+                this.startLocation = value;
+            }
+        } // StartLocation
+
+        public string LookAt
+        {
+            get
+            {
+                return this.lookAt;
+            }
+            set
+            {
+                this.lookAt = value;
+            }
+        }
+
+        public string SeedCapability
+        {
+            get
+            {
+                return this.seedCapability;
+            }
+            set
+            {
+                this.seedCapability = value;
+            }
+        } // SeedCapability
+
+        public string ErrorReason
+        {
+            get
+            {
+                return this.errorReason;
+            }
+            set
+            {
+                this.errorReason = value;
+            }
+        } // ErrorReason
+
+        public string ErrorMessage
+        {
+            get
+            {
+                return this.errorMessage;
+            }
+            set
+            {
+                this.errorMessage = value;
+            }
+        } // ErrorMessage
+
+        public ArrayList InventoryRoot
+        {
+            get
+            {
+                return this.inventoryRoot;
+            }
+            set
+            {
+                this.inventoryRoot = value;
+            }
+        }
+
+        public ArrayList InventorySkeleton
+        {
+            get
+            {
+                return this.agentInventory;
+            }
+            set
+            {
+                this.agentInventory = value;
+            }
+        }
+
+        public string Home
+        {
+            get
+            {
+                return this.home;
+            }
+            set
+            {
+                this.home = value;
+            }
+        }
+
+        public string Message
+        {
+            get
+            {
+                return this.welcomeMessage;
+            }
+            set
+            {
+                this.welcomeMessage = value;
+            }
+        }
+        #endregion
+
+
+        public class UserInfo
+        {
+            public string firstname;
+            public string lastname;
+            public ulong homeregionhandle;
+            public LLVector3 homepos;
+            public LLVector3 homelookat;
+        }
+    }
+}
+

+ 631 - 631
OpenSim/Framework/UserManager/UserManagerBase.cs

@@ -1,631 +1,631 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Reflection;
-using System.Security.Cryptography;
-using libsecondlife;
-using Nwc.XmlRpc;
-using OpenSim.Framework.Console;
-using OpenSim.Framework.Data;
-using OpenSim.Framework.Interfaces;
-using OpenSim.Framework.Inventory;
-using OpenSim.Framework.Utilities;
-
-namespace OpenSim.Framework.UserManagement
-{
-    public abstract class UserManagerBase
-    {
-        public UserConfig _config;
-        Dictionary<string, IUserData> _plugins = new Dictionary<string, IUserData>();
-
-        /// <summary>
-        /// Adds a new user server plugin - user servers will be requested in the order they were loaded.
-        /// </summary>
-        /// <param name="FileName">The filename to the user server plugin DLL</param>
-        public void AddPlugin(string FileName)
-        {
-            MainLog.Instance.Verbose( "Userstorage: Attempting to load " + FileName);
-            Assembly pluginAssembly = Assembly.LoadFrom(FileName);
-
-            MainLog.Instance.Verbose( "Userstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
-            foreach (Type pluginType in pluginAssembly.GetTypes())
-            {
-                if (!pluginType.IsAbstract)
-                {
-                    Type typeInterface = pluginType.GetInterface("IUserData", true);
-
-                    if (typeInterface != null)
-                    {
-                        IUserData plug = (IUserData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
-                        plug.Initialise();
-                        this._plugins.Add(plug.getName(), plug);
-                        MainLog.Instance.Verbose( "Userstorage: Added IUserData Interface");
-                    }
-
-                    typeInterface = null;
-                }
-            }
-
-            pluginAssembly = null;
-        }
-
-        #region Get UserProfile 
-        /// <summary>
-        /// Loads a user profile from a database by UUID
-        /// </summary>
-        /// <param name="uuid">The target UUID</param>
-        /// <returns>A user profile</returns>
-        public UserProfileData getUserProfile(LLUUID uuid)
-        {
-            foreach (KeyValuePair<string, IUserData> plugin in _plugins)
-            {
-                try
-                {
-                    UserProfileData profile = plugin.Value.getUserByUUID(uuid);
-                    profile.currentAgent = getUserAgent(profile.UUID);
-                    return profile;
-                }
-                catch (Exception e)
-                {
-                    MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
-                }
-            }
-
-            return null;
-        }
-
-
-        /// <summary>
-        /// Loads a user profile by name
-        /// </summary>
-        /// <param name="name">The target name</param>
-        /// <returns>A user profile</returns>
-        public UserProfileData getUserProfile(string name)
-        {
-            foreach (KeyValuePair<string, IUserData> plugin in _plugins)
-            {
-                try
-                {
-                    UserProfileData profile = plugin.Value.getUserByName(name);
-                    profile.currentAgent = getUserAgent(profile.UUID);
-                    return profile;
-                }
-                catch (Exception e)
-                {
-                    System.Console.WriteLine("EEK!");
-                    MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
-                }
-            }
-
-            return null;
-        }
-
-        /// <summary>
-        /// Loads a user profile by name
-        /// </summary>
-        /// <param name="fname">First name</param>
-        /// <param name="lname">Last name</param>
-        /// <returns>A user profile</returns>
-        public UserProfileData getUserProfile(string fname, string lname)
-        {
-            foreach (KeyValuePair<string, IUserData> plugin in _plugins)
-            {
-                try
-                {
-                    UserProfileData profile = plugin.Value.getUserByName(fname,lname);
-
-                    profile.currentAgent = getUserAgent(profile.UUID);
-
-                    return profile;
-                }
-                catch (Exception e)
-                {
-                    MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
-                }
-            }
-
-            return null;
-        }
-        #endregion
-
-        #region Get UserAgent
-        /// <summary>
-        /// Loads a user agent by uuid (not called directly)
-        /// </summary>
-        /// <param name="uuid">The agents UUID</param>
-        /// <returns>Agent profiles</returns>
-        public UserAgentData getUserAgent(LLUUID uuid)
-        {
-            foreach (KeyValuePair<string, IUserData> plugin in _plugins)
-            {
-                try
-                {
-                    return plugin.Value.getAgentByUUID(uuid);
-                }
-                catch (Exception e)
-                {
-                    MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
-                }
-            }
-
-            return null;
-        }
-
-        /// <summary>
-        /// Loads a user agent by name (not called directly)
-        /// </summary>
-        /// <param name="name">The agents name</param>
-        /// <returns>A user agent</returns>
-        public UserAgentData getUserAgent(string name)
-        {
-            foreach (KeyValuePair<string, IUserData> plugin in _plugins)
-            {
-                try
-                {
-                    return plugin.Value.getAgentByName(name);
-                }
-                catch (Exception e)
-                {
-                    MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
-                }
-            }
-
-            return null;
-        }
-
-        /// <summary>
-        /// Loads a user agent by name (not called directly)
-        /// </summary>
-        /// <param name="fname">The agents firstname</param>
-        /// <param name="lname">The agents lastname</param>
-        /// <returns>A user agent</returns>
-        public UserAgentData getUserAgent(string fname, string lname)
-        {
-            foreach (KeyValuePair<string, IUserData> plugin in _plugins)
-            {
-                try
-                {
-                    return plugin.Value.getAgentByName(fname,lname);
-                }
-                catch (Exception e)
-                {
-                    MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
-                }
-            }
-
-            return null;
-        }
-
-        #endregion
-
-        #region CreateAgent
-        /// <summary>
-        /// Creates and initialises a new user agent - make sure to use CommitAgent when done to submit to the DB
-        /// </summary>
-        /// <param name="profile">The users profile</param>
-        /// <param name="request">The users loginrequest</param>
-        public void CreateAgent(UserProfileData profile, XmlRpcRequest request)
-        {
-            Hashtable requestData = (Hashtable)request.Params[0];
-
-            UserAgentData agent = new UserAgentData();
-
-            // User connection
-            agent.agentOnline = true;
-
-            // Generate sessions
-            RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider();
-            byte[] randDataS = new byte[16];
-            byte[] randDataSS = new byte[16];
-            rand.GetBytes(randDataS);
-            rand.GetBytes(randDataSS);
-
-            agent.secureSessionID = new LLUUID(randDataSS, 0);
-            agent.sessionID = new LLUUID(randDataS, 0);
-
-            // Profile UUID
-            agent.UUID = profile.UUID;
-
-            // Current position (from Home)
-            agent.currentHandle = profile.homeRegion;
-            agent.currentPos = profile.homeLocation;
-
-            // If user specified additional start, use that
-            if (requestData.ContainsKey("start"))
-            {
-                string startLoc = ((string)requestData["start"]).Trim();
-                if (!(startLoc == "last" || startLoc == "home"))
-                {
-                    // Format: uri:Ahern&162&213&34
-                    try
-                    {
-                        string[] parts = startLoc.Remove(0, 4).Split('&');
-                        string region = parts[0];
-
-                        ////////////////////////////////////////////////////
-                        //SimProfile SimInfo = new SimProfile();
-                        //SimInfo = SimInfo.LoadFromGrid(theUser.currentAgent.currentHandle, _config.GridServerURL, _config.GridSendKey, _config.GridRecvKey);
-                    }
-                    catch (Exception)
-                    {
-
-                    }
-                }
-            }
-
-            // What time did the user login?
-            agent.loginTime = Util.UnixTimeSinceEpoch();
-            agent.logoutTime = 0;
-
-            // Current location
-            agent.regionID = new LLUUID(); // Fill in later
-            agent.currentRegion = new LLUUID();      // Fill in later
-
-            profile.currentAgent = agent;
-        }
-
-        /// <summary>
-        /// Saves a target agent to the database
-        /// </summary>
-        /// <param name="profile">The users profile</param>
-        /// <returns>Successful?</returns>
-        public bool CommitAgent(ref UserProfileData profile)
-        {
-            // Saves the agent to database
-            return true;
-        }
-
-        #endregion
-
-        /// <summary>
-        /// Checks a user against it's password hash
-        /// </summary>
-        /// <param name="profile">The users profile</param>
-        /// <param name="password">The supplied password</param>
-        /// <returns>Authenticated?</returns>
-        public virtual bool AuthenticateUser(UserProfileData profile, string password)
-        {
-            MainLog.Instance.Verbose(
-                "Authenticating " + profile.username + " " + profile.surname);
-
-            password = password.Remove(0, 3); //remove $1$
-
-            string s = Util.Md5Hash(password + ":" + profile.passwordSalt);
-
-            return profile.passwordHash.Equals(s.ToString(), StringComparison.InvariantCultureIgnoreCase);
-        }
-
-        #region Xml Response
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="firstname"></param>
-        /// <param name="lastname"></param>
-        /// <returns></returns>
-        public virtual UserProfileData GetTheUser(string firstname, string lastname)
-        {
-            return getUserProfile(firstname, lastname);
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <returns></returns>
-        public virtual string GetMessage()
-        {
-            return _config.DefaultStartupMsg;
-        }
-
-        /// <summary>
-        /// Customises the login response and fills in missing values.
-        /// </summary>
-        /// <param name="response">The existing response</param>
-        /// <param name="theUser">The user profile</param>
-        public abstract void CustomiseResponse( LoginResponse response, UserProfileData theUser);
-
-        /// <summary>
-        /// Main user login function
-        /// </summary>
-        /// <param name="request">The XMLRPC request</param>
-        /// <returns>The response to send</returns>
-        public XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request)
-        {
-
-            System.Console.WriteLine("Attempting login now...");
-            XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable)request.Params[0];
-
-            bool GoodXML = (requestData.Contains("first") && requestData.Contains("last") && requestData.Contains("passwd"));
-            bool GoodLogin = false;
-            string firstname = "";
-            string lastname = "";
-            string passwd = "";
-
-            UserProfileData userProfile;
-            LoginResponse logResponse = new LoginResponse();
-
-            if (GoodXML)
-            {
-                firstname = (string)requestData["first"];
-                lastname = (string)requestData["last"];
-                passwd = (string)requestData["passwd"];
-
-                userProfile = GetTheUser(firstname, lastname);
-                if (userProfile == null)
-                    return logResponse.CreateLoginFailedResponse();
-
-                GoodLogin = AuthenticateUser(userProfile, passwd);
-            }
-            else
-            {
-                return logResponse.CreateGridErrorResponse();
-            }
-
-            if (!GoodLogin)
-            {
-                return logResponse.CreateLoginFailedResponse();
-            }
-            else
-            {
-                // If we already have a session...
-                if (userProfile.currentAgent != null && userProfile.currentAgent.agentOnline)
-                {
-                    // Reject the login
-                    return logResponse.CreateAlreadyLoggedInResponse();
-                }
-                // Otherwise...
-                // Create a new agent session
-                CreateAgent( userProfile, request);
-
-                try
-                {
-
-                    LLUUID AgentID = userProfile.UUID;
-
-                    // Inventory Library Section
-                    ArrayList AgentInventoryArray = new ArrayList();
-                    Hashtable TempHash;
-
-                    AgentInventory Library = new AgentInventory();
-                    Library.CreateRootFolder(AgentID, true);
-
-                    foreach (InventoryFolder InvFolder in Library.InventoryFolders.Values)
-                    {
-                        TempHash = new Hashtable();
-                        TempHash["name"] = InvFolder.FolderName;
-                        TempHash["parent_id"] = InvFolder.ParentID.ToStringHyphenated();
-                        TempHash["version"] = (Int32)InvFolder.Version;
-                        TempHash["type_default"] = (Int32)InvFolder.DefaultType;
-                        TempHash["folder_id"] = InvFolder.FolderID.ToStringHyphenated();
-                        AgentInventoryArray.Add(TempHash);
-                    }
-
-                    Hashtable InventoryRootHash = new Hashtable();
-                    InventoryRootHash["folder_id"] = Library.InventoryRoot.FolderID.ToStringHyphenated();
-                    ArrayList InventoryRoot = new ArrayList();
-                    InventoryRoot.Add(InventoryRootHash);
-
-                    // Circuit Code
-                    uint circode = (uint)(Util.RandomClass.Next());
-
-                    logResponse.Lastname = userProfile.surname;
-                    logResponse.Firstname = userProfile.username;
-                    logResponse.AgentID = AgentID.ToStringHyphenated();
-                    logResponse.SessionID = userProfile.currentAgent.sessionID.ToStringHyphenated();
-                    logResponse.SecureSessionID = userProfile.currentAgent.secureSessionID.ToStringHyphenated();
-                    logResponse.InventoryRoot = InventoryRoot;
-                    logResponse.InventorySkeleton = AgentInventoryArray;
-                    logResponse.CircuitCode = (Int32)circode;
-                    //logResponse.RegionX = 0; //overwritten
-                    //logResponse.RegionY = 0; //overwritten
-                    logResponse.Home = "!!null temporary value {home}!!";   // Overwritten
-                    //logResponse.LookAt = "\n[r" + TheUser.homeLookAt.X.ToString() + ",r" + TheUser.homeLookAt.Y.ToString() + ",r" + TheUser.homeLookAt.Z.ToString() + "]\n";
-                    //logResponse.SimAddress = "127.0.0.1"; //overwritten
-                    //logResponse.SimPort = 0; //overwritten
-                    logResponse.Message = this.GetMessage();
-                    
-                    try
-                    {
-                        this.CustomiseResponse(  logResponse,   userProfile);
-                    }
-                    catch (Exception e)
-                    {
-                        System.Console.WriteLine(e.ToString());
-                        return logResponse.CreateDeadRegionResponse();
-                        //return logResponse.ToXmlRpcResponse();
-                    }
-                    CommitAgent(ref userProfile);
-                    return logResponse.ToXmlRpcResponse();
-
-                }
-                
-                catch (Exception E)
-                {
-                    System.Console.WriteLine(E.ToString());
-                }
-                //}
-            }
-            return response;
-
-        }
-
-        #endregion
-
-        /// <summary>
-        /// Deletes an active agent session
-        /// </summary>
-        /// <param name="request">The request</param>
-        /// <param name="path">The path (eg /bork/narf/test)</param>
-        /// <param name="param">Parameters sent</param>
-        /// <returns>Success "OK" else error</returns>
-        public string RestDeleteUserSessionMethod(string request, string path, string param)
-        {
-            // TODO! Important!
-
-            return "OK";
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="user"></param>
-        public void AddUserProfile(string firstName, string lastName, string pass, uint regX, uint regY)
-        {
-            UserProfileData user = new UserProfileData();
-            user.homeLocation = new LLVector3(128, 128, 100);
-            user.UUID = LLUUID.Random();
-            user.username = firstName;
-            user.surname = lastName;
-            user.passwordHash = pass;
-            user.passwordSalt = "";
-            user.created = Util.UnixTimeSinceEpoch();
-            user.homeLookAt = new LLVector3(100, 100, 100);
-            user.homeRegion = Util.UIntsToLong((regX * 256), (regY * 256));
-
-            foreach (KeyValuePair<string, IUserData> plugin in _plugins)
-            {
-                try
-                {
-                    plugin.Value.addNewUserProfile(user);
-
-                }
-                catch (Exception e)
-                {
-                    MainLog.Instance.Verbose("Unable to add user via " + plugin.Key + "(" + e.ToString() + ")");
-                }
-            }
-        }
-
-        /// <summary>
-        /// Returns an error message that the user could not be found in the database
-        /// </summary>
-        /// <returns>XML string consisting of a error element containing individual error(s)</returns>
-        public XmlRpcResponse CreateUnknownUserErrorResponse()
-        {
-            XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable responseData = new Hashtable();
-            responseData["error_type"] = "unknown_user";
-            responseData["error_desc"] = "The user requested is not in the database";
-
-            response.Value = responseData;
-            return response;
-        }
-
-        /// <summary>
-        /// Converts a user profile to an XML element which can be returned
-        /// </summary>
-        /// <param name="profile">The user profile</param>
-        /// <returns>A string containing an XML Document of the user profile</returns>
-        public XmlRpcResponse ProfileToXmlRPCResponse(UserProfileData profile)
-        {
-            XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable responseData = new Hashtable();
-
-            // Account information
-            responseData["firstname"] = profile.username;
-            responseData["lastname"]  = profile.surname;
-            responseData["uuid"]  = profile.UUID.ToStringHyphenated();
-            // Server Information
-            responseData["server_inventory"]  = profile.userInventoryURI;
-            responseData["server_asset"]  = profile.userAssetURI;
-            // Profile Information
-            responseData["profile_about"]  = profile.profileAboutText;
-            responseData["profile_firstlife_about"]  = profile.profileFirstText;
-            responseData["profile_firstlife_image"]  = profile.profileFirstImage.ToStringHyphenated();
-            responseData["profile_can_do"]  = profile.profileCanDoMask.ToString();
-            responseData["profile_want_do"]  = profile.profileWantDoMask.ToString();
-            responseData["profile_image"]  = profile.profileImage.ToStringHyphenated();
-            responseData["profile_created"] = profile.created.ToString();
-            responseData["profile_lastlogin"] = profile.lastLogin.ToString();
-            // Home region information
-            responseData["home_coordinates_x"] = profile.homeLocation.X.ToString();
-            responseData["home_coordinates_y"] = profile.homeLocation.Y.ToString();
-            responseData["home_coordinates_z"] = profile.homeLocation.Z.ToString();
-
-            responseData["home_region"]  = profile.homeRegion.ToString();
-
-            responseData["home_look_x"] = profile.homeLookAt.X.ToString();
-            responseData["home_look_y"] = profile.homeLookAt.Y.ToString();
-            responseData["home_look_z"] = profile.homeLookAt.Z.ToString();
-            response.Value = responseData;
-
-            return response;
-        }
-
-        #region XMLRPC User Methods 
-        //should most likely move out of here and into the grid's userserver sub class
-        public XmlRpcResponse XmlRPCGetUserMethodName(XmlRpcRequest request)
-        {
-            XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable)request.Params[0];
-            UserProfileData userProfile;
-            if (requestData.Contains("avatar_name"))
-            {
-                userProfile = getUserProfile((string)requestData["avatar_name"]);
-                if (userProfile == null)
-                {
-                    return CreateUnknownUserErrorResponse();
-                }
-            }
-            else
-            {
-                return CreateUnknownUserErrorResponse();
-            }
-
-            return ProfileToXmlRPCResponse(userProfile);
-        }
-
-        public XmlRpcResponse XmlRPCGetUserMethodUUID(XmlRpcRequest request)
-        {
-            XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable)request.Params[0];
-            UserProfileData userProfile;
-            System.Console.WriteLine("METHOD BY UUID CALLED");
-            if (requestData.Contains("avatar_uuid"))
-            {
-                userProfile = getUserProfile((LLUUID)requestData["avatar_uuid"]);
-                if (userProfile == null)
-                {
-                    return CreateUnknownUserErrorResponse();
-                }
-            }
-            else
-            {
-                return CreateUnknownUserErrorResponse();
-            }
-
-
-            return ProfileToXmlRPCResponse(userProfile);
-        }
-        #endregion
-
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Security.Cryptography;
+using libsecondlife;
+using Nwc.XmlRpc;
+using OpenSim.Framework.Console;
+using OpenSim.Framework.Data;
+using OpenSim.Framework.Interfaces;
+using OpenSim.Framework.Inventory;
+using OpenSim.Framework.Utilities;
+
+namespace OpenSim.Framework.UserManagement
+{
+    public abstract class UserManagerBase
+    {
+        public UserConfig _config;
+        Dictionary<string, IUserData> _plugins = new Dictionary<string, IUserData>();
+
+        /// <summary>
+        /// Adds a new user server plugin - user servers will be requested in the order they were loaded.
+        /// </summary>
+        /// <param name="FileName">The filename to the user server plugin DLL</param>
+        public void AddPlugin(string FileName)
+        {
+            MainLog.Instance.Verbose( "Userstorage: Attempting to load " + FileName);
+            Assembly pluginAssembly = Assembly.LoadFrom(FileName);
+
+            MainLog.Instance.Verbose( "Userstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
+            foreach (Type pluginType in pluginAssembly.GetTypes())
+            {
+                if (!pluginType.IsAbstract)
+                {
+                    Type typeInterface = pluginType.GetInterface("IUserData", true);
+
+                    if (typeInterface != null)
+                    {
+                        IUserData plug = (IUserData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
+                        plug.Initialise();
+                        this._plugins.Add(plug.getName(), plug);
+                        MainLog.Instance.Verbose( "Userstorage: Added IUserData Interface");
+                    }
+
+                    typeInterface = null;
+                }
+            }
+
+            pluginAssembly = null;
+        }
+
+        #region Get UserProfile 
+        /// <summary>
+        /// Loads a user profile from a database by UUID
+        /// </summary>
+        /// <param name="uuid">The target UUID</param>
+        /// <returns>A user profile</returns>
+        public UserProfileData getUserProfile(LLUUID uuid)
+        {
+            foreach (KeyValuePair<string, IUserData> plugin in _plugins)
+            {
+                try
+                {
+                    UserProfileData profile = plugin.Value.getUserByUUID(uuid);
+                    profile.currentAgent = getUserAgent(profile.UUID);
+                    return profile;
+                }
+                catch (Exception e)
+                {
+                    MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
+                }
+            }
+
+            return null;
+        }
+
+
+        /// <summary>
+        /// Loads a user profile by name
+        /// </summary>
+        /// <param name="name">The target name</param>
+        /// <returns>A user profile</returns>
+        public UserProfileData getUserProfile(string name)
+        {
+            foreach (KeyValuePair<string, IUserData> plugin in _plugins)
+            {
+                try
+                {
+                    UserProfileData profile = plugin.Value.getUserByName(name);
+                    profile.currentAgent = getUserAgent(profile.UUID);
+                    return profile;
+                }
+                catch (Exception e)
+                {
+                    System.Console.WriteLine("EEK!");
+                    MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
+                }
+            }
+
+            return null;
+        }
+
+        /// <summary>
+        /// Loads a user profile by name
+        /// </summary>
+        /// <param name="fname">First name</param>
+        /// <param name="lname">Last name</param>
+        /// <returns>A user profile</returns>
+        public UserProfileData getUserProfile(string fname, string lname)
+        {
+            foreach (KeyValuePair<string, IUserData> plugin in _plugins)
+            {
+                try
+                {
+                    UserProfileData profile = plugin.Value.getUserByName(fname,lname);
+
+                    profile.currentAgent = getUserAgent(profile.UUID);
+
+                    return profile;
+                }
+                catch (Exception e)
+                {
+                    MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
+                }
+            }
+
+            return null;
+        }
+        #endregion
+
+        #region Get UserAgent
+        /// <summary>
+        /// Loads a user agent by uuid (not called directly)
+        /// </summary>
+        /// <param name="uuid">The agents UUID</param>
+        /// <returns>Agent profiles</returns>
+        public UserAgentData getUserAgent(LLUUID uuid)
+        {
+            foreach (KeyValuePair<string, IUserData> plugin in _plugins)
+            {
+                try
+                {
+                    return plugin.Value.getAgentByUUID(uuid);
+                }
+                catch (Exception e)
+                {
+                    MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
+                }
+            }
+
+            return null;
+        }
+
+        /// <summary>
+        /// Loads a user agent by name (not called directly)
+        /// </summary>
+        /// <param name="name">The agents name</param>
+        /// <returns>A user agent</returns>
+        public UserAgentData getUserAgent(string name)
+        {
+            foreach (KeyValuePair<string, IUserData> plugin in _plugins)
+            {
+                try
+                {
+                    return plugin.Value.getAgentByName(name);
+                }
+                catch (Exception e)
+                {
+                    MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
+                }
+            }
+
+            return null;
+        }
+
+        /// <summary>
+        /// Loads a user agent by name (not called directly)
+        /// </summary>
+        /// <param name="fname">The agents firstname</param>
+        /// <param name="lname">The agents lastname</param>
+        /// <returns>A user agent</returns>
+        public UserAgentData getUserAgent(string fname, string lname)
+        {
+            foreach (KeyValuePair<string, IUserData> plugin in _plugins)
+            {
+                try
+                {
+                    return plugin.Value.getAgentByName(fname,lname);
+                }
+                catch (Exception e)
+                {
+                    MainLog.Instance.Verbose( "Unable to find user via " + plugin.Key + "(" + e.ToString() + ")");
+                }
+            }
+
+            return null;
+        }
+
+        #endregion
+
+        #region CreateAgent
+        /// <summary>
+        /// Creates and initialises a new user agent - make sure to use CommitAgent when done to submit to the DB
+        /// </summary>
+        /// <param name="profile">The users profile</param>
+        /// <param name="request">The users loginrequest</param>
+        public void CreateAgent(UserProfileData profile, XmlRpcRequest request)
+        {
+            Hashtable requestData = (Hashtable)request.Params[0];
+
+            UserAgentData agent = new UserAgentData();
+
+            // User connection
+            agent.agentOnline = true;
+
+            // Generate sessions
+            RNGCryptoServiceProvider rand = new RNGCryptoServiceProvider();
+            byte[] randDataS = new byte[16];
+            byte[] randDataSS = new byte[16];
+            rand.GetBytes(randDataS);
+            rand.GetBytes(randDataSS);
+
+            agent.secureSessionID = new LLUUID(randDataSS, 0);
+            agent.sessionID = new LLUUID(randDataS, 0);
+
+            // Profile UUID
+            agent.UUID = profile.UUID;
+
+            // Current position (from Home)
+            agent.currentHandle = profile.homeRegion;
+            agent.currentPos = profile.homeLocation;
+
+            // If user specified additional start, use that
+            if (requestData.ContainsKey("start"))
+            {
+                string startLoc = ((string)requestData["start"]).Trim();
+                if (!(startLoc == "last" || startLoc == "home"))
+                {
+                    // Format: uri:Ahern&162&213&34
+                    try
+                    {
+                        string[] parts = startLoc.Remove(0, 4).Split('&');
+                        string region = parts[0];
+
+                        ////////////////////////////////////////////////////
+                        //SimProfile SimInfo = new SimProfile();
+                        //SimInfo = SimInfo.LoadFromGrid(theUser.currentAgent.currentHandle, _config.GridServerURL, _config.GridSendKey, _config.GridRecvKey);
+                    }
+                    catch (Exception)
+                    {
+
+                    }
+                }
+            }
+
+            // What time did the user login?
+            agent.loginTime = Util.UnixTimeSinceEpoch();
+            agent.logoutTime = 0;
+
+            // Current location
+            agent.regionID = new LLUUID(); // Fill in later
+            agent.currentRegion = new LLUUID();      // Fill in later
+
+            profile.currentAgent = agent;
+        }
+
+        /// <summary>
+        /// Saves a target agent to the database
+        /// </summary>
+        /// <param name="profile">The users profile</param>
+        /// <returns>Successful?</returns>
+        public bool CommitAgent(ref UserProfileData profile)
+        {
+            // Saves the agent to database
+            return true;
+        }
+
+        #endregion
+
+        /// <summary>
+        /// Checks a user against it's password hash
+        /// </summary>
+        /// <param name="profile">The users profile</param>
+        /// <param name="password">The supplied password</param>
+        /// <returns>Authenticated?</returns>
+        public virtual bool AuthenticateUser(UserProfileData profile, string password)
+        {
+            MainLog.Instance.Verbose(
+                "Authenticating " + profile.username + " " + profile.surname);
+
+            password = password.Remove(0, 3); //remove $1$
+
+            string s = Util.Md5Hash(password + ":" + profile.passwordSalt);
+
+            return profile.passwordHash.Equals(s.ToString(), StringComparison.InvariantCultureIgnoreCase);
+        }
+
+        #region Xml Response
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="firstname"></param>
+        /// <param name="lastname"></param>
+        /// <returns></returns>
+        public virtual UserProfileData GetTheUser(string firstname, string lastname)
+        {
+            return getUserProfile(firstname, lastname);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        public virtual string GetMessage()
+        {
+            return _config.DefaultStartupMsg;
+        }
+
+        /// <summary>
+        /// Customises the login response and fills in missing values.
+        /// </summary>
+        /// <param name="response">The existing response</param>
+        /// <param name="theUser">The user profile</param>
+        public abstract void CustomiseResponse( LoginResponse response, UserProfileData theUser);
+
+        /// <summary>
+        /// Main user login function
+        /// </summary>
+        /// <param name="request">The XMLRPC request</param>
+        /// <returns>The response to send</returns>
+        public XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request)
+        {
+
+            System.Console.WriteLine("Attempting login now...");
+            XmlRpcResponse response = new XmlRpcResponse();
+            Hashtable requestData = (Hashtable)request.Params[0];
+
+            bool GoodXML = (requestData.Contains("first") && requestData.Contains("last") && requestData.Contains("passwd"));
+            bool GoodLogin = false;
+            string firstname = "";
+            string lastname = "";
+            string passwd = "";
+
+            UserProfileData userProfile;
+            LoginResponse logResponse = new LoginResponse();
+
+            if (GoodXML)
+            {
+                firstname = (string)requestData["first"];
+                lastname = (string)requestData["last"];
+                passwd = (string)requestData["passwd"];
+
+                userProfile = GetTheUser(firstname, lastname);
+                if (userProfile == null)
+                    return logResponse.CreateLoginFailedResponse();
+
+                GoodLogin = AuthenticateUser(userProfile, passwd);
+            }
+            else
+            {
+                return logResponse.CreateGridErrorResponse();
+            }
+
+            if (!GoodLogin)
+            {
+                return logResponse.CreateLoginFailedResponse();
+            }
+            else
+            {
+                // If we already have a session...
+                if (userProfile.currentAgent != null && userProfile.currentAgent.agentOnline)
+                {
+                    // Reject the login
+                    return logResponse.CreateAlreadyLoggedInResponse();
+                }
+                // Otherwise...
+                // Create a new agent session
+                CreateAgent( userProfile, request);
+
+                try
+                {
+
+                    LLUUID AgentID = userProfile.UUID;
+
+                    // Inventory Library Section
+                    ArrayList AgentInventoryArray = new ArrayList();
+                    Hashtable TempHash;
+
+                    AgentInventory Library = new AgentInventory();
+                    Library.CreateRootFolder(AgentID, true);
+
+                    foreach (InventoryFolder InvFolder in Library.InventoryFolders.Values)
+                    {
+                        TempHash = new Hashtable();
+                        TempHash["name"] = InvFolder.FolderName;
+                        TempHash["parent_id"] = InvFolder.ParentID.ToStringHyphenated();
+                        TempHash["version"] = (Int32)InvFolder.Version;
+                        TempHash["type_default"] = (Int32)InvFolder.DefaultType;
+                        TempHash["folder_id"] = InvFolder.FolderID.ToStringHyphenated();
+                        AgentInventoryArray.Add(TempHash);
+                    }
+
+                    Hashtable InventoryRootHash = new Hashtable();
+                    InventoryRootHash["folder_id"] = Library.InventoryRoot.FolderID.ToStringHyphenated();
+                    ArrayList InventoryRoot = new ArrayList();
+                    InventoryRoot.Add(InventoryRootHash);
+
+                    // Circuit Code
+                    uint circode = (uint)(Util.RandomClass.Next());
+
+                    logResponse.Lastname = userProfile.surname;
+                    logResponse.Firstname = userProfile.username;
+                    logResponse.AgentID = AgentID.ToStringHyphenated();
+                    logResponse.SessionID = userProfile.currentAgent.sessionID.ToStringHyphenated();
+                    logResponse.SecureSessionID = userProfile.currentAgent.secureSessionID.ToStringHyphenated();
+                    logResponse.InventoryRoot = InventoryRoot;
+                    logResponse.InventorySkeleton = AgentInventoryArray;
+                    logResponse.CircuitCode = (Int32)circode;
+                    //logResponse.RegionX = 0; //overwritten
+                    //logResponse.RegionY = 0; //overwritten
+                    logResponse.Home = "!!null temporary value {home}!!";   // Overwritten
+                    //logResponse.LookAt = "\n[r" + TheUser.homeLookAt.X.ToString() + ",r" + TheUser.homeLookAt.Y.ToString() + ",r" + TheUser.homeLookAt.Z.ToString() + "]\n";
+                    //logResponse.SimAddress = "127.0.0.1"; //overwritten
+                    //logResponse.SimPort = 0; //overwritten
+                    logResponse.Message = this.GetMessage();
+                    
+                    try
+                    {
+                        this.CustomiseResponse(  logResponse,   userProfile);
+                    }
+                    catch (Exception e)
+                    {
+                        System.Console.WriteLine(e.ToString());
+                        return logResponse.CreateDeadRegionResponse();
+                        //return logResponse.ToXmlRpcResponse();
+                    }
+                    CommitAgent(ref userProfile);
+                    return logResponse.ToXmlRpcResponse();
+
+                }
+                
+                catch (Exception E)
+                {
+                    System.Console.WriteLine(E.ToString());
+                }
+                //}
+            }
+            return response;
+
+        }
+
+        #endregion
+
+        /// <summary>
+        /// Deletes an active agent session
+        /// </summary>
+        /// <param name="request">The request</param>
+        /// <param name="path">The path (eg /bork/narf/test)</param>
+        /// <param name="param">Parameters sent</param>
+        /// <returns>Success "OK" else error</returns>
+        public string RestDeleteUserSessionMethod(string request, string path, string param)
+        {
+            // TODO! Important!
+
+            return "OK";
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="user"></param>
+        public void AddUserProfile(string firstName, string lastName, string pass, uint regX, uint regY)
+        {
+            UserProfileData user = new UserProfileData();
+            user.homeLocation = new LLVector3(128, 128, 100);
+            user.UUID = LLUUID.Random();
+            user.username = firstName;
+            user.surname = lastName;
+            user.passwordHash = pass;
+            user.passwordSalt = "";
+            user.created = Util.UnixTimeSinceEpoch();
+            user.homeLookAt = new LLVector3(100, 100, 100);
+            user.homeRegion = Util.UIntsToLong((regX * 256), (regY * 256));
+
+            foreach (KeyValuePair<string, IUserData> plugin in _plugins)
+            {
+                try
+                {
+                    plugin.Value.addNewUserProfile(user);
+
+                }
+                catch (Exception e)
+                {
+                    MainLog.Instance.Verbose("Unable to add user via " + plugin.Key + "(" + e.ToString() + ")");
+                }
+            }
+        }
+
+        /// <summary>
+        /// Returns an error message that the user could not be found in the database
+        /// </summary>
+        /// <returns>XML string consisting of a error element containing individual error(s)</returns>
+        public XmlRpcResponse CreateUnknownUserErrorResponse()
+        {
+            XmlRpcResponse response = new XmlRpcResponse();
+            Hashtable responseData = new Hashtable();
+            responseData["error_type"] = "unknown_user";
+            responseData["error_desc"] = "The user requested is not in the database";
+
+            response.Value = responseData;
+            return response;
+        }
+
+        /// <summary>
+        /// Converts a user profile to an XML element which can be returned
+        /// </summary>
+        /// <param name="profile">The user profile</param>
+        /// <returns>A string containing an XML Document of the user profile</returns>
+        public XmlRpcResponse ProfileToXmlRPCResponse(UserProfileData profile)
+        {
+            XmlRpcResponse response = new XmlRpcResponse();
+            Hashtable responseData = new Hashtable();
+
+            // Account information
+            responseData["firstname"] = profile.username;
+            responseData["lastname"]  = profile.surname;
+            responseData["uuid"]  = profile.UUID.ToStringHyphenated();
+            // Server Information
+            responseData["server_inventory"]  = profile.userInventoryURI;
+            responseData["server_asset"]  = profile.userAssetURI;
+            // Profile Information
+            responseData["profile_about"]  = profile.profileAboutText;
+            responseData["profile_firstlife_about"]  = profile.profileFirstText;
+            responseData["profile_firstlife_image"]  = profile.profileFirstImage.ToStringHyphenated();
+            responseData["profile_can_do"]  = profile.profileCanDoMask.ToString();
+            responseData["profile_want_do"]  = profile.profileWantDoMask.ToString();
+            responseData["profile_image"]  = profile.profileImage.ToStringHyphenated();
+            responseData["profile_created"] = profile.created.ToString();
+            responseData["profile_lastlogin"] = profile.lastLogin.ToString();
+            // Home region information
+            responseData["home_coordinates_x"] = profile.homeLocation.X.ToString();
+            responseData["home_coordinates_y"] = profile.homeLocation.Y.ToString();
+            responseData["home_coordinates_z"] = profile.homeLocation.Z.ToString();
+
+            responseData["home_region"]  = profile.homeRegion.ToString();
+
+            responseData["home_look_x"] = profile.homeLookAt.X.ToString();
+            responseData["home_look_y"] = profile.homeLookAt.Y.ToString();
+            responseData["home_look_z"] = profile.homeLookAt.Z.ToString();
+            response.Value = responseData;
+
+            return response;
+        }
+
+        #region XMLRPC User Methods 
+        //should most likely move out of here and into the grid's userserver sub class
+        public XmlRpcResponse XmlRPCGetUserMethodName(XmlRpcRequest request)
+        {
+            XmlRpcResponse response = new XmlRpcResponse();
+            Hashtable requestData = (Hashtable)request.Params[0];
+            UserProfileData userProfile;
+            if (requestData.Contains("avatar_name"))
+            {
+                userProfile = getUserProfile((string)requestData["avatar_name"]);
+                if (userProfile == null)
+                {
+                    return CreateUnknownUserErrorResponse();
+                }
+            }
+            else
+            {
+                return CreateUnknownUserErrorResponse();
+            }
+
+            return ProfileToXmlRPCResponse(userProfile);
+        }
+
+        public XmlRpcResponse XmlRPCGetUserMethodUUID(XmlRpcRequest request)
+        {
+            XmlRpcResponse response = new XmlRpcResponse();
+            Hashtable requestData = (Hashtable)request.Params[0];
+            UserProfileData userProfile;
+            System.Console.WriteLine("METHOD BY UUID CALLED");
+            if (requestData.Contains("avatar_uuid"))
+            {
+                userProfile = getUserProfile((LLUUID)requestData["avatar_uuid"]);
+                if (userProfile == null)
+                {
+                    return CreateUnknownUserErrorResponse();
+                }
+            }
+            else
+            {
+                return CreateUnknownUserErrorResponse();
+            }
+
+
+            return ProfileToXmlRPCResponse(userProfile);
+        }
+        #endregion
+
+    }
+}

+ 406 - 406
OpenSim/Grid/AssetServer/Main.cs

@@ -1,406 +1,406 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-using System;
-using System.IO;
-using System.Text;
-using Db4objects.Db4o;
-using libsecondlife;
-using OpenSim.Framework.Console;
-using OpenSim.Framework.Types;
-using OpenSim.Framework.Servers;
-
-namespace OpenSim.Grid.AssetServer
-{
-    /// <summary>
-    /// An asset server
-    /// </summary>
-    public class OpenAsset_Main : conscmd_callback
-    {
-        private IObjectContainer db;
-
-        public static OpenAsset_Main assetserver;
-
-        private LogBase m_console;
-
-        [STAThread]
-        public static void Main(string[] args)
-        {
-            Console.WriteLine("Starting...\n");
-
-            assetserver = new OpenAsset_Main();
-            assetserver.Startup();
-
-            assetserver.Work();
-        }
-
-        private void Work()
-        {
-            m_console.Notice("Enter help for a list of commands");
-
-            while (true)
-            {
-                m_console.MainLogPrompt();
-            }
-        }
-
-        private OpenAsset_Main()
-        {
-            m_console = new LogBase("opengrid-AssetServer-console.log", "OpenAsset", this, false);
-            MainLog.Instance = m_console;
-        }
-
-        public void Startup()
-        {
-            m_console.Verbose("Main.cs:Startup() - Setting up asset DB");
-            setupDB();
-
-            m_console.Verbose("Main.cs:Startup() - Starting HTTP process");
-            BaseHttpServer httpServer = new BaseHttpServer(8003);
-
-            httpServer.AddStreamHandler( new GetAssetStreamHandler(this));
-            httpServer.AddStreamHandler(new PostAssetStreamHandler( this ));
-
-            //httpServer.AddRestHandler("GET", "/assets/", this.assetGetMethod);
-            //httpServer.AddRestHandler("POST", "/assets/", this.assetPostMethod);
-
-            httpServer.Start();
-
-        }
-
-        //public string AssetPostMethod(string requestBody, string path, string param)
-        //{
-        //    AssetBase asset = new AssetBase();
-        //    asset.Name = "";
-        //    asset.FullID = new LLUUID(param);
-        //    Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
-        //    byte[] buffer = Windows1252Encoding.GetBytes(requestBody);
-        //    asset.Data = buffer;
-        //    AssetStorage store = new AssetStorage();
-        //    store.Data = asset.Data;
-        //    store.Name = asset.Name;
-        //    store.UUID = asset.FullID;
-        //    db.Set(store);
-        //    db.Commit();
-        //    return "";
-        //}
-
-        //public string AssetGetMethod(string request, string path, string param)
-        //{
-        //    Console.WriteLine("got a request " + param);
-        //    byte[] assetdata = GetAssetData(new LLUUID(param), false);
-        //    if (assetdata != null)
-        //    {
-        //        Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
-        //        string ret = Windows1252Encoding.GetString(assetdata);
-        //        //string ret = System.Text.Encoding.Unicode.GetString(assetdata);
-
-        //        return ret;
-
-        //    }
-        //    else
-        //    {
-        //        return "";
-        //    }
-
-        //}
-
-        public byte[] GetAssetData(LLUUID assetID, bool isTexture)
-        {
-            bool found = false;
-            AssetStorage foundAsset = null;
-
-            IObjectSet result = db.Get(new AssetStorage(assetID));
-            if (result.Count > 0)
-            {
-                foundAsset = (AssetStorage)result.Next();
-                found = true;
-            }
-
-            if (found)
-            {
-                return foundAsset.Data;
-            }
-            else
-            {
-                return null;
-            }
-        }
-
-        public void setupDB()
-        {
-            bool yapfile = File.Exists("gridassets.yap");
-            try
-            {
-                db = Db4oFactory.OpenFile("gridassets.yap");
-                MainLog.Instance.Verbose("Main.cs:setupDB() - creation");
-            }
-            catch (Exception e)
-            {
-                db.Close();
-                MainLog.Instance.Warn("Main.cs:setupDB() - Exception occured");
-                MainLog.Instance.Warn(e.ToString());
-            }
-            if (!yapfile)
-            {
-                this.LoadDB();
-            }
-        }
-
-        public void LoadDB()
-        {
-            try
-            {
-
-                Console.WriteLine("setting up Asset database");
-
-                AssetBase Image = new AssetBase();
-                Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001");
-                Image.Name = "Bricks";
-                this.LoadAsset(Image, true, "bricks.jp2");
-                AssetStorage store = new AssetStorage();
-                store.Data = Image.Data;
-                store.Name = Image.Name;
-                store.UUID = Image.FullID;
-                db.Set(store);
-                db.Commit();
-
-                Image = new AssetBase();
-                Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002");
-                Image.Name = "Plywood";
-                this.LoadAsset(Image, true, "plywood.jp2");
-                store = new AssetStorage();
-                store.Data = Image.Data;
-                store.Name = Image.Name;
-                store.UUID = Image.FullID;
-                db.Set(store);
-                db.Commit();
-
-                Image = new AssetBase();
-                Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003");
-                Image.Name = "Rocks";
-                this.LoadAsset(Image, true, "rocks.jp2");
-                store = new AssetStorage();
-                store.Data = Image.Data;
-                store.Name = Image.Name;
-                store.UUID = Image.FullID;
-                db.Set(store);
-                db.Commit();
-
-                Image = new AssetBase();
-                Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004");
-                Image.Name = "Granite";
-                this.LoadAsset(Image, true, "granite.jp2");
-                store = new AssetStorage();
-                store.Data = Image.Data;
-                store.Name = Image.Name;
-                store.UUID = Image.FullID;
-                db.Set(store);
-                db.Commit();
-
-                Image = new AssetBase();
-                Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005");
-                Image.Name = "Hardwood";
-                this.LoadAsset(Image, true, "hardwood.jp2");
-                store = new AssetStorage();
-                store.Data = Image.Data;
-                store.Name = Image.Name;
-                store.UUID = Image.FullID;
-                db.Set(store);
-                db.Commit();
-
-                Image = new AssetBase();
-                Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005");
-                Image.Name = "Prim Base Texture";
-                this.LoadAsset(Image, true, "plywood.jp2");
-                store = new AssetStorage();
-                store.Data = Image.Data;
-                store.Name = Image.Name;
-                store.UUID = Image.FullID;
-                db.Set(store);
-                db.Commit();
-
-                Image = new AssetBase();
-                Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
-                Image.Name = "Shape";
-                this.LoadAsset(Image, false, "base_shape.dat");
-                store = new AssetStorage();
-                store.Data = Image.Data;
-                store.Name = Image.Name;
-                store.UUID = Image.FullID;
-                db.Set(store);
-                db.Commit();
-            }
-            catch (Exception e)
-            {
-                Console.WriteLine(e.Message);
-            }
-        }
-
-        private void LoadAsset(AssetBase info, bool image, string filename)
-        {
-
-
-            string dataPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "assets"); //+ folder;
-            string fileName = Path.Combine(dataPath, filename);
-            FileInfo fInfo = new FileInfo(fileName);
-            long numBytes = fInfo.Length;
-            FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
-            byte[] idata = new byte[numBytes];
-            BinaryReader br = new BinaryReader(fStream);
-            idata = br.ReadBytes((int)numBytes);
-            br.Close();
-            fStream.Close();
-            info.Data = idata;
-            //info.loaded=true;
-        }
-
-        /*private GridConfig LoadConfigDll(string dllName)
-        {
-            Assembly pluginAssembly = Assembly.LoadFrom(dllName);
-            GridConfig config = null;
-
-            foreach (Type pluginType in pluginAssembly.GetTypes())
-            {
-                if (pluginType.IsPublic)
-                {
-                    if (!pluginType.IsAbstract)
-                    {
-                        Type typeInterface = pluginType.GetInterface("IGridConfig", true);
-
-                        if (typeInterface != null)
-                        {
-                            IGridConfig plug = (IGridConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
-                            config = plug.GetConfigObject();
-                            break;
-                        }
-
-                        typeInterface = null;
-                    }
-                }
-            }
-            pluginAssembly = null;
-            return config;
-        }*/
-
-        public void CreateAsset(LLUUID assetId, byte[] assetData)
-        {
-            AssetBase asset = new AssetBase();
-            asset.Name = "";
-            asset.FullID = assetId;
-            asset.Data = assetData;
-                    
-            AssetStorage store = new AssetStorage();
-            store.Data = asset.Data;
-            store.Name = asset.Name;
-            store.UUID = asset.FullID;
-            db.Set(store);
-            db.Commit();
-        }
-        
-        public void RunCmd(string cmd, string[] cmdparams)
-        {
-            switch (cmd)
-            {
-                case "help":
-                    m_console.Notice("shutdown - shutdown this asset server (USE CAUTION!)");
-                    break;
-
-                case "shutdown":
-                    m_console.Close();
-                    Environment.Exit(0);
-                    break;
-            }
-        }
-
-        public void Show(string ShowWhat)
-        {
-        }
-    }
-
-    public class GetAssetStreamHandler : BaseStreamHandler
-    {
-        OpenAsset_Main m_assetManager;
-
-        override public byte[] Handle(string path, Stream request)
-        {
-            string param = GetParam(path);
-
-            byte[] assetdata = m_assetManager.GetAssetData(new LLUUID(param), false);
-            if (assetdata != null)
-            {
-                return assetdata;
-            }
-            else
-            {
-                return new byte[]{};
-            }
-        }
-
-        public GetAssetStreamHandler(OpenAsset_Main assetManager):base( "/assets/", "GET")
-        {
-            m_assetManager = assetManager;
-        }
-    }
-
-    public class PostAssetStreamHandler : BaseStreamHandler
-    {
-        OpenAsset_Main m_assetManager;
-
-        override public byte[] Handle(string path, Stream request)
-        {
-            string param = GetParam(path);
-            LLUUID assetId = new LLUUID(param);
-            byte[] txBuffer = new byte[4096];
-                
-            using( BinaryReader binReader = new BinaryReader( request ) )
-            {
-                using (MemoryStream memoryStream = new MemoryStream(4096))
-                {
-                    int count;
-                    while ((count = binReader.Read(txBuffer, 0, 4096)) > 0)
-                    {
-                        memoryStream.Write(txBuffer, 0, count);
-                    }                    
-
-                    byte[] assetData = memoryStream.ToArray();
-
-                    m_assetManager.CreateAsset(assetId, assetData);
-                }
-            }
-            
-            return new byte[]{};
-        }
-
-        public PostAssetStreamHandler( OpenAsset_Main assetManager )
-            : base("/assets/", "POST")
-        {
-            m_assetManager = assetManager;
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.IO;
+using System.Text;
+using Db4objects.Db4o;
+using libsecondlife;
+using OpenSim.Framework.Console;
+using OpenSim.Framework.Types;
+using OpenSim.Framework.Servers;
+
+namespace OpenSim.Grid.AssetServer
+{
+    /// <summary>
+    /// An asset server
+    /// </summary>
+    public class OpenAsset_Main : conscmd_callback
+    {
+        private IObjectContainer db;
+
+        public static OpenAsset_Main assetserver;
+
+        private LogBase m_console;
+
+        [STAThread]
+        public static void Main(string[] args)
+        {
+            Console.WriteLine("Starting...\n");
+
+            assetserver = new OpenAsset_Main();
+            assetserver.Startup();
+
+            assetserver.Work();
+        }
+
+        private void Work()
+        {
+            m_console.Notice("Enter help for a list of commands");
+
+            while (true)
+            {
+                m_console.MainLogPrompt();
+            }
+        }
+
+        private OpenAsset_Main()
+        {
+            m_console = new LogBase("opengrid-AssetServer-console.log", "OpenAsset", this, false);
+            MainLog.Instance = m_console;
+        }
+
+        public void Startup()
+        {
+            m_console.Verbose("Main.cs:Startup() - Setting up asset DB");
+            setupDB();
+
+            m_console.Verbose("Main.cs:Startup() - Starting HTTP process");
+            BaseHttpServer httpServer = new BaseHttpServer(8003);
+
+            httpServer.AddStreamHandler( new GetAssetStreamHandler(this));
+            httpServer.AddStreamHandler(new PostAssetStreamHandler( this ));
+
+            //httpServer.AddRestHandler("GET", "/assets/", this.assetGetMethod);
+            //httpServer.AddRestHandler("POST", "/assets/", this.assetPostMethod);
+
+            httpServer.Start();
+
+        }
+
+        //public string AssetPostMethod(string requestBody, string path, string param)
+        //{
+        //    AssetBase asset = new AssetBase();
+        //    asset.Name = "";
+        //    asset.FullID = new LLUUID(param);
+        //    Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
+        //    byte[] buffer = Windows1252Encoding.GetBytes(requestBody);
+        //    asset.Data = buffer;
+        //    AssetStorage store = new AssetStorage();
+        //    store.Data = asset.Data;
+        //    store.Name = asset.Name;
+        //    store.UUID = asset.FullID;
+        //    db.Set(store);
+        //    db.Commit();
+        //    return "";
+        //}
+
+        //public string AssetGetMethod(string request, string path, string param)
+        //{
+        //    Console.WriteLine("got a request " + param);
+        //    byte[] assetdata = GetAssetData(new LLUUID(param), false);
+        //    if (assetdata != null)
+        //    {
+        //        Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
+        //        string ret = Windows1252Encoding.GetString(assetdata);
+        //        //string ret = System.Text.Encoding.Unicode.GetString(assetdata);
+
+        //        return ret;
+
+        //    }
+        //    else
+        //    {
+        //        return "";
+        //    }
+
+        //}
+
+        public byte[] GetAssetData(LLUUID assetID, bool isTexture)
+        {
+            bool found = false;
+            AssetStorage foundAsset = null;
+
+            IObjectSet result = db.Get(new AssetStorage(assetID));
+            if (result.Count > 0)
+            {
+                foundAsset = (AssetStorage)result.Next();
+                found = true;
+            }
+
+            if (found)
+            {
+                return foundAsset.Data;
+            }
+            else
+            {
+                return null;
+            }
+        }
+
+        public void setupDB()
+        {
+            bool yapfile = File.Exists("gridassets.yap");
+            try
+            {
+                db = Db4oFactory.OpenFile("gridassets.yap");
+                MainLog.Instance.Verbose("Main.cs:setupDB() - creation");
+            }
+            catch (Exception e)
+            {
+                db.Close();
+                MainLog.Instance.Warn("Main.cs:setupDB() - Exception occured");
+                MainLog.Instance.Warn(e.ToString());
+            }
+            if (!yapfile)
+            {
+                this.LoadDB();
+            }
+        }
+
+        public void LoadDB()
+        {
+            try
+            {
+
+                Console.WriteLine("setting up Asset database");
+
+                AssetBase Image = new AssetBase();
+                Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001");
+                Image.Name = "Bricks";
+                this.LoadAsset(Image, true, "bricks.jp2");
+                AssetStorage store = new AssetStorage();
+                store.Data = Image.Data;
+                store.Name = Image.Name;
+                store.UUID = Image.FullID;
+                db.Set(store);
+                db.Commit();
+
+                Image = new AssetBase();
+                Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002");
+                Image.Name = "Plywood";
+                this.LoadAsset(Image, true, "plywood.jp2");
+                store = new AssetStorage();
+                store.Data = Image.Data;
+                store.Name = Image.Name;
+                store.UUID = Image.FullID;
+                db.Set(store);
+                db.Commit();
+
+                Image = new AssetBase();
+                Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003");
+                Image.Name = "Rocks";
+                this.LoadAsset(Image, true, "rocks.jp2");
+                store = new AssetStorage();
+                store.Data = Image.Data;
+                store.Name = Image.Name;
+                store.UUID = Image.FullID;
+                db.Set(store);
+                db.Commit();
+
+                Image = new AssetBase();
+                Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004");
+                Image.Name = "Granite";
+                this.LoadAsset(Image, true, "granite.jp2");
+                store = new AssetStorage();
+                store.Data = Image.Data;
+                store.Name = Image.Name;
+                store.UUID = Image.FullID;
+                db.Set(store);
+                db.Commit();
+
+                Image = new AssetBase();
+                Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005");
+                Image.Name = "Hardwood";
+                this.LoadAsset(Image, true, "hardwood.jp2");
+                store = new AssetStorage();
+                store.Data = Image.Data;
+                store.Name = Image.Name;
+                store.UUID = Image.FullID;
+                db.Set(store);
+                db.Commit();
+
+                Image = new AssetBase();
+                Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005");
+                Image.Name = "Prim Base Texture";
+                this.LoadAsset(Image, true, "plywood.jp2");
+                store = new AssetStorage();
+                store.Data = Image.Data;
+                store.Name = Image.Name;
+                store.UUID = Image.FullID;
+                db.Set(store);
+                db.Commit();
+
+                Image = new AssetBase();
+                Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
+                Image.Name = "Shape";
+                this.LoadAsset(Image, false, "base_shape.dat");
+                store = new AssetStorage();
+                store.Data = Image.Data;
+                store.Name = Image.Name;
+                store.UUID = Image.FullID;
+                db.Set(store);
+                db.Commit();
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e.Message);
+            }
+        }
+
+        private void LoadAsset(AssetBase info, bool image, string filename)
+        {
+
+
+            string dataPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "assets"); //+ folder;
+            string fileName = Path.Combine(dataPath, filename);
+            FileInfo fInfo = new FileInfo(fileName);
+            long numBytes = fInfo.Length;
+            FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
+            byte[] idata = new byte[numBytes];
+            BinaryReader br = new BinaryReader(fStream);
+            idata = br.ReadBytes((int)numBytes);
+            br.Close();
+            fStream.Close();
+            info.Data = idata;
+            //info.loaded=true;
+        }
+
+        /*private GridConfig LoadConfigDll(string dllName)
+        {
+            Assembly pluginAssembly = Assembly.LoadFrom(dllName);
+            GridConfig config = null;
+
+            foreach (Type pluginType in pluginAssembly.GetTypes())
+            {
+                if (pluginType.IsPublic)
+                {
+                    if (!pluginType.IsAbstract)
+                    {
+                        Type typeInterface = pluginType.GetInterface("IGridConfig", true);
+
+                        if (typeInterface != null)
+                        {
+                            IGridConfig plug = (IGridConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
+                            config = plug.GetConfigObject();
+                            break;
+                        }
+
+                        typeInterface = null;
+                    }
+                }
+            }
+            pluginAssembly = null;
+            return config;
+        }*/
+
+        public void CreateAsset(LLUUID assetId, byte[] assetData)
+        {
+            AssetBase asset = new AssetBase();
+            asset.Name = "";
+            asset.FullID = assetId;
+            asset.Data = assetData;
+                    
+            AssetStorage store = new AssetStorage();
+            store.Data = asset.Data;
+            store.Name = asset.Name;
+            store.UUID = asset.FullID;
+            db.Set(store);
+            db.Commit();
+        }
+        
+        public void RunCmd(string cmd, string[] cmdparams)
+        {
+            switch (cmd)
+            {
+                case "help":
+                    m_console.Notice("shutdown - shutdown this asset server (USE CAUTION!)");
+                    break;
+
+                case "shutdown":
+                    m_console.Close();
+                    Environment.Exit(0);
+                    break;
+            }
+        }
+
+        public void Show(string ShowWhat)
+        {
+        }
+    }
+
+    public class GetAssetStreamHandler : BaseStreamHandler
+    {
+        OpenAsset_Main m_assetManager;
+
+        override public byte[] Handle(string path, Stream request)
+        {
+            string param = GetParam(path);
+
+            byte[] assetdata = m_assetManager.GetAssetData(new LLUUID(param), false);
+            if (assetdata != null)
+            {
+                return assetdata;
+            }
+            else
+            {
+                return new byte[]{};
+            }
+        }
+
+        public GetAssetStreamHandler(OpenAsset_Main assetManager):base( "/assets/", "GET")
+        {
+            m_assetManager = assetManager;
+        }
+    }
+
+    public class PostAssetStreamHandler : BaseStreamHandler
+    {
+        OpenAsset_Main m_assetManager;
+
+        override public byte[] Handle(string path, Stream request)
+        {
+            string param = GetParam(path);
+            LLUUID assetId = new LLUUID(param);
+            byte[] txBuffer = new byte[4096];
+                
+            using( BinaryReader binReader = new BinaryReader( request ) )
+            {
+                using (MemoryStream memoryStream = new MemoryStream(4096))
+                {
+                    int count;
+                    while ((count = binReader.Read(txBuffer, 0, 4096)) > 0)
+                    {
+                        memoryStream.Write(txBuffer, 0, count);
+                    }                    
+
+                    byte[] assetData = memoryStream.ToArray();
+
+                    m_assetManager.CreateAsset(assetId, assetData);
+                }
+            }
+            
+            return new byte[]{};
+        }
+
+        public PostAssetStreamHandler( OpenAsset_Main assetManager )
+            : base("/assets/", "POST")
+        {
+            m_assetManager = assetManager;
+        }
+    }
+}

+ 58 - 58
OpenSim/Grid/AssetServer/Properties/AssemblyInfo.cs

@@ -1,58 +1,58 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Reflection;
-using System.Runtime.InteropServices;
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("OGS-AssetServer")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("OGS-AssetServer")]
-[assembly: AssemblyCopyright("Copyright ©  2007")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("b541b244-3d1d-4625-9003-bc2a3a6a39a4")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Reflection;
+using System.Runtime.InteropServices;
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OGS-AssetServer")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OGS-AssetServer")]
+[assembly: AssemblyCopyright("Copyright ©  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("b541b244-3d1d-4625-9003-bc2a3a6a39a4")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 138 - 138
OpenSim/Grid/Framework.Manager/GridManagementAgent.cs

@@ -1,138 +1,138 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Collections;
-using libsecondlife;
-using Nwc.XmlRpc;
-using OpenSim.Framework.Servers;
-
-namespace OpenSim.Framework.Manager
-{
-    /// <summary>
-    /// Used to pass messages to the gridserver
-    /// </summary>
-    /// <param name="param">Pass this argument</param>
-    public delegate void GridManagerCallback(string param);
-
-    /// <summary>
-    /// Serverside listener for grid commands
-    /// </summary>
-    public class GridManagementAgent
-    {
-        /// <summary>
-        /// Passes grid server messages
-        /// </summary>
-        private GridManagerCallback thecallback;
-
-        /// <summary>
-        /// Security keys
-        /// </summary>
-        private string sendkey;
-        private string recvkey;
-
-        /// <summary>
-        /// Our component type
-        /// </summary>
-        private string component_type;
-
-        /// <summary>
-        /// List of active sessions
-        /// </summary>
-        private static ArrayList Sessions;
-
-        /// <summary>
-        /// Initialises a new GridManagementAgent
-        /// </summary>
-        /// <param name="app_httpd">HTTP Daemon for this server</param>
-        /// <param name="component_type">What component type are we?</param>
-        /// <param name="sendkey">Security send key</param>
-        /// <param name="recvkey">Security recieve key</param>
-        /// <param name="thecallback">Message callback</param>
-        public GridManagementAgent(BaseHttpServer app_httpd, string component_type, string sendkey, string recvkey, GridManagerCallback thecallback)
-        {
-            this.sendkey = sendkey;
-            this.recvkey = recvkey;
-            this.component_type = component_type;
-            this.thecallback = thecallback;
-            Sessions = new ArrayList();
-
-            app_httpd.AddXmlRPCHandler("manager_login", XmlRpcLoginMethod);
-
-            switch (component_type)
-            {
-                case "gridserver":
-                    GridServerManager.sendkey = this.sendkey;
-                    GridServerManager.recvkey = this.recvkey;
-                    GridServerManager.thecallback = thecallback;
-                    app_httpd.AddXmlRPCHandler("shutdown", GridServerManager.XmlRpcShutdownMethod);
-                    break;
-            }
-        }
-
-        /// <summary>
-        /// Checks if a session exists
-        /// </summary>
-        /// <param name="sessionID">The session ID</param>
-        /// <returns>Exists?</returns>
-        public static bool SessionExists(LLUUID sessionID)
-        {
-            return Sessions.Contains(sessionID);
-        }
-
-        /// <summary>
-        /// Logs a new session to the grid manager
-        /// </summary>
-        /// <param name="request">the XMLRPC request</param>
-        /// <returns>An XMLRPC reply</returns>
-        public static XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request)
-        {
-            XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable)request.Params[0];
-            Hashtable responseData = new Hashtable();
-
-            // TODO: Switch this over to using OpenSim.Framework.Data
-            if (requestData["username"].Equals("admin") && requestData["password"].Equals("supersecret"))
-            {
-                response.IsFault = false;
-                LLUUID new_session = LLUUID.Random();
-                Sessions.Add(new_session);
-                responseData["session_id"] = new_session.ToString();
-                responseData["msg"] = "Login OK";
-            }
-            else
-            {
-                response.IsFault = true;
-                responseData["error"] = "Invalid username or password";
-            }
-
-            response.Value = responseData;
-            return response;
-
-        }
-
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Collections;
+using libsecondlife;
+using Nwc.XmlRpc;
+using OpenSim.Framework.Servers;
+
+namespace OpenSim.Framework.Manager
+{
+    /// <summary>
+    /// Used to pass messages to the gridserver
+    /// </summary>
+    /// <param name="param">Pass this argument</param>
+    public delegate void GridManagerCallback(string param);
+
+    /// <summary>
+    /// Serverside listener for grid commands
+    /// </summary>
+    public class GridManagementAgent
+    {
+        /// <summary>
+        /// Passes grid server messages
+        /// </summary>
+        private GridManagerCallback thecallback;
+
+        /// <summary>
+        /// Security keys
+        /// </summary>
+        private string sendkey;
+        private string recvkey;
+
+        /// <summary>
+        /// Our component type
+        /// </summary>
+        private string component_type;
+
+        /// <summary>
+        /// List of active sessions
+        /// </summary>
+        private static ArrayList Sessions;
+
+        /// <summary>
+        /// Initialises a new GridManagementAgent
+        /// </summary>
+        /// <param name="app_httpd">HTTP Daemon for this server</param>
+        /// <param name="component_type">What component type are we?</param>
+        /// <param name="sendkey">Security send key</param>
+        /// <param name="recvkey">Security recieve key</param>
+        /// <param name="thecallback">Message callback</param>
+        public GridManagementAgent(BaseHttpServer app_httpd, string component_type, string sendkey, string recvkey, GridManagerCallback thecallback)
+        {
+            this.sendkey = sendkey;
+            this.recvkey = recvkey;
+            this.component_type = component_type;
+            this.thecallback = thecallback;
+            Sessions = new ArrayList();
+
+            app_httpd.AddXmlRPCHandler("manager_login", XmlRpcLoginMethod);
+
+            switch (component_type)
+            {
+                case "gridserver":
+                    GridServerManager.sendkey = this.sendkey;
+                    GridServerManager.recvkey = this.recvkey;
+                    GridServerManager.thecallback = thecallback;
+                    app_httpd.AddXmlRPCHandler("shutdown", GridServerManager.XmlRpcShutdownMethod);
+                    break;
+            }
+        }
+
+        /// <summary>
+        /// Checks if a session exists
+        /// </summary>
+        /// <param name="sessionID">The session ID</param>
+        /// <returns>Exists?</returns>
+        public static bool SessionExists(LLUUID sessionID)
+        {
+            return Sessions.Contains(sessionID);
+        }
+
+        /// <summary>
+        /// Logs a new session to the grid manager
+        /// </summary>
+        /// <param name="request">the XMLRPC request</param>
+        /// <returns>An XMLRPC reply</returns>
+        public static XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request)
+        {
+            XmlRpcResponse response = new XmlRpcResponse();
+            Hashtable requestData = (Hashtable)request.Params[0];
+            Hashtable responseData = new Hashtable();
+
+            // TODO: Switch this over to using OpenSim.Framework.Data
+            if (requestData["username"].Equals("admin") && requestData["password"].Equals("supersecret"))
+            {
+                response.IsFault = false;
+                LLUUID new_session = LLUUID.Random();
+                Sessions.Add(new_session);
+                responseData["session_id"] = new_session.ToString();
+                responseData["msg"] = "Login OK";
+            }
+            else
+            {
+                response.IsFault = true;
+                responseData["error"] = "Invalid username or password";
+            }
+
+            response.Value = responseData;
+            return response;
+
+        }
+
+    }
+}

+ 93 - 93
OpenSim/Grid/Framework.Manager/GridServerManager.cs

@@ -1,93 +1,93 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-using System;
-using System.Collections;
-using System.Threading;
-using libsecondlife;
-using Nwc.XmlRpc;
-
-namespace OpenSim.Framework.Manager {
-
-    /// <summary>
-    /// A remote management system for the grid server
-    /// </summary>
-	public class GridServerManager 
-	{
-        /// <summary>
-        /// Triggers events from the grid manager
-        /// </summary>
-		public static GridManagerCallback thecallback;
-
-        /// <summary>
-        /// Security keys
-        /// </summary>
-		public static string sendkey;
-		public static string recvkey;
-
-        /// <summary>
-        /// Disconnects the grid server and shuts it down
-        /// </summary>
-        /// <param name="request">XmlRpc Request</param>
-        /// <returns>An XmlRpc response containing either a "msg" or an "error"</returns>
-		public static XmlRpcResponse XmlRpcShutdownMethod(XmlRpcRequest request)
-         	{
-           		XmlRpcResponse response = new XmlRpcResponse();
-            		Hashtable requestData = (Hashtable)request.Params[0];
-	    		Hashtable responseData = new Hashtable();
-         
-			if(requestData.ContainsKey("session_id")) {
-				if(GridManagementAgent.SessionExists(new LLUUID((string)requestData["session_id"]))) {
-					responseData["msg"]="Shutdown command accepted";
-					(new Thread(new ThreadStart(ShutdownServer))).Start();
-				} else {
-					response.IsFault=true;
-					responseData["error"]="bad session ID";
-				}
-			} else {
-				response.IsFault=true;
-				responseData["error"]="no session ID";
-			}
-
-	    		response.Value = responseData;
-	    		return response;
-		}
-
-		/// <summary>
-        /// Shuts down the grid server
-		/// </summary>
-		public static void ShutdownServer()
-		{
-			Console.WriteLine("Shutting down the grid server - recieved a grid manager request");
-            Console.WriteLine("Terminating in three seconds...");
-			Thread.Sleep(3000);
-			thecallback("shutdown");
-		}
-	 }
-}
-
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.Collections;
+using System.Threading;
+using libsecondlife;
+using Nwc.XmlRpc;
+
+namespace OpenSim.Framework.Manager {
+
+    /// <summary>
+    /// A remote management system for the grid server
+    /// </summary>
+	public class GridServerManager 
+	{
+        /// <summary>
+        /// Triggers events from the grid manager
+        /// </summary>
+		public static GridManagerCallback thecallback;
+
+        /// <summary>
+        /// Security keys
+        /// </summary>
+		public static string sendkey;
+		public static string recvkey;
+
+        /// <summary>
+        /// Disconnects the grid server and shuts it down
+        /// </summary>
+        /// <param name="request">XmlRpc Request</param>
+        /// <returns>An XmlRpc response containing either a "msg" or an "error"</returns>
+		public static XmlRpcResponse XmlRpcShutdownMethod(XmlRpcRequest request)
+         	{
+           		XmlRpcResponse response = new XmlRpcResponse();
+            		Hashtable requestData = (Hashtable)request.Params[0];
+	    		Hashtable responseData = new Hashtable();
+         
+			if(requestData.ContainsKey("session_id")) {
+				if(GridManagementAgent.SessionExists(new LLUUID((string)requestData["session_id"]))) {
+					responseData["msg"]="Shutdown command accepted";
+					(new Thread(new ThreadStart(ShutdownServer))).Start();
+				} else {
+					response.IsFault=true;
+					responseData["error"]="bad session ID";
+				}
+			} else {
+				response.IsFault=true;
+				responseData["error"]="no session ID";
+			}
+
+	    		response.Value = responseData;
+	    		return response;
+		}
+
+		/// <summary>
+        /// Shuts down the grid server
+		/// </summary>
+		public static void ShutdownServer()
+		{
+			Console.WriteLine("Shutting down the grid server - recieved a grid manager request");
+            Console.WriteLine("Terminating in three seconds...");
+			Thread.Sleep(3000);
+			thecallback("shutdown");
+		}
+	 }
+}
+

+ 56 - 56
OpenSim/Grid/GridServer.Config/AssemblyInfo.cs

@@ -1,56 +1,56 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Reflection;
-using System.Runtime.InteropServices;
-// Information about this assembly is defined by the following
-// attributes.
-//
-// change them to the information which is associated with the assembly
-// you compile.
-
-[assembly: AssemblyTitle("GridConfig")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("GridConfig")]
-[assembly: AssemblyCopyright("")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// This sets the default COM visibility of types in the assembly to invisible.
-// If you need to expose a type to COM, use [ComVisible(true)] on that type.
-[assembly: ComVisible(false)]
-
-// The assembly version has following format :
-//
-// Major.Minor.Build.Revision
-//
-// You can specify all values by your own or you can build default build and revision
-// numbers with the '*' character (the default):
-
-[assembly: AssemblyVersion("1.0.*")]
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Reflection;
+using System.Runtime.InteropServices;
+// Information about this assembly is defined by the following
+// attributes.
+//
+// change them to the information which is associated with the assembly
+// you compile.
+
+[assembly: AssemblyTitle("GridConfig")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("GridConfig")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// This sets the default COM visibility of types in the assembly to invisible.
+// If you need to expose a type to COM, use [ComVisible(true)] on that type.
+[assembly: ComVisible(false)]
+
+// The assembly version has following format :
+//
+// Major.Minor.Build.Revision
+//
+// You can specify all values by your own or you can build default build and revision
+// numbers with the '*' character (the default):
+
+[assembly: AssemblyVersion("1.0.*")]

+ 160 - 160
OpenSim/Grid/GridServer.Config/DbGridConfig.cs

@@ -1,160 +1,160 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using Db4objects.Db4o;
-using OpenSim.Framework.Console;
-using OpenSim.Framework.Interfaces;
-
-namespace OpenGrid.Config.GridConfigDb4o
-{
-    /// <summary>
-    /// A grid configuration interface for returning the DB4o Config Provider
-    /// </summary>
-	public class Db40ConfigPlugin: IGridConfig
-	{
-        /// <summary>
-        /// Loads and returns a configuration objeect
-        /// </summary>
-        /// <returns>A grid configuration object</returns>
-		public GridConfig GetConfigObject()
-		{
-			MainLog.Instance.Verbose("Loading Db40Config dll");
-			return ( new DbGridConfig());
-		}
-	}
-	
-    /// <summary>
-    /// A DB4o based Gridserver configuration object
-    /// </summary>
-	public class DbGridConfig : GridConfig
-	{
-        /// <summary>
-        /// The DB4o Database
-        /// </summary>
-		private IObjectContainer db;	
-		
-        /// <summary>
-        /// User configuration for the Grid Config interfaces
-        /// </summary>
-		public void LoadDefaults() {
-			MainLog.Instance.Notice("Config.cs:LoadDefaults() - Please press enter to retain default or enter new settings");
-			
-            // About the grid options
-			this.GridOwner = MainLog.Instance.CmdPrompt("Grid owner", "OGS development team");
-
-            // Asset Options
-			this.DefaultAssetServer = MainLog.Instance.CmdPrompt("Default asset server","http://127.0.0.1:8003/");
-            this.AssetSendKey = MainLog.Instance.CmdPrompt("Key to send to asset server","null");
-            this.AssetRecvKey = MainLog.Instance.CmdPrompt("Key to expect from asset server","null");
-
-            // User Server Options
-	        this.DefaultUserServer = MainLog.Instance.CmdPrompt("Default user server","http://127.0.0.1:8002/");
-        	this.UserSendKey = MainLog.Instance.CmdPrompt("Key to send to user server","null");
-        	this.UserRecvKey = MainLog.Instance.CmdPrompt("Key to expect from user server","null");
-
-            // Region Server Options
-            this.SimSendKey = MainLog.Instance.CmdPrompt("Key to send to sims","null");
-            this.SimRecvKey = MainLog.Instance.CmdPrompt("Key to expect from sims","null");
-		}
-
-        /// <summary>
-        /// Initialises a new configuration object
-        /// </summary>
-		public override void InitConfig() {
-			try {
-                // Perform Db4o initialisation
-				db = Db4oFactory.OpenFile("opengrid.yap");
-
-                // Locate the grid configuration object
-				IObjectSet result = db.Get(typeof(DbGridConfig));
-                // Found?
-				if(result.Count==1) {
-					MainLog.Instance.Verbose("Config.cs:InitConfig() - Found a GridConfig object in the local database, loading");
-					foreach (DbGridConfig cfg in result) {
-                        // Import each setting into this class
-                        // Grid Settings
-						this.GridOwner=cfg.GridOwner;
-                        // Asset Settings
-						this.DefaultAssetServer=cfg.DefaultAssetServer;
-						this.AssetSendKey=cfg.AssetSendKey;
-						this.AssetRecvKey=cfg.AssetRecvKey;
-                        // User Settings
-						this.DefaultUserServer=cfg.DefaultUserServer;
-						this.UserSendKey=cfg.UserSendKey;
-						this.UserRecvKey=cfg.UserRecvKey;
-                        // Region Settings
-						this.SimSendKey=cfg.SimSendKey;
-						this.SimRecvKey=cfg.SimRecvKey;
-					}
-                // Create a new configuration object from this class
-				} else {
-					MainLog.Instance.Verbose("Config.cs:InitConfig() - Could not find object in database, loading precompiled defaults");
-
-                    // Load default settings into this class
-					LoadDefaults();
-
-                    // Saves to the database file...
-                    MainLog.Instance.Verbose( "Writing out default settings to local database");
-					db.Set(this);
-
-                    // Closes file locks
-					db.Close();
-				}
-			} catch(Exception e) {
-				MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
-                MainLog.Instance.Warn(e.ToString());
-			}
-			
-            // Grid Settings
-			MainLog.Instance.Verbose("Grid settings loaded:");
-			MainLog.Instance.Verbose("Grid owner: " + this.GridOwner);
-
-            // Asset Settings
-			MainLog.Instance.Verbose("Default asset server: " + this.DefaultAssetServer);
-			MainLog.Instance.Verbose("Key to send to asset server: " + this.AssetSendKey);
-			MainLog.Instance.Verbose("Key to expect from asset server: " + this.AssetRecvKey);
-
-            // User Settings
-			MainLog.Instance.Verbose("Default user server: " + this.DefaultUserServer);
-			MainLog.Instance.Verbose("Key to send to user server: " + this.UserSendKey);
-			MainLog.Instance.Verbose("Key to expect from user server: " + this.UserRecvKey);
-
-            // Region Settings
-			MainLog.Instance.Verbose("Key to send to sims: " + this.SimSendKey);
-			MainLog.Instance.Verbose("Key to expect from sims: " + this.SimRecvKey);
-		}
-	
-        /// <summary>
-        /// Closes down the database and releases filesystem locks
-        /// </summary>
-		public void Shutdown() {
-			db.Close();
-		}
-	}
-	
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using Db4objects.Db4o;
+using OpenSim.Framework.Console;
+using OpenSim.Framework.Interfaces;
+
+namespace OpenGrid.Config.GridConfigDb4o
+{
+    /// <summary>
+    /// A grid configuration interface for returning the DB4o Config Provider
+    /// </summary>
+	public class Db40ConfigPlugin: IGridConfig
+	{
+        /// <summary>
+        /// Loads and returns a configuration objeect
+        /// </summary>
+        /// <returns>A grid configuration object</returns>
+		public GridConfig GetConfigObject()
+		{
+			MainLog.Instance.Verbose("Loading Db40Config dll");
+			return ( new DbGridConfig());
+		}
+	}
+	
+    /// <summary>
+    /// A DB4o based Gridserver configuration object
+    /// </summary>
+	public class DbGridConfig : GridConfig
+	{
+        /// <summary>
+        /// The DB4o Database
+        /// </summary>
+		private IObjectContainer db;	
+		
+        /// <summary>
+        /// User configuration for the Grid Config interfaces
+        /// </summary>
+		public void LoadDefaults() {
+			MainLog.Instance.Notice("Config.cs:LoadDefaults() - Please press enter to retain default or enter new settings");
+			
+            // About the grid options
+			this.GridOwner = MainLog.Instance.CmdPrompt("Grid owner", "OGS development team");
+
+            // Asset Options
+			this.DefaultAssetServer = MainLog.Instance.CmdPrompt("Default asset server","http://127.0.0.1:8003/");
+            this.AssetSendKey = MainLog.Instance.CmdPrompt("Key to send to asset server","null");
+            this.AssetRecvKey = MainLog.Instance.CmdPrompt("Key to expect from asset server","null");
+
+            // User Server Options
+	        this.DefaultUserServer = MainLog.Instance.CmdPrompt("Default user server","http://127.0.0.1:8002/");
+        	this.UserSendKey = MainLog.Instance.CmdPrompt("Key to send to user server","null");
+        	this.UserRecvKey = MainLog.Instance.CmdPrompt("Key to expect from user server","null");
+
+            // Region Server Options
+            this.SimSendKey = MainLog.Instance.CmdPrompt("Key to send to sims","null");
+            this.SimRecvKey = MainLog.Instance.CmdPrompt("Key to expect from sims","null");
+		}
+
+        /// <summary>
+        /// Initialises a new configuration object
+        /// </summary>
+		public override void InitConfig() {
+			try {
+                // Perform Db4o initialisation
+				db = Db4oFactory.OpenFile("opengrid.yap");
+
+                // Locate the grid configuration object
+				IObjectSet result = db.Get(typeof(DbGridConfig));
+                // Found?
+				if(result.Count==1) {
+					MainLog.Instance.Verbose("Config.cs:InitConfig() - Found a GridConfig object in the local database, loading");
+					foreach (DbGridConfig cfg in result) {
+                        // Import each setting into this class
+                        // Grid Settings
+						this.GridOwner=cfg.GridOwner;
+                        // Asset Settings
+						this.DefaultAssetServer=cfg.DefaultAssetServer;
+						this.AssetSendKey=cfg.AssetSendKey;
+						this.AssetRecvKey=cfg.AssetRecvKey;
+                        // User Settings
+						this.DefaultUserServer=cfg.DefaultUserServer;
+						this.UserSendKey=cfg.UserSendKey;
+						this.UserRecvKey=cfg.UserRecvKey;
+                        // Region Settings
+						this.SimSendKey=cfg.SimSendKey;
+						this.SimRecvKey=cfg.SimRecvKey;
+					}
+                // Create a new configuration object from this class
+				} else {
+					MainLog.Instance.Verbose("Config.cs:InitConfig() - Could not find object in database, loading precompiled defaults");
+
+                    // Load default settings into this class
+					LoadDefaults();
+
+                    // Saves to the database file...
+                    MainLog.Instance.Verbose( "Writing out default settings to local database");
+					db.Set(this);
+
+                    // Closes file locks
+					db.Close();
+				}
+			} catch(Exception e) {
+				MainLog.Instance.Warn("Config.cs:InitConfig() - Exception occured");
+                MainLog.Instance.Warn(e.ToString());
+			}
+			
+            // Grid Settings
+			MainLog.Instance.Verbose("Grid settings loaded:");
+			MainLog.Instance.Verbose("Grid owner: " + this.GridOwner);
+
+            // Asset Settings
+			MainLog.Instance.Verbose("Default asset server: " + this.DefaultAssetServer);
+			MainLog.Instance.Verbose("Key to send to asset server: " + this.AssetSendKey);
+			MainLog.Instance.Verbose("Key to expect from asset server: " + this.AssetRecvKey);
+
+            // User Settings
+			MainLog.Instance.Verbose("Default user server: " + this.DefaultUserServer);
+			MainLog.Instance.Verbose("Key to send to user server: " + this.UserSendKey);
+			MainLog.Instance.Verbose("Key to expect from user server: " + this.UserRecvKey);
+
+            // Region Settings
+			MainLog.Instance.Verbose("Key to send to sims: " + this.SimSendKey);
+			MainLog.Instance.Verbose("Key to expect from sims: " + this.SimRecvKey);
+		}
+	
+        /// <summary>
+        /// Closes down the database and releases filesystem locks
+        /// </summary>
+		public void Shutdown() {
+			db.Close();
+		}
+	}
+	
+}

+ 710 - 710
OpenSim/Grid/GridServer/GridManager.cs

@@ -1,710 +1,710 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Reflection;
-using System.Xml;
-using libsecondlife;
-using Nwc.XmlRpc;
-using OpenSim.Framework.Console;
-using OpenSim.Framework.Data;
-using OpenSim.Framework.Interfaces;
-using OpenSim.Framework.Utilities;
-
-namespace OpenSim.Grid.GridServer
-{
-    class GridManager
-    {
-        Dictionary<string, IGridData> _plugins = new Dictionary<string, IGridData>();
-        Dictionary<string, ILogData> _logplugins = new Dictionary<string, ILogData>();
-
-        public GridConfig config;
-
-        /// <summary>
-        /// Adds a new grid server plugin - grid servers will be requested in the order they were loaded.
-        /// </summary>
-        /// <param name="FileName">The filename to the grid server plugin DLL</param>
-        public void AddPlugin(string FileName)
-		{
-            MainLog.Instance.Verbose("Storage: Attempting to load " + FileName);
-			Assembly pluginAssembly = Assembly.LoadFrom(FileName);
-
-            MainLog.Instance.Verbose("Storage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
-			foreach (Type pluginType in pluginAssembly.GetTypes())
-			{
-                if (!pluginType.IsAbstract)
-                {
-                    // Regions go here
-                    Type typeInterface = pluginType.GetInterface("IGridData", true);
-
-                    if (typeInterface != null)
-                    {
-                        IGridData plug = (IGridData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
-                        plug.Initialise();
-                        this._plugins.Add(plug.getName(), plug);
-                        MainLog.Instance.Verbose("Storage: Added IGridData Interface");
-                    }
-
-                    typeInterface = null;
-
-                    // Logs go here
-                    typeInterface = pluginType.GetInterface("ILogData", true);
-
-                    if (typeInterface != null)
-                    {
-                        ILogData plug = (ILogData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
-                        plug.Initialise();
-                        this._logplugins.Add(plug.getName(), plug);
-                        MainLog.Instance.Verbose( "Storage: Added ILogData Interface");
-                    }
-
-                    typeInterface = null;
-                }
-			}
-			
-			pluginAssembly = null; 
-        }
-
-        /// <summary>
-        /// Logs a piece of information to the database
-        /// </summary>
-        /// <param name="target">What you were operating on (in grid server, this will likely be the region UUIDs)</param>
-        /// <param name="method">Which method is being called?</param>
-        /// <param name="args">What arguments are being passed?</param>
-        /// <param name="priority">How high priority is this? 1 = Max, 6 = Verbose</param>
-        /// <param name="message">The message to log</param>
-        private void logToDB(string target, string method, string args, int priority, string message)
-        {
-            foreach (KeyValuePair<string, ILogData> kvp in _logplugins)
-            {
-                try
-                {
-                    kvp.Value.saveLog("Gridserver", target, method, args, priority, message);
-                }
-                catch (Exception)
-                {
-                    MainLog.Instance.Warn("Storage: unable to write log via " + kvp.Key);
-                }
-            }
-        }
-
-        /// <summary>
-        /// Returns a region by argument
-        /// </summary>
-        /// <param name="uuid">A UUID key of the region to return</param>
-        /// <returns>A SimProfileData for the region</returns>
-        public SimProfileData getRegion(LLUUID uuid)
-        {
-            foreach(KeyValuePair<string,IGridData> kvp in _plugins) {
-                try
-                {
-                    return kvp.Value.GetProfileByLLUUID(uuid);
-                }
-                catch (Exception e)
-                {
-                    MainLog.Instance.Warn("Message from Storage: " + e.Message);
-                }
-            }
-            return null;
-        }
-
-        /// <summary>
-        /// Returns a region by argument
-        /// </summary>
-        /// <param name="uuid">A regionHandle of the region to return</param>
-        /// <returns>A SimProfileData for the region</returns>
-        public SimProfileData getRegion(ulong handle)
-        {
-            foreach (KeyValuePair<string, IGridData> kvp in _plugins)
-            {
-                try
-                {
-                    return kvp.Value.GetProfileByHandle(handle);
-                }
-                catch
-                {
-                    MainLog.Instance.Warn("Storage: Unable to find region " + handle.ToString() + " via " + kvp.Key);
-                }
-            }
-            return null;
-        }
-
-        public Dictionary<ulong, SimProfileData> getRegions(uint xmin, uint ymin, uint xmax, uint ymax)
-        {
-            Dictionary<ulong, SimProfileData> regions = new Dictionary<ulong, SimProfileData>();
-
-            SimProfileData[] neighbours;
-
-            foreach (KeyValuePair<string, IGridData> kvp in _plugins)
-            {
-                try
-                {
-                    neighbours = kvp.Value.GetProfilesInRange(xmin, ymin, xmax, ymax);
-                    foreach (SimProfileData neighbour in neighbours)
-                    {
-                        regions[neighbour.regionHandle] = neighbour;
-                    }
-                }
-                catch
-                {
-                    MainLog.Instance.Warn("Storage: Unable to query regionblock via " + kvp.Key);
-                }
-            }
-
-            return regions;
-        }
-
-
-        
-        /// <summary>
-        /// Returns a XML String containing a list of the neighbouring regions
-        /// </summary>
-        /// <param name="reqhandle">The regionhandle for the center sim</param>
-        /// <returns>An XML string containing neighbour entities</returns>
-        public string GetXMLNeighbours(ulong reqhandle)
-        {
-            string response = "";
-            SimProfileData central_region = getRegion(reqhandle);
-            SimProfileData neighbour;
-            for (int x = -1; x < 2; x++) for (int y = -1; y < 2; y++)
-                {
-                    if (getRegion(Util.UIntsToLong((uint)((central_region.regionLocX + x) * 256), (uint)(central_region.regionLocY + y) * 256)) != null)
-                    {
-                        neighbour = getRegion(Util.UIntsToLong((uint)((central_region.regionLocX + x) * 256), (uint)(central_region.regionLocY + y) * 256));
-                        response += "<neighbour>";
-                        response += "<sim_ip>" + neighbour.serverIP + "</sim_ip>";
-                        response += "<sim_port>" + neighbour.serverPort.ToString() + "</sim_port>";
-                        response += "<locx>" + neighbour.regionLocX.ToString() + "</locx>";
-                        response += "<locy>" + neighbour.regionLocY.ToString() + "</locy>";
-                        response += "<regionhandle>" + neighbour.regionHandle.ToString() + "</regionhandle>";
-                        response += "</neighbour>";
-
-                    }
-                }
-            return response;
-        }
-
-        /// <summary>
-        /// Performed when a region connects to the grid server initially.
-        /// </summary>
-        /// <param name="request">The XMLRPC Request</param>
-        /// <returns>Startup parameters</returns>
-        public XmlRpcResponse XmlRpcSimulatorLoginMethod(XmlRpcRequest request)
-        {
-
-            XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable responseData = new Hashtable();
-            response.Value = responseData;
-
-            SimProfileData TheSim = null;
-            Hashtable requestData = (Hashtable)request.Params[0];
-
-            if (requestData.ContainsKey("UUID"))
-            {
-                TheSim = getRegion(new LLUUID((string)requestData["UUID"]));
-                
-                logToDB((new LLUUID((string)requestData["UUID"])).ToStringHyphenated(),"XmlRpcSimulatorLoginMethod","", 5,"Region attempting login with UUID.");
-            }
-            else if (requestData.ContainsKey("region_handle"))
-            {
-
-                TheSim = getRegion((ulong)Convert.ToUInt64(requestData["region_handle"]));
-                logToDB((string)requestData["region_handle"], "XmlRpcSimulatorLoginMethod", "", 5, "Region attempting login with regionHandle.");
-            }
-            else
-            {
-                responseData["error"] = "No UUID or region_handle passed to grid server - unable to connect you";
-                return response;
-            }
-
-            if (TheSim == null) // Shouldnt this be in the REST Simulator Set method?
-            {
-                //NEW REGION
-                TheSim = new SimProfileData();
-
-                TheSim.regionRecvKey = config.SimRecvKey;
-                TheSim.regionSendKey = config.SimSendKey;
-                TheSim.regionSecret = config.SimRecvKey;
-                TheSim.regionDataURI = "";
-                TheSim.regionAssetURI = config.DefaultAssetServer;
-                TheSim.regionAssetRecvKey = config.AssetRecvKey;
-                TheSim.regionAssetSendKey = config.AssetSendKey;
-                TheSim.regionUserURI = config.DefaultUserServer;
-                TheSim.regionUserSendKey = config.UserSendKey;
-                TheSim.regionUserRecvKey = config.UserRecvKey;
-
-                TheSim.serverIP = (string)requestData["sim_ip"];
-                TheSim.serverPort = Convert.ToUInt32((string)requestData["sim_port"]);
-                TheSim.httpPort = Convert.ToUInt32((string)requestData["http_port"]);
-                TheSim.remotingPort = Convert.ToUInt32((string)requestData["remoting_port"]);
-                TheSim.regionLocX = Convert.ToUInt32((string)requestData["region_locx"]);
-                TheSim.regionLocY = Convert.ToUInt32((string)requestData["region_locy"]);
-                TheSim.regionLocZ = 0;
-                TheSim.regionMapTextureID = new LLUUID((string)requestData["map-image-id"]);
-
-                TheSim.regionHandle = Helpers.UIntsToLong((TheSim.regionLocX * 256), (TheSim.regionLocY * 256));
-                System.Console.WriteLine("adding region " + TheSim.regionLocX + " , " + TheSim.regionLocY + " , " + TheSim.regionHandle);
-                TheSim.serverURI = "http://" + TheSim.serverIP + ":" + TheSim.serverPort + "/";
-                TheSim.httpServerURI = "http://" + TheSim.serverIP + ":" + TheSim.httpPort + "/";
-
-                Console.WriteLine("NEW SIM: " + TheSim.serverURI);
-                TheSim.regionName = (string)requestData["sim_name"];
-                TheSim.UUID = new LLUUID((string)requestData["UUID"]);
-
-                foreach (KeyValuePair<string, IGridData> kvp in _plugins)
-                {
-                    try
-                    {
-                        DataResponse insertResponse = kvp.Value.AddProfile(TheSim);
-                        switch(insertResponse)
-                        {
-                            case DataResponse.RESPONSE_OK:
-                                OpenSim.Framework.Console.MainLog.Instance.Verbose("New sim creation successful: " + TheSim.regionName);
-                                break;
-                            case DataResponse.RESPONSE_ERROR:
-                                OpenSim.Framework.Console.MainLog.Instance.Warn("New sim creation failed (Error): " + TheSim.regionName);
-                                break;
-                            case DataResponse.RESPONSE_INVALIDCREDENTIALS:
-                                OpenSim.Framework.Console.MainLog.Instance.Warn("New sim creation failed (Invalid Credentials): " + TheSim.regionName);
-                                break;
-                            case DataResponse.RESPONSE_AUTHREQUIRED:
-                                OpenSim.Framework.Console.MainLog.Instance.Warn("New sim creation failed (Authentication Required): " + TheSim.regionName);
-                                break;
-                        }
-                        
-                    }
-                    catch (Exception e)
-                    {
-                        OpenSim.Framework.Console.MainLog.Instance.Warn("Storage: Unable to add region " + TheSim.UUID.ToStringHyphenated() + " via " + kvp.Key);
-                        OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString());
-                    }
-                }
-
-
-                if (getRegion(TheSim.regionHandle) == null)
-                {
-                    responseData["error"] = "Unable to add new region";
-                    return response;
-                }
-            }
-           
-
-            ArrayList SimNeighboursData = new ArrayList();
-
-            SimProfileData neighbour;
-            Hashtable NeighbourBlock;
-
-            bool fastMode = false; // Only compatible with MySQL right now
-
-            if (fastMode)
-            {
-                Dictionary<ulong, SimProfileData> neighbours = getRegions(TheSim.regionLocX - 1, TheSim.regionLocY - 1, TheSim.regionLocX + 1, TheSim.regionLocY + 1);
-
-                foreach (KeyValuePair<ulong, SimProfileData> aSim in neighbours)
-                {
-                    NeighbourBlock = new Hashtable();
-                    NeighbourBlock["sim_ip"] = aSim.Value.serverIP.ToString();
-                    NeighbourBlock["sim_port"] = aSim.Value.serverPort.ToString();
-                    NeighbourBlock["region_locx"] = aSim.Value.regionLocX.ToString();
-                    NeighbourBlock["region_locy"] = aSim.Value.regionLocY.ToString();
-                    NeighbourBlock["UUID"] = aSim.Value.UUID.ToString();
-
-                    if (aSim.Value.UUID != TheSim.UUID)
-                        SimNeighboursData.Add(NeighbourBlock);
-                }
-            }
-            else
-            {
-                for (int x = -1; x < 2; x++) for (int y = -1; y < 2; y++)
-                    {
-                        if (getRegion(Helpers.UIntsToLong((uint)((TheSim.regionLocX + x) * 256), (uint)(TheSim.regionLocY + y) * 256)) != null)
-                        {
-                            neighbour = getRegion(Helpers.UIntsToLong((uint)((TheSim.regionLocX + x) * 256), (uint)(TheSim.regionLocY + y) * 256));
-
-                            NeighbourBlock = new Hashtable();
-                            NeighbourBlock["sim_ip"] = neighbour.serverIP;
-                            NeighbourBlock["sim_port"] = neighbour.serverPort.ToString();
-                            NeighbourBlock["region_locx"] = neighbour.regionLocX.ToString();
-                            NeighbourBlock["region_locy"] = neighbour.regionLocY.ToString();
-                            NeighbourBlock["UUID"] = neighbour.UUID.ToString();
-
-                            if (neighbour.UUID != TheSim.UUID) SimNeighboursData.Add(NeighbourBlock);
-                        }
-                    }
-            }
-
-            responseData["UUID"] = TheSim.UUID.ToString();
-            responseData["region_locx"] = TheSim.regionLocX.ToString();
-            responseData["region_locy"] = TheSim.regionLocY.ToString();
-            responseData["regionname"] = TheSim.regionName;
-            responseData["estate_id"] = "1";
-            responseData["neighbours"] = SimNeighboursData;
-
-            responseData["sim_ip"] = TheSim.serverIP;
-            responseData["sim_port"] = TheSim.serverPort.ToString();
-            responseData["asset_url"] = TheSim.regionAssetURI;
-            responseData["asset_sendkey"] = TheSim.regionAssetSendKey;
-            responseData["asset_recvkey"] = TheSim.regionAssetRecvKey;
-            responseData["user_url"] = TheSim.regionUserURI;
-            responseData["user_sendkey"] = TheSim.regionUserSendKey;
-            responseData["user_recvkey"] = TheSim.regionUserRecvKey;
-            responseData["authkey"] = TheSim.regionSecret;
-
-            // New! If set, use as URL to local sim storage (ie http://remotehost/region.yap)
-            responseData["data_uri"] = TheSim.regionDataURI;
-        
-
-        return response;
-        }
-
-        public XmlRpcResponse XmlRpcSimulatorDataRequestMethod(XmlRpcRequest request)
-        {
-            Hashtable requestData = (Hashtable)request.Params[0];
-            Hashtable responseData = new Hashtable();
-            SimProfileData simData = null;
-            if (requestData.ContainsKey("region_UUID"))
-            {
-                simData = getRegion(new LLUUID((string)requestData["region_UUID"]));
-            }
-            else if (requestData.ContainsKey("region_handle"))
-            {
-                Console.WriteLine("requesting data for region " + (string)requestData["region_handle"]);
-                simData = getRegion(Convert.ToUInt64((string)requestData["region_handle"]));
-            }
-
-            if (simData == null)
-            {
-                //Sim does not exist
-                Console.WriteLine("region not found");
-                responseData["error"] = "Sim does not exist";
-            }
-            else
-            {
-                Console.WriteLine("found region");
-                responseData["sim_ip"] = simData.serverIP;
-                responseData["sim_port"] = simData.serverPort.ToString();
-                responseData["http_port"] = simData.httpPort.ToString();
-                responseData["remoting_port"] = simData.remotingPort.ToString();
-                responseData["region_locx"] = simData.regionLocX.ToString() ;
-                responseData["region_locy"] = simData.regionLocY.ToString();
-                responseData["region_UUID"] = simData.UUID.UUID.ToString();
-                responseData["region_name"] = simData.regionName;
-            }
-
-            XmlRpcResponse response = new XmlRpcResponse();
-            response.Value = responseData;
-            return response;
-        }
-
-        public XmlRpcResponse XmlRpcMapBlockMethod(XmlRpcRequest request)
-        {
-            int xmin=980, ymin=980, xmax=1020, ymax=1020;
-
-            Hashtable requestData = (Hashtable)request.Params[0];
-            if (requestData.ContainsKey("xmin"))
-            {
-                xmin = (Int32)requestData["xmin"];
-            }
-            if (requestData.ContainsKey("ymin"))
-            {
-                ymin = (Int32)requestData["ymin"];
-            }
-            if (requestData.ContainsKey("xmax"))
-            {
-                xmax = (Int32)requestData["xmax"];
-            }
-            if (requestData.ContainsKey("ymax"))
-            {
-                ymax = (Int32)requestData["ymax"];
-            }
-
-            XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable responseData = new Hashtable();
-            response.Value = responseData;
-            IList simProfileList = new ArrayList();
-
-            bool fastMode = false; // MySQL Only
-
-            if (fastMode)
-            {
-                Dictionary<ulong, SimProfileData> neighbours = getRegions((uint)xmin, (uint)ymin, (uint)xmax, (uint)ymax);
-
-                foreach (KeyValuePair<ulong, SimProfileData> aSim in neighbours)
-                {
-                    Hashtable simProfileBlock = new Hashtable();
-                    simProfileBlock["x"] = aSim.Value.regionLocX.ToString();
-                    simProfileBlock["y"] = aSim.Value.regionLocY.ToString();
-                    System.Console.WriteLine("send neighbour info for " + aSim.Value.regionLocX.ToString() + " , " + aSim.Value.regionLocY.ToString());
-                    simProfileBlock["name"] = aSim.Value.regionName;
-                    simProfileBlock["access"] = 21;
-                    simProfileBlock["region-flags"] = 512;
-                    simProfileBlock["water-height"] = 0;
-                    simProfileBlock["agents"] = 1;
-                    simProfileBlock["map-image-id"] = aSim.Value.regionMapTextureID.ToString();
-
-                    // For Sugilite compatibility
-                    simProfileBlock["regionhandle"] = aSim.Value.regionHandle.ToString();
-                    simProfileBlock["sim_ip"] = aSim.Value.serverIP.ToString();
-                    simProfileBlock["sim_port"] = aSim.Value.serverPort.ToString();
-                    simProfileBlock["sim_uri"] = aSim.Value.serverURI.ToString();
-                    simProfileBlock["uuid"] = aSim.Value.UUID.ToStringHyphenated();
-
-                    simProfileList.Add(simProfileBlock);
-                }
-                MainLog.Instance.Verbose("World map request processed, returned " + simProfileList.Count.ToString() + " region(s) in range via FastMode");
-            }
-            else
-            {
-                SimProfileData simProfile;
-                for (int x = xmin; x < xmax+1; x++)
-                {
-                    for (int y = ymin; y < ymax+1; y++)
-                    {
-                        ulong regHandle = Helpers.UIntsToLong((uint)(x * 256), (uint)(y * 256));
-                        simProfile = getRegion(regHandle);
-                        if (simProfile != null)
-                        {
-                            Hashtable simProfileBlock = new Hashtable();
-                            simProfileBlock["x"] = x;
-                            simProfileBlock["y"] = y;
-                            simProfileBlock["name"] = simProfile.regionName;
-                            simProfileBlock["access"] = 0;
-                            simProfileBlock["region-flags"] = 0;
-                            simProfileBlock["water-height"] = 20;
-                            simProfileBlock["agents"] = 1;
-                            simProfileBlock["map-image-id"] = simProfile.regionMapTextureID.ToStringHyphenated();
-
-                            // For Sugilite compatibility
-                            simProfileBlock["regionhandle"] = simProfile.regionHandle.ToString();
-                            simProfileBlock["sim_ip"] = simProfile.serverIP.ToString();
-                            simProfileBlock["sim_port"] = simProfile.serverPort.ToString();
-                            simProfileBlock["sim_uri"] = simProfile.serverURI.ToString();
-                            simProfileBlock["uuid"] = simProfile.UUID.ToStringHyphenated();
-
-                            simProfileList.Add(simProfileBlock);
-                        }
-                    }
-                }
-                MainLog.Instance.Verbose("World map request processed, returned " + simProfileList.Count.ToString() + " region(s) in range via Standard Mode");
-            }
-
-            responseData["sim-profiles"] = simProfileList;
-
-            return response;
-        }
-
-
-
-        /// <summary>
-        /// Performs a REST Get Operation
-        /// </summary>
-        /// <param name="request"></param>
-        /// <param name="path"></param>
-        /// <param name="param"></param>
-        /// <returns></returns>
-        public string RestGetRegionMethod(string request, string path, string param)
-        {
-            return RestGetSimMethod("", "/sims/", param);
-        }
-
-        /// <summary>
-        /// Performs a REST Set Operation
-        /// </summary>
-        /// <param name="request"></param>
-        /// <param name="path"></param>
-        /// <param name="param"></param>
-        /// <returns></returns>
-        public string RestSetRegionMethod(string request, string path, string param)
-        {
-            return RestSetSimMethod("", "/sims/", param);
-        }
-
-        /// <summary>
-        /// Returns information about a sim via a REST Request
-        /// </summary>
-        /// <param name="request"></param>
-        /// <param name="path"></param>
-        /// <param name="param"></param>
-        /// <returns>Information about the sim in XML</returns>
-        public string RestGetSimMethod(string request, string path, string param)
-        {
-            string respstring = String.Empty;
-
-            SimProfileData TheSim;
-            LLUUID UUID = new LLUUID(param);
-            TheSim = getRegion(UUID);
-
-            if (!(TheSim == null))
-            {
-                respstring = "<Root>";
-                respstring += "<authkey>" + TheSim.regionSendKey + "</authkey>";
-                respstring += "<sim>";
-                respstring += "<uuid>" + TheSim.UUID.ToString() + "</uuid>";
-                respstring += "<regionname>" + TheSim.regionName + "</regionname>";
-                respstring += "<sim_ip>" + TheSim.serverIP + "</sim_ip>";
-                respstring += "<sim_port>" + TheSim.serverPort.ToString() + "</sim_port>";
-                respstring += "<region_locx>" + TheSim.regionLocX.ToString() + "</region_locx>";
-                respstring += "<region_locy>" + TheSim.regionLocY.ToString() + "</region_locy>";
-                respstring += "<estate_id>1</estate_id>";
-                respstring += "</sim>";
-                respstring += "</Root>";
-            }
-
-            return respstring;
-        }
-
-        /// <summary>
-        /// Creates or updates a sim via a REST Method Request
-        /// BROKEN with SQL Update
-        /// </summary>
-        /// <param name="request"></param>
-        /// <param name="path"></param>
-        /// <param name="param"></param>
-        /// <returns>"OK" or an error</returns>
-        public string RestSetSimMethod(string request, string path, string param)
-        {
-            Console.WriteLine("Processing region update via REST method");
-            SimProfileData TheSim;
-            TheSim = getRegion(new LLUUID(param));
-            if ((TheSim) == null)
-            {
-                TheSim = new SimProfileData();
-                LLUUID UUID = new LLUUID(param);
-                TheSim.UUID = UUID;
-                TheSim.regionRecvKey = config.SimRecvKey;
-            }
-
-            XmlDocument doc = new XmlDocument();
-            doc.LoadXml(request);
-            XmlNode rootnode = doc.FirstChild;
-            XmlNode authkeynode = rootnode.ChildNodes[0];
-            if (authkeynode.Name != "authkey")
-            {
-                return "ERROR! bad XML - expected authkey tag";
-            }
-
-            XmlNode simnode = rootnode.ChildNodes[1];
-            if (simnode.Name != "sim")
-            {
-                return "ERROR! bad XML - expected sim tag";
-            }
-
-            //TheSim.regionSendKey = Cfg;
-            TheSim.regionRecvKey = config.SimRecvKey;
-            TheSim.regionSendKey = config.SimSendKey;
-            TheSim.regionSecret = config.SimRecvKey;
-            TheSim.regionDataURI = "";
-            TheSim.regionAssetURI = config.DefaultAssetServer;
-            TheSim.regionAssetRecvKey = config.AssetRecvKey;
-            TheSim.regionAssetSendKey = config.AssetSendKey;
-            TheSim.regionUserURI = config.DefaultUserServer;
-            TheSim.regionUserSendKey = config.UserSendKey;
-            TheSim.regionUserRecvKey = config.UserRecvKey;
-
-
-            for (int i = 0; i < simnode.ChildNodes.Count; i++)
-            {
-                switch (simnode.ChildNodes[i].Name)
-                {
-                    case "regionname":
-                        TheSim.regionName = simnode.ChildNodes[i].InnerText;
-                        break;
-
-                    case "sim_ip":
-                        TheSim.serverIP = simnode.ChildNodes[i].InnerText;
-                        break;
-
-                    case "sim_port":
-                        TheSim.serverPort = Convert.ToUInt32(simnode.ChildNodes[i].InnerText);
-                        break;
-
-                    case "region_locx":
-                        TheSim.regionLocX = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText);
-                        TheSim.regionHandle = Helpers.UIntsToLong((TheSim.regionLocX * 256), (TheSim.regionLocY * 256));
-                        break;
-
-                    case "region_locy":
-                        TheSim.regionLocY = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText);
-                        TheSim.regionHandle = Helpers.UIntsToLong((TheSim.regionLocX * 256), (TheSim.regionLocY * 256));
-                        break;
-                }
-            }
-
-            TheSim.serverURI = "http://" + TheSim.serverIP + ":" + TheSim.serverPort + "/";
-
-            bool requirePublic = false;
-            bool requireValid = true;
-
-            if (requirePublic && (TheSim.serverIP.StartsWith("172.16") || TheSim.serverIP.StartsWith("192.168") || TheSim.serverIP.StartsWith("10.") || TheSim.serverIP.StartsWith("0.") || TheSim.serverIP.StartsWith("255.")))
-            {
-                return "ERROR! Servers must register with public addresses.";
-            }
-
-            if (requireValid && (TheSim.serverIP.StartsWith("0.")))
-            {
-                return "ERROR! 0.*.*.* Addresses are invalid, please check your server config and try again";
-            }
-
-            
-            try
-            {
-                MainLog.Instance.Verbose("Updating / adding via " + _plugins.Count + " storage provider(s) registered.");
-                foreach (KeyValuePair<string, IGridData> kvp in _plugins)
-                {
-                    try
-                    {
-                        //Check reservations
-                        ReservationData reserveData = kvp.Value.GetReservationAtPoint(TheSim.regionLocX, TheSim.regionLocY);
-                        if ((reserveData != null && reserveData.gridRecvKey == TheSim.regionRecvKey) || (reserveData == null && authkeynode.InnerText != TheSim.regionRecvKey))
-                        {
-                            kvp.Value.AddProfile(TheSim);
-                            MainLog.Instance.Verbose("New sim added to grid (" + TheSim.regionName + ")");
-                            logToDB(TheSim.UUID.ToStringHyphenated(), "RestSetSimMethod", "", 5, "Region successfully updated and connected to grid.");
-                        }
-                        else
-                        {
-                            MainLog.Instance.Warn("Unable to update region (RestSetSimMethod): Incorrect reservation auth key.");// Wanted: " + reserveData.gridRecvKey + ", Got: " + TheSim.regionRecvKey + ".");
-                            return "Unable to update region (RestSetSimMethod): Incorrect auth key.";
-                        }
-                    }
-                    catch (Exception e)
-                    {
-                        MainLog.Instance.Verbose("getRegionPlugin Handle " + kvp.Key + " unable to add new sim: " + e.ToString());
-                    }
-                }
-                return "OK";
-            }
-            catch (Exception e)
-            {
-                return "ERROR! Could not save to database! (" + e.ToString() + ")";
-            }
-        }
-
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Xml;
+using libsecondlife;
+using Nwc.XmlRpc;
+using OpenSim.Framework.Console;
+using OpenSim.Framework.Data;
+using OpenSim.Framework.Interfaces;
+using OpenSim.Framework.Utilities;
+
+namespace OpenSim.Grid.GridServer
+{
+    class GridManager
+    {
+        Dictionary<string, IGridData> _plugins = new Dictionary<string, IGridData>();
+        Dictionary<string, ILogData> _logplugins = new Dictionary<string, ILogData>();
+
+        public GridConfig config;
+
+        /// <summary>
+        /// Adds a new grid server plugin - grid servers will be requested in the order they were loaded.
+        /// </summary>
+        /// <param name="FileName">The filename to the grid server plugin DLL</param>
+        public void AddPlugin(string FileName)
+		{
+            MainLog.Instance.Verbose("Storage: Attempting to load " + FileName);
+			Assembly pluginAssembly = Assembly.LoadFrom(FileName);
+
+            MainLog.Instance.Verbose("Storage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
+			foreach (Type pluginType in pluginAssembly.GetTypes())
+			{
+                if (!pluginType.IsAbstract)
+                {
+                    // Regions go here
+                    Type typeInterface = pluginType.GetInterface("IGridData", true);
+
+                    if (typeInterface != null)
+                    {
+                        IGridData plug = (IGridData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
+                        plug.Initialise();
+                        this._plugins.Add(plug.getName(), plug);
+                        MainLog.Instance.Verbose("Storage: Added IGridData Interface");
+                    }
+
+                    typeInterface = null;
+
+                    // Logs go here
+                    typeInterface = pluginType.GetInterface("ILogData", true);
+
+                    if (typeInterface != null)
+                    {
+                        ILogData plug = (ILogData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
+                        plug.Initialise();
+                        this._logplugins.Add(plug.getName(), plug);
+                        MainLog.Instance.Verbose( "Storage: Added ILogData Interface");
+                    }
+
+                    typeInterface = null;
+                }
+			}
+			
+			pluginAssembly = null; 
+        }
+
+        /// <summary>
+        /// Logs a piece of information to the database
+        /// </summary>
+        /// <param name="target">What you were operating on (in grid server, this will likely be the region UUIDs)</param>
+        /// <param name="method">Which method is being called?</param>
+        /// <param name="args">What arguments are being passed?</param>
+        /// <param name="priority">How high priority is this? 1 = Max, 6 = Verbose</param>
+        /// <param name="message">The message to log</param>
+        private void logToDB(string target, string method, string args, int priority, string message)
+        {
+            foreach (KeyValuePair<string, ILogData> kvp in _logplugins)
+            {
+                try
+                {
+                    kvp.Value.saveLog("Gridserver", target, method, args, priority, message);
+                }
+                catch (Exception)
+                {
+                    MainLog.Instance.Warn("Storage: unable to write log via " + kvp.Key);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Returns a region by argument
+        /// </summary>
+        /// <param name="uuid">A UUID key of the region to return</param>
+        /// <returns>A SimProfileData for the region</returns>
+        public SimProfileData getRegion(LLUUID uuid)
+        {
+            foreach(KeyValuePair<string,IGridData> kvp in _plugins) {
+                try
+                {
+                    return kvp.Value.GetProfileByLLUUID(uuid);
+                }
+                catch (Exception e)
+                {
+                    MainLog.Instance.Warn("Message from Storage: " + e.Message);
+                }
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// Returns a region by argument
+        /// </summary>
+        /// <param name="uuid">A regionHandle of the region to return</param>
+        /// <returns>A SimProfileData for the region</returns>
+        public SimProfileData getRegion(ulong handle)
+        {
+            foreach (KeyValuePair<string, IGridData> kvp in _plugins)
+            {
+                try
+                {
+                    return kvp.Value.GetProfileByHandle(handle);
+                }
+                catch
+                {
+                    MainLog.Instance.Warn("Storage: Unable to find region " + handle.ToString() + " via " + kvp.Key);
+                }
+            }
+            return null;
+        }
+
+        public Dictionary<ulong, SimProfileData> getRegions(uint xmin, uint ymin, uint xmax, uint ymax)
+        {
+            Dictionary<ulong, SimProfileData> regions = new Dictionary<ulong, SimProfileData>();
+
+            SimProfileData[] neighbours;
+
+            foreach (KeyValuePair<string, IGridData> kvp in _plugins)
+            {
+                try
+                {
+                    neighbours = kvp.Value.GetProfilesInRange(xmin, ymin, xmax, ymax);
+                    foreach (SimProfileData neighbour in neighbours)
+                    {
+                        regions[neighbour.regionHandle] = neighbour;
+                    }
+                }
+                catch
+                {
+                    MainLog.Instance.Warn("Storage: Unable to query regionblock via " + kvp.Key);
+                }
+            }
+
+            return regions;
+        }
+
+
+        
+        /// <summary>
+        /// Returns a XML String containing a list of the neighbouring regions
+        /// </summary>
+        /// <param name="reqhandle">The regionhandle for the center sim</param>
+        /// <returns>An XML string containing neighbour entities</returns>
+        public string GetXMLNeighbours(ulong reqhandle)
+        {
+            string response = "";
+            SimProfileData central_region = getRegion(reqhandle);
+            SimProfileData neighbour;
+            for (int x = -1; x < 2; x++) for (int y = -1; y < 2; y++)
+                {
+                    if (getRegion(Util.UIntsToLong((uint)((central_region.regionLocX + x) * 256), (uint)(central_region.regionLocY + y) * 256)) != null)
+                    {
+                        neighbour = getRegion(Util.UIntsToLong((uint)((central_region.regionLocX + x) * 256), (uint)(central_region.regionLocY + y) * 256));
+                        response += "<neighbour>";
+                        response += "<sim_ip>" + neighbour.serverIP + "</sim_ip>";
+                        response += "<sim_port>" + neighbour.serverPort.ToString() + "</sim_port>";
+                        response += "<locx>" + neighbour.regionLocX.ToString() + "</locx>";
+                        response += "<locy>" + neighbour.regionLocY.ToString() + "</locy>";
+                        response += "<regionhandle>" + neighbour.regionHandle.ToString() + "</regionhandle>";
+                        response += "</neighbour>";
+
+                    }
+                }
+            return response;
+        }
+
+        /// <summary>
+        /// Performed when a region connects to the grid server initially.
+        /// </summary>
+        /// <param name="request">The XMLRPC Request</param>
+        /// <returns>Startup parameters</returns>
+        public XmlRpcResponse XmlRpcSimulatorLoginMethod(XmlRpcRequest request)
+        {
+
+            XmlRpcResponse response = new XmlRpcResponse();
+            Hashtable responseData = new Hashtable();
+            response.Value = responseData;
+
+            SimProfileData TheSim = null;
+            Hashtable requestData = (Hashtable)request.Params[0];
+
+            if (requestData.ContainsKey("UUID"))
+            {
+                TheSim = getRegion(new LLUUID((string)requestData["UUID"]));
+                
+                logToDB((new LLUUID((string)requestData["UUID"])).ToStringHyphenated(),"XmlRpcSimulatorLoginMethod","", 5,"Region attempting login with UUID.");
+            }
+            else if (requestData.ContainsKey("region_handle"))
+            {
+
+                TheSim = getRegion((ulong)Convert.ToUInt64(requestData["region_handle"]));
+                logToDB((string)requestData["region_handle"], "XmlRpcSimulatorLoginMethod", "", 5, "Region attempting login with regionHandle.");
+            }
+            else
+            {
+                responseData["error"] = "No UUID or region_handle passed to grid server - unable to connect you";
+                return response;
+            }
+
+            if (TheSim == null) // Shouldnt this be in the REST Simulator Set method?
+            {
+                //NEW REGION
+                TheSim = new SimProfileData();
+
+                TheSim.regionRecvKey = config.SimRecvKey;
+                TheSim.regionSendKey = config.SimSendKey;
+                TheSim.regionSecret = config.SimRecvKey;
+                TheSim.regionDataURI = "";
+                TheSim.regionAssetURI = config.DefaultAssetServer;
+                TheSim.regionAssetRecvKey = config.AssetRecvKey;
+                TheSim.regionAssetSendKey = config.AssetSendKey;
+                TheSim.regionUserURI = config.DefaultUserServer;
+                TheSim.regionUserSendKey = config.UserSendKey;
+                TheSim.regionUserRecvKey = config.UserRecvKey;
+
+                TheSim.serverIP = (string)requestData["sim_ip"];
+                TheSim.serverPort = Convert.ToUInt32((string)requestData["sim_port"]);
+                TheSim.httpPort = Convert.ToUInt32((string)requestData["http_port"]);
+                TheSim.remotingPort = Convert.ToUInt32((string)requestData["remoting_port"]);
+                TheSim.regionLocX = Convert.ToUInt32((string)requestData["region_locx"]);
+                TheSim.regionLocY = Convert.ToUInt32((string)requestData["region_locy"]);
+                TheSim.regionLocZ = 0;
+                TheSim.regionMapTextureID = new LLUUID((string)requestData["map-image-id"]);
+
+                TheSim.regionHandle = Helpers.UIntsToLong((TheSim.regionLocX * 256), (TheSim.regionLocY * 256));
+                System.Console.WriteLine("adding region " + TheSim.regionLocX + " , " + TheSim.regionLocY + " , " + TheSim.regionHandle);
+                TheSim.serverURI = "http://" + TheSim.serverIP + ":" + TheSim.serverPort + "/";
+                TheSim.httpServerURI = "http://" + TheSim.serverIP + ":" + TheSim.httpPort + "/";
+
+                Console.WriteLine("NEW SIM: " + TheSim.serverURI);
+                TheSim.regionName = (string)requestData["sim_name"];
+                TheSim.UUID = new LLUUID((string)requestData["UUID"]);
+
+                foreach (KeyValuePair<string, IGridData> kvp in _plugins)
+                {
+                    try
+                    {
+                        DataResponse insertResponse = kvp.Value.AddProfile(TheSim);
+                        switch(insertResponse)
+                        {
+                            case DataResponse.RESPONSE_OK:
+                                OpenSim.Framework.Console.MainLog.Instance.Verbose("New sim creation successful: " + TheSim.regionName);
+                                break;
+                            case DataResponse.RESPONSE_ERROR:
+                                OpenSim.Framework.Console.MainLog.Instance.Warn("New sim creation failed (Error): " + TheSim.regionName);
+                                break;
+                            case DataResponse.RESPONSE_INVALIDCREDENTIALS:
+                                OpenSim.Framework.Console.MainLog.Instance.Warn("New sim creation failed (Invalid Credentials): " + TheSim.regionName);
+                                break;
+                            case DataResponse.RESPONSE_AUTHREQUIRED:
+                                OpenSim.Framework.Console.MainLog.Instance.Warn("New sim creation failed (Authentication Required): " + TheSim.regionName);
+                                break;
+                        }
+                        
+                    }
+                    catch (Exception e)
+                    {
+                        OpenSim.Framework.Console.MainLog.Instance.Warn("Storage: Unable to add region " + TheSim.UUID.ToStringHyphenated() + " via " + kvp.Key);
+                        OpenSim.Framework.Console.MainLog.Instance.Warn(e.ToString());
+                    }
+                }
+
+
+                if (getRegion(TheSim.regionHandle) == null)
+                {
+                    responseData["error"] = "Unable to add new region";
+                    return response;
+                }
+            }
+           
+
+            ArrayList SimNeighboursData = new ArrayList();
+
+            SimProfileData neighbour;
+            Hashtable NeighbourBlock;
+
+            bool fastMode = false; // Only compatible with MySQL right now
+
+            if (fastMode)
+            {
+                Dictionary<ulong, SimProfileData> neighbours = getRegions(TheSim.regionLocX - 1, TheSim.regionLocY - 1, TheSim.regionLocX + 1, TheSim.regionLocY + 1);
+
+                foreach (KeyValuePair<ulong, SimProfileData> aSim in neighbours)
+                {
+                    NeighbourBlock = new Hashtable();
+                    NeighbourBlock["sim_ip"] = aSim.Value.serverIP.ToString();
+                    NeighbourBlock["sim_port"] = aSim.Value.serverPort.ToString();
+                    NeighbourBlock["region_locx"] = aSim.Value.regionLocX.ToString();
+                    NeighbourBlock["region_locy"] = aSim.Value.regionLocY.ToString();
+                    NeighbourBlock["UUID"] = aSim.Value.UUID.ToString();
+
+                    if (aSim.Value.UUID != TheSim.UUID)
+                        SimNeighboursData.Add(NeighbourBlock);
+                }
+            }
+            else
+            {
+                for (int x = -1; x < 2; x++) for (int y = -1; y < 2; y++)
+                    {
+                        if (getRegion(Helpers.UIntsToLong((uint)((TheSim.regionLocX + x) * 256), (uint)(TheSim.regionLocY + y) * 256)) != null)
+                        {
+                            neighbour = getRegion(Helpers.UIntsToLong((uint)((TheSim.regionLocX + x) * 256), (uint)(TheSim.regionLocY + y) * 256));
+
+                            NeighbourBlock = new Hashtable();
+                            NeighbourBlock["sim_ip"] = neighbour.serverIP;
+                            NeighbourBlock["sim_port"] = neighbour.serverPort.ToString();
+                            NeighbourBlock["region_locx"] = neighbour.regionLocX.ToString();
+                            NeighbourBlock["region_locy"] = neighbour.regionLocY.ToString();
+                            NeighbourBlock["UUID"] = neighbour.UUID.ToString();
+
+                            if (neighbour.UUID != TheSim.UUID) SimNeighboursData.Add(NeighbourBlock);
+                        }
+                    }
+            }
+
+            responseData["UUID"] = TheSim.UUID.ToString();
+            responseData["region_locx"] = TheSim.regionLocX.ToString();
+            responseData["region_locy"] = TheSim.regionLocY.ToString();
+            responseData["regionname"] = TheSim.regionName;
+            responseData["estate_id"] = "1";
+            responseData["neighbours"] = SimNeighboursData;
+
+            responseData["sim_ip"] = TheSim.serverIP;
+            responseData["sim_port"] = TheSim.serverPort.ToString();
+            responseData["asset_url"] = TheSim.regionAssetURI;
+            responseData["asset_sendkey"] = TheSim.regionAssetSendKey;
+            responseData["asset_recvkey"] = TheSim.regionAssetRecvKey;
+            responseData["user_url"] = TheSim.regionUserURI;
+            responseData["user_sendkey"] = TheSim.regionUserSendKey;
+            responseData["user_recvkey"] = TheSim.regionUserRecvKey;
+            responseData["authkey"] = TheSim.regionSecret;
+
+            // New! If set, use as URL to local sim storage (ie http://remotehost/region.yap)
+            responseData["data_uri"] = TheSim.regionDataURI;
+        
+
+        return response;
+        }
+
+        public XmlRpcResponse XmlRpcSimulatorDataRequestMethod(XmlRpcRequest request)
+        {
+            Hashtable requestData = (Hashtable)request.Params[0];
+            Hashtable responseData = new Hashtable();
+            SimProfileData simData = null;
+            if (requestData.ContainsKey("region_UUID"))
+            {
+                simData = getRegion(new LLUUID((string)requestData["region_UUID"]));
+            }
+            else if (requestData.ContainsKey("region_handle"))
+            {
+                Console.WriteLine("requesting data for region " + (string)requestData["region_handle"]);
+                simData = getRegion(Convert.ToUInt64((string)requestData["region_handle"]));
+            }
+
+            if (simData == null)
+            {
+                //Sim does not exist
+                Console.WriteLine("region not found");
+                responseData["error"] = "Sim does not exist";
+            }
+            else
+            {
+                Console.WriteLine("found region");
+                responseData["sim_ip"] = simData.serverIP;
+                responseData["sim_port"] = simData.serverPort.ToString();
+                responseData["http_port"] = simData.httpPort.ToString();
+                responseData["remoting_port"] = simData.remotingPort.ToString();
+                responseData["region_locx"] = simData.regionLocX.ToString() ;
+                responseData["region_locy"] = simData.regionLocY.ToString();
+                responseData["region_UUID"] = simData.UUID.UUID.ToString();
+                responseData["region_name"] = simData.regionName;
+            }
+
+            XmlRpcResponse response = new XmlRpcResponse();
+            response.Value = responseData;
+            return response;
+        }
+
+        public XmlRpcResponse XmlRpcMapBlockMethod(XmlRpcRequest request)
+        {
+            int xmin=980, ymin=980, xmax=1020, ymax=1020;
+
+            Hashtable requestData = (Hashtable)request.Params[0];
+            if (requestData.ContainsKey("xmin"))
+            {
+                xmin = (Int32)requestData["xmin"];
+            }
+            if (requestData.ContainsKey("ymin"))
+            {
+                ymin = (Int32)requestData["ymin"];
+            }
+            if (requestData.ContainsKey("xmax"))
+            {
+                xmax = (Int32)requestData["xmax"];
+            }
+            if (requestData.ContainsKey("ymax"))
+            {
+                ymax = (Int32)requestData["ymax"];
+            }
+
+            XmlRpcResponse response = new XmlRpcResponse();
+            Hashtable responseData = new Hashtable();
+            response.Value = responseData;
+            IList simProfileList = new ArrayList();
+
+            bool fastMode = false; // MySQL Only
+
+            if (fastMode)
+            {
+                Dictionary<ulong, SimProfileData> neighbours = getRegions((uint)xmin, (uint)ymin, (uint)xmax, (uint)ymax);
+
+                foreach (KeyValuePair<ulong, SimProfileData> aSim in neighbours)
+                {
+                    Hashtable simProfileBlock = new Hashtable();
+                    simProfileBlock["x"] = aSim.Value.regionLocX.ToString();
+                    simProfileBlock["y"] = aSim.Value.regionLocY.ToString();
+                    System.Console.WriteLine("send neighbour info for " + aSim.Value.regionLocX.ToString() + " , " + aSim.Value.regionLocY.ToString());
+                    simProfileBlock["name"] = aSim.Value.regionName;
+                    simProfileBlock["access"] = 21;
+                    simProfileBlock["region-flags"] = 512;
+                    simProfileBlock["water-height"] = 0;
+                    simProfileBlock["agents"] = 1;
+                    simProfileBlock["map-image-id"] = aSim.Value.regionMapTextureID.ToString();
+
+                    // For Sugilite compatibility
+                    simProfileBlock["regionhandle"] = aSim.Value.regionHandle.ToString();
+                    simProfileBlock["sim_ip"] = aSim.Value.serverIP.ToString();
+                    simProfileBlock["sim_port"] = aSim.Value.serverPort.ToString();
+                    simProfileBlock["sim_uri"] = aSim.Value.serverURI.ToString();
+                    simProfileBlock["uuid"] = aSim.Value.UUID.ToStringHyphenated();
+
+                    simProfileList.Add(simProfileBlock);
+                }
+                MainLog.Instance.Verbose("World map request processed, returned " + simProfileList.Count.ToString() + " region(s) in range via FastMode");
+            }
+            else
+            {
+                SimProfileData simProfile;
+                for (int x = xmin; x < xmax+1; x++)
+                {
+                    for (int y = ymin; y < ymax+1; y++)
+                    {
+                        ulong regHandle = Helpers.UIntsToLong((uint)(x * 256), (uint)(y * 256));
+                        simProfile = getRegion(regHandle);
+                        if (simProfile != null)
+                        {
+                            Hashtable simProfileBlock = new Hashtable();
+                            simProfileBlock["x"] = x;
+                            simProfileBlock["y"] = y;
+                            simProfileBlock["name"] = simProfile.regionName;
+                            simProfileBlock["access"] = 0;
+                            simProfileBlock["region-flags"] = 0;
+                            simProfileBlock["water-height"] = 20;
+                            simProfileBlock["agents"] = 1;
+                            simProfileBlock["map-image-id"] = simProfile.regionMapTextureID.ToStringHyphenated();
+
+                            // For Sugilite compatibility
+                            simProfileBlock["regionhandle"] = simProfile.regionHandle.ToString();
+                            simProfileBlock["sim_ip"] = simProfile.serverIP.ToString();
+                            simProfileBlock["sim_port"] = simProfile.serverPort.ToString();
+                            simProfileBlock["sim_uri"] = simProfile.serverURI.ToString();
+                            simProfileBlock["uuid"] = simProfile.UUID.ToStringHyphenated();
+
+                            simProfileList.Add(simProfileBlock);
+                        }
+                    }
+                }
+                MainLog.Instance.Verbose("World map request processed, returned " + simProfileList.Count.ToString() + " region(s) in range via Standard Mode");
+            }
+
+            responseData["sim-profiles"] = simProfileList;
+
+            return response;
+        }
+
+
+
+        /// <summary>
+        /// Performs a REST Get Operation
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="path"></param>
+        /// <param name="param"></param>
+        /// <returns></returns>
+        public string RestGetRegionMethod(string request, string path, string param)
+        {
+            return RestGetSimMethod("", "/sims/", param);
+        }
+
+        /// <summary>
+        /// Performs a REST Set Operation
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="path"></param>
+        /// <param name="param"></param>
+        /// <returns></returns>
+        public string RestSetRegionMethod(string request, string path, string param)
+        {
+            return RestSetSimMethod("", "/sims/", param);
+        }
+
+        /// <summary>
+        /// Returns information about a sim via a REST Request
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="path"></param>
+        /// <param name="param"></param>
+        /// <returns>Information about the sim in XML</returns>
+        public string RestGetSimMethod(string request, string path, string param)
+        {
+            string respstring = String.Empty;
+
+            SimProfileData TheSim;
+            LLUUID UUID = new LLUUID(param);
+            TheSim = getRegion(UUID);
+
+            if (!(TheSim == null))
+            {
+                respstring = "<Root>";
+                respstring += "<authkey>" + TheSim.regionSendKey + "</authkey>";
+                respstring += "<sim>";
+                respstring += "<uuid>" + TheSim.UUID.ToString() + "</uuid>";
+                respstring += "<regionname>" + TheSim.regionName + "</regionname>";
+                respstring += "<sim_ip>" + TheSim.serverIP + "</sim_ip>";
+                respstring += "<sim_port>" + TheSim.serverPort.ToString() + "</sim_port>";
+                respstring += "<region_locx>" + TheSim.regionLocX.ToString() + "</region_locx>";
+                respstring += "<region_locy>" + TheSim.regionLocY.ToString() + "</region_locy>";
+                respstring += "<estate_id>1</estate_id>";
+                respstring += "</sim>";
+                respstring += "</Root>";
+            }
+
+            return respstring;
+        }
+
+        /// <summary>
+        /// Creates or updates a sim via a REST Method Request
+        /// BROKEN with SQL Update
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="path"></param>
+        /// <param name="param"></param>
+        /// <returns>"OK" or an error</returns>
+        public string RestSetSimMethod(string request, string path, string param)
+        {
+            Console.WriteLine("Processing region update via REST method");
+            SimProfileData TheSim;
+            TheSim = getRegion(new LLUUID(param));
+            if ((TheSim) == null)
+            {
+                TheSim = new SimProfileData();
+                LLUUID UUID = new LLUUID(param);
+                TheSim.UUID = UUID;
+                TheSim.regionRecvKey = config.SimRecvKey;
+            }
+
+            XmlDocument doc = new XmlDocument();
+            doc.LoadXml(request);
+            XmlNode rootnode = doc.FirstChild;
+            XmlNode authkeynode = rootnode.ChildNodes[0];
+            if (authkeynode.Name != "authkey")
+            {
+                return "ERROR! bad XML - expected authkey tag";
+            }
+
+            XmlNode simnode = rootnode.ChildNodes[1];
+            if (simnode.Name != "sim")
+            {
+                return "ERROR! bad XML - expected sim tag";
+            }
+
+            //TheSim.regionSendKey = Cfg;
+            TheSim.regionRecvKey = config.SimRecvKey;
+            TheSim.regionSendKey = config.SimSendKey;
+            TheSim.regionSecret = config.SimRecvKey;
+            TheSim.regionDataURI = "";
+            TheSim.regionAssetURI = config.DefaultAssetServer;
+            TheSim.regionAssetRecvKey = config.AssetRecvKey;
+            TheSim.regionAssetSendKey = config.AssetSendKey;
+            TheSim.regionUserURI = config.DefaultUserServer;
+            TheSim.regionUserSendKey = config.UserSendKey;
+            TheSim.regionUserRecvKey = config.UserRecvKey;
+
+
+            for (int i = 0; i < simnode.ChildNodes.Count; i++)
+            {
+                switch (simnode.ChildNodes[i].Name)
+                {
+                    case "regionname":
+                        TheSim.regionName = simnode.ChildNodes[i].InnerText;
+                        break;
+
+                    case "sim_ip":
+                        TheSim.serverIP = simnode.ChildNodes[i].InnerText;
+                        break;
+
+                    case "sim_port":
+                        TheSim.serverPort = Convert.ToUInt32(simnode.ChildNodes[i].InnerText);
+                        break;
+
+                    case "region_locx":
+                        TheSim.regionLocX = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText);
+                        TheSim.regionHandle = Helpers.UIntsToLong((TheSim.regionLocX * 256), (TheSim.regionLocY * 256));
+                        break;
+
+                    case "region_locy":
+                        TheSim.regionLocY = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText);
+                        TheSim.regionHandle = Helpers.UIntsToLong((TheSim.regionLocX * 256), (TheSim.regionLocY * 256));
+                        break;
+                }
+            }
+
+            TheSim.serverURI = "http://" + TheSim.serverIP + ":" + TheSim.serverPort + "/";
+
+            bool requirePublic = false;
+            bool requireValid = true;
+
+            if (requirePublic && (TheSim.serverIP.StartsWith("172.16") || TheSim.serverIP.StartsWith("192.168") || TheSim.serverIP.StartsWith("10.") || TheSim.serverIP.StartsWith("0.") || TheSim.serverIP.StartsWith("255.")))
+            {
+                return "ERROR! Servers must register with public addresses.";
+            }
+
+            if (requireValid && (TheSim.serverIP.StartsWith("0.")))
+            {
+                return "ERROR! 0.*.*.* Addresses are invalid, please check your server config and try again";
+            }
+
+            
+            try
+            {
+                MainLog.Instance.Verbose("Updating / adding via " + _plugins.Count + " storage provider(s) registered.");
+                foreach (KeyValuePair<string, IGridData> kvp in _plugins)
+                {
+                    try
+                    {
+                        //Check reservations
+                        ReservationData reserveData = kvp.Value.GetReservationAtPoint(TheSim.regionLocX, TheSim.regionLocY);
+                        if ((reserveData != null && reserveData.gridRecvKey == TheSim.regionRecvKey) || (reserveData == null && authkeynode.InnerText != TheSim.regionRecvKey))
+                        {
+                            kvp.Value.AddProfile(TheSim);
+                            MainLog.Instance.Verbose("New sim added to grid (" + TheSim.regionName + ")");
+                            logToDB(TheSim.UUID.ToStringHyphenated(), "RestSetSimMethod", "", 5, "Region successfully updated and connected to grid.");
+                        }
+                        else
+                        {
+                            MainLog.Instance.Warn("Unable to update region (RestSetSimMethod): Incorrect reservation auth key.");// Wanted: " + reserveData.gridRecvKey + ", Got: " + TheSim.regionRecvKey + ".");
+                            return "Unable to update region (RestSetSimMethod): Incorrect auth key.";
+                        }
+                    }
+                    catch (Exception e)
+                    {
+                        MainLog.Instance.Verbose("getRegionPlugin Handle " + kvp.Key + " unable to add new sim: " + e.ToString());
+                    }
+                }
+                return "OK";
+            }
+            catch (Exception e)
+            {
+                return "ERROR! Could not save to database! (" + e.ToString() + ")";
+            }
+        }
+
+    }
+}

+ 258 - 258
OpenSim/Grid/GridServer/Main.cs

@@ -1,258 +1,258 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-using System;
-using System.Reflection;
-using System.Threading;
-using System.Timers;
-using OpenSim.Framework.Console;
-using OpenSim.Framework.Interfaces;
-using OpenSim.Framework.Servers;
-using OpenSim.GenericConfig;
-using Timer=System.Timers.Timer;
-
-namespace OpenSim.Grid.GridServer
-{
-    /// <summary>
-    /// </summary>
-    public class OpenGrid_Main : conscmd_callback
-    {
-        private string ConfigDll = "OpenSim.Grid.GridServer.Config.dll";
-        private string GridDll = "OpenSim.Framework.Data.MySQL.dll";
-        public GridConfig Cfg;
-
-        public static OpenGrid_Main thegrid;
-        protected IGenericConfig localXMLConfig;
-
-        public static bool setuponly;
-
-        //public LLUUID highestUUID;
-
-        //        private SimProfileManager m_simProfileManager;
-
-        private GridManager m_gridManager;
-
-        private LogBase m_console;
-
-        [STAThread]
-        public static void Main(string[] args)
-        {
-            if (args.Length > 0)
-            {
-                if (args[0] == "-setuponly") setuponly = true;
-            }
-            Console.WriteLine("Starting...\n");
-
-            thegrid = new OpenGrid_Main();
-            thegrid.Startup();
-
-            thegrid.Work();
-        }
-
-        private void Work()
-        {
-            m_console.Notice("Enter help for a list of commands\n");
-
-            while (true)
-            {
-                m_console.MainLogPrompt();
-            }
-        }
-
-        private OpenGrid_Main()
-        {
-            m_console = new LogBase("opengrid-gridserver-console.log", "OpenGrid", this, false);
-            MainLog.Instance = m_console;
-
-
-        }
-
-        public void managercallback(string cmd)
-        {
-            switch (cmd)
-            {
-                case "shutdown":
-                    RunCmd("shutdown", new string[0]);
-                    break;
-            }
-        }
-
-
-        public void Startup()
-        {
-            this.localXMLConfig = new XmlConfig("GridServerConfig.xml");
-            this.localXMLConfig.LoadData();
-            this.ConfigDB(this.localXMLConfig);
-            this.localXMLConfig.Close();
-
-            m_console.Verbose( "Main.cs:Startup() - Loading configuration");
-            Cfg = this.LoadConfigDll(this.ConfigDll);
-            Cfg.InitConfig();
-            if (setuponly) Environment.Exit(0);
-
-            m_console.Verbose( "Main.cs:Startup() - Connecting to Storage Server");
-            m_gridManager = new GridManager();
-            m_gridManager.AddPlugin(GridDll); // Made of win
-            m_gridManager.config = Cfg;
-
-            m_console.Verbose( "Main.cs:Startup() - Starting HTTP process");
-            BaseHttpServer httpServer = new BaseHttpServer(8001);
-            //GridManagementAgent GridManagerAgent = new GridManagementAgent(httpServer, "gridserver", Cfg.SimSendKey, Cfg.SimRecvKey, managercallback);
-
-            httpServer.AddXmlRPCHandler("simulator_login", m_gridManager.XmlRpcSimulatorLoginMethod);
-            httpServer.AddXmlRPCHandler("simulator_data_request", m_gridManager.XmlRpcSimulatorDataRequestMethod);
-            httpServer.AddXmlRPCHandler("map_block", m_gridManager.XmlRpcMapBlockMethod);
-
-            httpServer.AddStreamHandler(new RestStreamHandler("GET", "/sims/", m_gridManager.RestGetSimMethod ));
-            httpServer.AddStreamHandler(new RestStreamHandler("POST", "/sims/", m_gridManager.RestSetSimMethod ));
-
-            httpServer.AddStreamHandler( new RestStreamHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod  ));
-            httpServer.AddStreamHandler( new RestStreamHandler("POST","/regions/", m_gridManager.RestSetRegionMethod  ));
-
-            //httpServer.AddRestHandler("GET", "/sims/", m_gridManager.RestGetSimMethod);
-            //httpServer.AddRestHandler("POST", "/sims/", m_gridManager.RestSetSimMethod);
-            //httpServer.AddRestHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod);
-            //httpServer.AddRestHandler("POST", "/regions/", m_gridManager.RestSetRegionMethod);
-
-            httpServer.Start();
-
-            m_console.Verbose( "Main.cs:Startup() - Starting sim status checker");
-
-            Timer simCheckTimer = new Timer(3600000 * 3); // 3 Hours between updates.
-            simCheckTimer.Elapsed += new ElapsedEventHandler(CheckSims);
-            simCheckTimer.Enabled = true;
-        }
-
-        private GridConfig LoadConfigDll(string dllName)
-        {
-            Assembly pluginAssembly = Assembly.LoadFrom(dllName);
-            GridConfig config = null;
-
-            foreach (Type pluginType in pluginAssembly.GetTypes())
-            {
-                if (pluginType.IsPublic)
-                {
-                    if (!pluginType.IsAbstract)
-                    {
-                        Type typeInterface = pluginType.GetInterface("IGridConfig", true);
-
-                        if (typeInterface != null)
-                        {
-                            IGridConfig plug = (IGridConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
-                            config = plug.GetConfigObject();
-                            break;
-                        }
-
-                        typeInterface = null;
-                    }
-                }
-            }
-            pluginAssembly = null;
-            return config;
-        }
-
-        public void CheckSims(object sender, ElapsedEventArgs e)
-        {
-            /*
-            foreach (SimProfileBase sim in m_simProfileManager.SimProfiles.Values)
-            {
-                string SimResponse = "";
-                try
-                {
-                    WebRequest CheckSim = WebRequest.Create("http://" + sim.sim_ip + ":" + sim.sim_port.ToString() + "/checkstatus/");
-                    CheckSim.Method = "GET";
-                    CheckSim.ContentType = "text/plaintext";
-                    CheckSim.ContentLength = 0;
-
-                    StreamWriter stOut = new StreamWriter(CheckSim.GetRequestStream(), System.Text.Encoding.ASCII);
-                    stOut.Write("");
-                    stOut.Close();
-
-                    StreamReader stIn = new StreamReader(CheckSim.GetResponse().GetResponseStream());
-                    SimResponse = stIn.ReadToEnd();
-                    stIn.Close();
-                }
-                catch
-                {
-                }
-                
-                if (SimResponse == "OK")
-                {
-                    m_simProfileManager.SimProfiles[sim.UUID].online = true;
-                }
-                else
-                {
-                    m_simProfileManager.SimProfiles[sim.UUID].online = false;
-                }
-            }
-            */
-        }
-
-        public void RunCmd(string cmd, string[] cmdparams)
-        {
-            switch (cmd)
-            {
-                case "help":
-                    m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
-                    break;
-
-                case "shutdown":
-                    m_console.Close();
-                    Environment.Exit(0);
-                    break;
-            }
-        }
-
-        public void Show(string ShowWhat)
-        {
-        }
-
-        private void ConfigDB(IGenericConfig configData)
-        {
-            try
-            {
-                string attri = "";
-                attri = configData.GetAttribute("DataBaseProvider");
-                if (attri == "")
-                {
-                    GridDll = "OpenSim.Framework.Data.DB4o.dll";
-                    configData.SetAttribute("DataBaseProvider", "OpenSim.Framework.Data.DB4o.dll");
-                }
-                else
-                {
-                    GridDll = attri;
-                }
-                configData.Commit();
-            }
-            catch
-            {
-
-            }
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.Reflection;
+using System.Threading;
+using System.Timers;
+using OpenSim.Framework.Console;
+using OpenSim.Framework.Interfaces;
+using OpenSim.Framework.Servers;
+using OpenSim.GenericConfig;
+using Timer=System.Timers.Timer;
+
+namespace OpenSim.Grid.GridServer
+{
+    /// <summary>
+    /// </summary>
+    public class OpenGrid_Main : conscmd_callback
+    {
+        private string ConfigDll = "OpenSim.Grid.GridServer.Config.dll";
+        private string GridDll = "OpenSim.Framework.Data.MySQL.dll";
+        public GridConfig Cfg;
+
+        public static OpenGrid_Main thegrid;
+        protected IGenericConfig localXMLConfig;
+
+        public static bool setuponly;
+
+        //public LLUUID highestUUID;
+
+        //        private SimProfileManager m_simProfileManager;
+
+        private GridManager m_gridManager;
+
+        private LogBase m_console;
+
+        [STAThread]
+        public static void Main(string[] args)
+        {
+            if (args.Length > 0)
+            {
+                if (args[0] == "-setuponly") setuponly = true;
+            }
+            Console.WriteLine("Starting...\n");
+
+            thegrid = new OpenGrid_Main();
+            thegrid.Startup();
+
+            thegrid.Work();
+        }
+
+        private void Work()
+        {
+            m_console.Notice("Enter help for a list of commands\n");
+
+            while (true)
+            {
+                m_console.MainLogPrompt();
+            }
+        }
+
+        private OpenGrid_Main()
+        {
+            m_console = new LogBase("opengrid-gridserver-console.log", "OpenGrid", this, false);
+            MainLog.Instance = m_console;
+
+
+        }
+
+        public void managercallback(string cmd)
+        {
+            switch (cmd)
+            {
+                case "shutdown":
+                    RunCmd("shutdown", new string[0]);
+                    break;
+            }
+        }
+
+
+        public void Startup()
+        {
+            this.localXMLConfig = new XmlConfig("GridServerConfig.xml");
+            this.localXMLConfig.LoadData();
+            this.ConfigDB(this.localXMLConfig);
+            this.localXMLConfig.Close();
+
+            m_console.Verbose( "Main.cs:Startup() - Loading configuration");
+            Cfg = this.LoadConfigDll(this.ConfigDll);
+            Cfg.InitConfig();
+            if (setuponly) Environment.Exit(0);
+
+            m_console.Verbose( "Main.cs:Startup() - Connecting to Storage Server");
+            m_gridManager = new GridManager();
+            m_gridManager.AddPlugin(GridDll); // Made of win
+            m_gridManager.config = Cfg;
+
+            m_console.Verbose( "Main.cs:Startup() - Starting HTTP process");
+            BaseHttpServer httpServer = new BaseHttpServer(8001);
+            //GridManagementAgent GridManagerAgent = new GridManagementAgent(httpServer, "gridserver", Cfg.SimSendKey, Cfg.SimRecvKey, managercallback);
+
+            httpServer.AddXmlRPCHandler("simulator_login", m_gridManager.XmlRpcSimulatorLoginMethod);
+            httpServer.AddXmlRPCHandler("simulator_data_request", m_gridManager.XmlRpcSimulatorDataRequestMethod);
+            httpServer.AddXmlRPCHandler("map_block", m_gridManager.XmlRpcMapBlockMethod);
+
+            httpServer.AddStreamHandler(new RestStreamHandler("GET", "/sims/", m_gridManager.RestGetSimMethod ));
+            httpServer.AddStreamHandler(new RestStreamHandler("POST", "/sims/", m_gridManager.RestSetSimMethod ));
+
+            httpServer.AddStreamHandler( new RestStreamHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod  ));
+            httpServer.AddStreamHandler( new RestStreamHandler("POST","/regions/", m_gridManager.RestSetRegionMethod  ));
+
+            //httpServer.AddRestHandler("GET", "/sims/", m_gridManager.RestGetSimMethod);
+            //httpServer.AddRestHandler("POST", "/sims/", m_gridManager.RestSetSimMethod);
+            //httpServer.AddRestHandler("GET", "/regions/", m_gridManager.RestGetRegionMethod);
+            //httpServer.AddRestHandler("POST", "/regions/", m_gridManager.RestSetRegionMethod);
+
+            httpServer.Start();
+
+            m_console.Verbose( "Main.cs:Startup() - Starting sim status checker");
+
+            Timer simCheckTimer = new Timer(3600000 * 3); // 3 Hours between updates.
+            simCheckTimer.Elapsed += new ElapsedEventHandler(CheckSims);
+            simCheckTimer.Enabled = true;
+        }
+
+        private GridConfig LoadConfigDll(string dllName)
+        {
+            Assembly pluginAssembly = Assembly.LoadFrom(dllName);
+            GridConfig config = null;
+
+            foreach (Type pluginType in pluginAssembly.GetTypes())
+            {
+                if (pluginType.IsPublic)
+                {
+                    if (!pluginType.IsAbstract)
+                    {
+                        Type typeInterface = pluginType.GetInterface("IGridConfig", true);
+
+                        if (typeInterface != null)
+                        {
+                            IGridConfig plug = (IGridConfig)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
+                            config = plug.GetConfigObject();
+                            break;
+                        }
+
+                        typeInterface = null;
+                    }
+                }
+            }
+            pluginAssembly = null;
+            return config;
+        }
+
+        public void CheckSims(object sender, ElapsedEventArgs e)
+        {
+            /*
+            foreach (SimProfileBase sim in m_simProfileManager.SimProfiles.Values)
+            {
+                string SimResponse = "";
+                try
+                {
+                    WebRequest CheckSim = WebRequest.Create("http://" + sim.sim_ip + ":" + sim.sim_port.ToString() + "/checkstatus/");
+                    CheckSim.Method = "GET";
+                    CheckSim.ContentType = "text/plaintext";
+                    CheckSim.ContentLength = 0;
+
+                    StreamWriter stOut = new StreamWriter(CheckSim.GetRequestStream(), System.Text.Encoding.ASCII);
+                    stOut.Write("");
+                    stOut.Close();
+
+                    StreamReader stIn = new StreamReader(CheckSim.GetResponse().GetResponseStream());
+                    SimResponse = stIn.ReadToEnd();
+                    stIn.Close();
+                }
+                catch
+                {
+                }
+                
+                if (SimResponse == "OK")
+                {
+                    m_simProfileManager.SimProfiles[sim.UUID].online = true;
+                }
+                else
+                {
+                    m_simProfileManager.SimProfiles[sim.UUID].online = false;
+                }
+            }
+            */
+        }
+
+        public void RunCmd(string cmd, string[] cmdparams)
+        {
+            switch (cmd)
+            {
+                case "help":
+                    m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
+                    break;
+
+                case "shutdown":
+                    m_console.Close();
+                    Environment.Exit(0);
+                    break;
+            }
+        }
+
+        public void Show(string ShowWhat)
+        {
+        }
+
+        private void ConfigDB(IGenericConfig configData)
+        {
+            try
+            {
+                string attri = "";
+                attri = configData.GetAttribute("DataBaseProvider");
+                if (attri == "")
+                {
+                    GridDll = "OpenSim.Framework.Data.DB4o.dll";
+                    configData.SetAttribute("DataBaseProvider", "OpenSim.Framework.Data.DB4o.dll");
+                }
+                else
+                {
+                    GridDll = attri;
+                }
+                configData.Commit();
+            }
+            catch
+            {
+
+            }
+        }
+    }
+}

+ 58 - 58
OpenSim/Grid/GridServer/Properties/AssemblyInfo.cs

@@ -1,58 +1,58 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System.Reflection;
-using System.Runtime.InteropServices;
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("OGS-GridServer")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("OGS-GridServer")]
-[assembly: AssemblyCopyright("Copyright ©  2007")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("b541b244-3d1d-4625-9003-bc2a3a6a39a4")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System.Reflection;
+using System.Runtime.InteropServices;
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OGS-GridServer")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OGS-GridServer")]
+[assembly: AssemblyCopyright("Copyright ©  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("b541b244-3d1d-4625-9003-bc2a3a6a39a4")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 125 - 125
OpenSim/Grid/InventoryServer/InventoryManager.cs

@@ -1,125 +1,125 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Text;
-using OpenGrid.Framework.Data;
-using libsecondlife;
-using System.Reflection;
-
-using System.Xml;
-using Nwc.XmlRpc;
-using OpenSim.Framework.Sims;
-using OpenSim.Framework.Inventory;
-using OpenSim.Framework.Utilities;
-
-using System.Security.Cryptography;
-
-namespace OpenGridServices.InventoryServer
-{
-    class InventoryManager
-    {
-        Dictionary<string, IInventoryData> _plugins = new Dictionary<string, IInventoryData>();
-
-        /// <summary>
-        /// Adds a new inventory server plugin - user servers will be requested in the order they were loaded.
-        /// </summary>
-        /// <param name="FileName">The filename to the inventory server plugin DLL</param>
-        public void AddPlugin(string FileName)
-        {
-            OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Attempting to load " + FileName);
-            Assembly pluginAssembly = Assembly.LoadFrom(FileName);
-
-            OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
-            foreach (Type pluginType in pluginAssembly.GetTypes())
-            {
-                if (!pluginType.IsAbstract)
-                {
-                    Type typeInterface = pluginType.GetInterface("IInventoryData", true);
-
-                    if (typeInterface != null)
-                    {
-                        IInventoryData plug = (IInventoryData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
-                        plug.Initialise();
-                        this._plugins.Add(plug.getName(), plug);
-                        OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Added IUserData Interface");
-                    }
-
-                    typeInterface = null;
-                }
-            }
-
-            pluginAssembly = null;
-        }
-
-        public List<InventoryFolderBase> getRootFolders(LLUUID user)
-        {
-            foreach (KeyValuePair<string, IInventoryData> kvp in _plugins)
-            {
-                try
-                {
-                    return kvp.Value.getUserRootFolders(user);
-                }
-                catch (Exception e)
-                {
-                    OpenSim.Framework.Console.MainConsole.Instance.Notice("Unable to get root folders via " + kvp.Key + " (" + e.ToString() + ")");
-                }
-            }
-            return null;
-        }
-
-        public XmlRpcResponse XmlRpcInventoryRequest(XmlRpcRequest request)
-        {
-            XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable)request.Params[0];
-
-            Hashtable responseData = new Hashtable();
-
-            // Stuff happens here
-
-            if (requestData.ContainsKey("Access-type"))
-            {
-                if (requestData["access-type"] == "rootfolders")
-                {
-//                    responseData["rootfolders"] =
-                }
-            }
-            else
-            {
-                responseData["error"] = "No access-type specified.";
-            }
-
-
-            // Stuff stops happening here
-
-            response.Value = responseData;
-            return response;
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using OpenGrid.Framework.Data;
+using libsecondlife;
+using System.Reflection;
+
+using System.Xml;
+using Nwc.XmlRpc;
+using OpenSim.Framework.Sims;
+using OpenSim.Framework.Inventory;
+using OpenSim.Framework.Utilities;
+
+using System.Security.Cryptography;
+
+namespace OpenGridServices.InventoryServer
+{
+    class InventoryManager
+    {
+        Dictionary<string, IInventoryData> _plugins = new Dictionary<string, IInventoryData>();
+
+        /// <summary>
+        /// Adds a new inventory server plugin - user servers will be requested in the order they were loaded.
+        /// </summary>
+        /// <param name="FileName">The filename to the inventory server plugin DLL</param>
+        public void AddPlugin(string FileName)
+        {
+            OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Attempting to load " + FileName);
+            Assembly pluginAssembly = Assembly.LoadFrom(FileName);
+
+            OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
+            foreach (Type pluginType in pluginAssembly.GetTypes())
+            {
+                if (!pluginType.IsAbstract)
+                {
+                    Type typeInterface = pluginType.GetInterface("IInventoryData", true);
+
+                    if (typeInterface != null)
+                    {
+                        IInventoryData plug = (IInventoryData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
+                        plug.Initialise();
+                        this._plugins.Add(plug.getName(), plug);
+                        OpenSim.Framework.Console.MainConsole.Instance.Verbose( "Invenstorage: Added IUserData Interface");
+                    }
+
+                    typeInterface = null;
+                }
+            }
+
+            pluginAssembly = null;
+        }
+
+        public List<InventoryFolderBase> getRootFolders(LLUUID user)
+        {
+            foreach (KeyValuePair<string, IInventoryData> kvp in _plugins)
+            {
+                try
+                {
+                    return kvp.Value.getUserRootFolders(user);
+                }
+                catch (Exception e)
+                {
+                    OpenSim.Framework.Console.MainConsole.Instance.Notice("Unable to get root folders via " + kvp.Key + " (" + e.ToString() + ")");
+                }
+            }
+            return null;
+        }
+
+        public XmlRpcResponse XmlRpcInventoryRequest(XmlRpcRequest request)
+        {
+            XmlRpcResponse response = new XmlRpcResponse();
+            Hashtable requestData = (Hashtable)request.Params[0];
+
+            Hashtable responseData = new Hashtable();
+
+            // Stuff happens here
+
+            if (requestData.ContainsKey("Access-type"))
+            {
+                if (requestData["access-type"] == "rootfolders")
+                {
+//                    responseData["rootfolders"] =
+                }
+            }
+            else
+            {
+                responseData["error"] = "No access-type specified.";
+            }
+
+
+            // Stuff stops happening here
+
+            response.Value = responseData;
+            return response;
+        }
+    }
+}

+ 87 - 87
OpenSim/Grid/InventoryServer/Main.cs

@@ -1,87 +1,87 @@
-/*
-* Copyright (c) Contributors, http://www.openmetaverse.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Reflection;
-using System.IO;
-using System.Text;
-using libsecondlife;
-using OpenSim.Framework.User;
-using OpenSim.Framework.Sims;
-using OpenSim.Framework.Inventory;
-using OpenSim.Framework.Interfaces;
-using OpenSim.Framework.Console;
-using OpenSim.Servers;
-using OpenSim.Framework.Utilities;
-
-namespace OpenGridServices.InventoryServer
-{
-    public class OpenInventory_Main : BaseServer, conscmd_callback
-    {
-        ConsoleBase m_console;
-        InventoryManager m_inventoryManager;
-
-        public static void Main(string[] args)
-        {
-        }
-
-        public OpenInventory_Main()
-        {
-            m_console = new ConsoleBase("opengrid-inventory-console.log", "OpenInventory", this, false);
-            MainConsole.Instance = m_console;
-        }
-
-        public void Startup()
-        {
-            MainConsole.Instance.Notice("Initialising inventory manager...");
-            m_inventoryManager = new InventoryManager();
-
-            MainConsole.Instance.Notice("Starting HTTP server");
-            BaseHttpServer httpServer = new BaseHttpServer(8004);
-
-            httpServer.AddXmlRPCHandler("rootfolders", m_inventoryManager.XmlRpcInventoryRequest);
-            //httpServer.AddRestHandler("GET","/rootfolders/",Rest
-        }
-
-        public void RunCmd(string cmd, string[] cmdparams)
-        {
-            switch (cmd)
-            {
-                case "shutdown":
-                    m_console.Close();
-                    Environment.Exit(0);
-                    break;
-            }
-        }
-
-        public void Show(string ShowWhat)
-        {
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+using System.IO;
+using System.Text;
+using libsecondlife;
+using OpenSim.Framework.User;
+using OpenSim.Framework.Sims;
+using OpenSim.Framework.Inventory;
+using OpenSim.Framework.Interfaces;
+using OpenSim.Framework.Console;
+using OpenSim.Servers;
+using OpenSim.Framework.Utilities;
+
+namespace OpenGridServices.InventoryServer
+{
+    public class OpenInventory_Main : BaseServer, conscmd_callback
+    {
+        ConsoleBase m_console;
+        InventoryManager m_inventoryManager;
+
+        public static void Main(string[] args)
+        {
+        }
+
+        public OpenInventory_Main()
+        {
+            m_console = new ConsoleBase("opengrid-inventory-console.log", "OpenInventory", this, false);
+            MainConsole.Instance = m_console;
+        }
+
+        public void Startup()
+        {
+            MainConsole.Instance.Notice("Initialising inventory manager...");
+            m_inventoryManager = new InventoryManager();
+
+            MainConsole.Instance.Notice("Starting HTTP server");
+            BaseHttpServer httpServer = new BaseHttpServer(8004);
+
+            httpServer.AddXmlRPCHandler("rootfolders", m_inventoryManager.XmlRpcInventoryRequest);
+            //httpServer.AddRestHandler("GET","/rootfolders/",Rest
+        }
+
+        public void RunCmd(string cmd, string[] cmdparams)
+        {
+            switch (cmd)
+            {
+                case "shutdown":
+                    m_console.Close();
+                    Environment.Exit(0);
+                    break;
+            }
+        }
+
+        public void Show(string ShowWhat)
+        {
+        }
+    }
+}

+ 33 - 33
OpenSim/Grid/Manager/OpenGridServices.Manager/BlockingQueue.cs

@@ -1,33 +1,33 @@
-using System;
-using System.Threading;
-using System.Collections.Generic;
-using System.Text;
-
-namespace OpenGridServices.Manager
-{
-    public class BlockingQueue<T>
-    {
-        private Queue<T> _queue = new Queue<T>();
-        private object _queueSync = new object();
-
-        public void Enqueue(T value)
-        {
-            lock (_queueSync)
-            {
-                _queue.Enqueue(value);
-                Monitor.Pulse(_queueSync);
-            }
-        }
-
-        public T Dequeue()
-        {
-            lock (_queueSync)
-            {
-                if (_queue.Count < 1)
-                    Monitor.Wait(_queueSync);
-
-                return _queue.Dequeue();
-            }
-        }
-    }
-}
+using System;
+using System.Threading;
+using System.Collections.Generic;
+using System.Text;
+
+namespace OpenGridServices.Manager
+{
+    public class BlockingQueue<T>
+    {
+        private Queue<T> _queue = new Queue<T>();
+        private object _queueSync = new object();
+
+        public void Enqueue(T value)
+        {
+            lock (_queueSync)
+            {
+                _queue.Enqueue(value);
+                Monitor.Pulse(_queueSync);
+            }
+        }
+
+        public T Dequeue()
+        {
+            lock (_queueSync)
+            {
+                if (_queue.Count < 1)
+                    Monitor.Wait(_queueSync);
+
+                return _queue.Dequeue();
+            }
+        }
+    }
+}

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini