From b80b974c77d6d3108b15d5ae19dccbb8e6cd990b Mon Sep 17 00:00:00 2001 From: Jim Radford Date: Thu, 23 Jul 2009 03:31:16 +0000 Subject: [PATCH] 0.8 here we come! LIBOMV-576 Start of Abstracting library into two separate libraries. For now this means: There will be a new dependency for OpenMetaverse.dll named OpenMetaverseCore.dll, the new will be required for OpenMetaverse to operate properly, the inverse is not true. OpenMetaverseCore will eventually contain all packet and message related code. * Need to create a singleton logger instance (or move the current logger to Core. * Currently only Packets, Helpers and some common types have been moved to Core. * Helpers will need to be split and non-core required helpers moved back to OpenMetaverse. * Lots more work to be done here, but these changes should not break anything (yet) git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3021 52acb1d6-8a22-11de-b505-999d5b087335 --- OpenMetaverse/AssemblyInfo.cs | 2 +- OpenMetaverse/Imaging/BakeLayer.cs | 2 +- OpenMetaverse/ProtocolManager.cs | 16 +- OpenMetaverseCore/AssemblyInfo.cs | 33 + .../CapsToPacket.cs | 2 +- OpenMetaverseCore/CoreTypes.cs | 20 + .../Helpers.cs | 63 +- .../_Packets_.cs | 0 Programs/PrimWorkshop/frmBrowser.cs | 4 +- Programs/PrimWorkshop/frmPrimWorkshop.cs | 2 +- .../Commands/Appearance/AttachmentsCommand.cs | 9 +- .../Commands/Prims/ExportCommand.cs | 2 +- .../Commands/Prims/ImportCommand.cs | 2 +- mapgen.bat | 2 +- prebuild.xml | 829 +++++++++++++++++- 15 files changed, 909 insertions(+), 79 deletions(-) create mode 100644 OpenMetaverseCore/AssemblyInfo.cs rename {OpenMetaverse => OpenMetaverseCore}/CapsToPacket.cs (96%) create mode 100644 OpenMetaverseCore/CoreTypes.cs rename {OpenMetaverse => OpenMetaverseCore}/Helpers.cs (89%) rename {OpenMetaverse => OpenMetaverseCore}/_Packets_.cs (100%) diff --git a/OpenMetaverse/AssemblyInfo.cs b/OpenMetaverse/AssemblyInfo.cs index 13958b26..ffd17a2e 100644 --- a/OpenMetaverse/AssemblyInfo.cs +++ b/OpenMetaverse/AssemblyInfo.cs @@ -25,7 +25,7 @@ using System.Runtime.CompilerServices; // 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.*")] +[assembly: AssemblyVersion("0.0.0.*")] // // In order to sign your assembly you must specify a key to use. Refer to the diff --git a/OpenMetaverse/Imaging/BakeLayer.cs b/OpenMetaverse/Imaging/BakeLayer.cs index 3c8c3a88..9c7b94c9 100644 --- a/OpenMetaverse/Imaging/BakeLayer.cs +++ b/OpenMetaverse/Imaging/BakeLayer.cs @@ -389,7 +389,7 @@ namespace OpenMetaverse.Imaging public static ManagedImage LoadAlphaLayer(string fileName) { - Stream stream = Helpers.GetResourceStream(fileName); + Stream stream = Helpers.GetResourceStream(fileName, Settings.RESOURCE_DIR); if (stream != null) { diff --git a/OpenMetaverse/ProtocolManager.cs b/OpenMetaverse/ProtocolManager.cs index 6d404006..f013dce6 100644 --- a/OpenMetaverse/ProtocolManager.cs +++ b/OpenMetaverse/ProtocolManager.cs @@ -27,22 +27,10 @@ using System; using System.Collections.Generic; using System.IO; +using OpenMetaverse; namespace OpenMetaverse -{ - /// - /// - /// - public enum PacketFrequency : byte - { - /// - Low, - /// - Medium, - /// - High - } - +{ /// /// /// diff --git a/OpenMetaverseCore/AssemblyInfo.cs b/OpenMetaverseCore/AssemblyInfo.cs new file mode 100644 index 00000000..ae3a15d1 --- /dev/null +++ b/OpenMetaverseCore/AssemblyInfo.cs @@ -0,0 +1,33 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +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("OpenMetaverse Networking Core")] +[assembly: AssemblyDescription("The OpenMetaverse Network abstraction library")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("OpenMetaverse")] +[assembly: AssemblyProduct("libOpenMetaverse")] +[assembly: AssemblyCopyright("2009 OpenMetaverse Foundation")] +[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("71acd58b-2794-4ba7-982c-f08568881067")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("0.0.0.*")] +[assembly: AssemblyFileVersion("0.0.0.0")] diff --git a/OpenMetaverse/CapsToPacket.cs b/OpenMetaverseCore/CapsToPacket.cs similarity index 96% rename from OpenMetaverse/CapsToPacket.cs rename to OpenMetaverseCore/CapsToPacket.cs index 7a5edfcc..625f2281 100644 --- a/OpenMetaverse/CapsToPacket.cs +++ b/OpenMetaverseCore/CapsToPacket.cs @@ -153,7 +153,7 @@ namespace OpenMetaverse.Packets } catch (Exception e) { - Logger.Log(e.Message, Helpers.LogLevel.Error, e); + //FIXME Logger.Log(e.Message, Helpers.LogLevel.Error, e); } return packet; diff --git a/OpenMetaverseCore/CoreTypes.cs b/OpenMetaverseCore/CoreTypes.cs new file mode 100644 index 00000000..d289efae --- /dev/null +++ b/OpenMetaverseCore/CoreTypes.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace OpenMetaverse +{ + /// + /// + /// + public enum PacketFrequency : byte + { + /// + Low, + /// + Medium, + /// + High + } +} diff --git a/OpenMetaverse/Helpers.cs b/OpenMetaverseCore/Helpers.cs similarity index 89% rename from OpenMetaverse/Helpers.cs rename to OpenMetaverseCore/Helpers.cs index 31d73cc4..3a62c84b 100644 --- a/OpenMetaverse/Helpers.cs +++ b/OpenMetaverseCore/Helpers.cs @@ -301,11 +301,13 @@ namespace OpenMetaverse } catch (Exception ex) { - Logger.Log(String.Format("Zerodecoding error: i={0}, srclen={1}, bodylen={2}, zerolen={3}\n{4}\n{5}", - i, srclen, bodylen, zerolen, Utils.BytesToHexString(src, srclen, null), ex), LogLevel.Error); - } + throw new IndexOutOfRangeException(String.Format("Zerodecoding error: i={0}, srclen={1}, bodylen={2}, zerolen={3}\n{4}\n{5}", + i, srclen, bodylen, zerolen, Utils.BytesToHexString(src, srclen, null)), ex.InnerException); - return 0; + //Logger.Log(String.Format("Zerodecoding error: i={0}, srclen={1}, bodylen={2}, zerolen={3}\n{4}\n{5}", + // i, srclen, bodylen, zerolen, Utils.BytesToHexString(src, srclen, null), ex), LogLevel.Error); + } + return 0; } /// @@ -442,9 +444,9 @@ namespace OpenMetaverse /// was not successfully loaded public static System.IO.Stream GetResourceStream(string resourceName) { - return GetResourceStream(resourceName, Settings.RESOURCE_DIR); + return GetResourceStream(resourceName, "openmetaverse_data"); } - + /// /// Attempts to load a file either embedded in the assembly or found in /// a given search path @@ -479,53 +481,6 @@ namespace OpenMetaverse } return null; - } - - /// - /// Converts a list of primitives to an object that can be serialized - /// with the LLSD system - /// - /// Primitives to convert to a serializable object - /// An object that can be serialized with LLSD - public static StructuredData.OSD PrimListToOSD(List prims) - { - StructuredData.OSDMap map = new OpenMetaverse.StructuredData.OSDMap(prims.Count); - - for (int i = 0; i < prims.Count; i++) - map.Add(prims[i].LocalID.ToString(), prims[i].GetOSD()); - - return map; - } - - /// - /// Deserializes OSD in to a list of primitives - /// - /// Structure holding the serialized primitive list, - /// must be of the SDMap type - /// A list of deserialized primitives - public static List OSDToPrimList(StructuredData.OSD osd) - { - if (osd.Type != StructuredData.OSDType.Map) - throw new ArgumentException("LLSD must be in the Map structure"); - - StructuredData.OSDMap map = (StructuredData.OSDMap)osd; - List prims = new List(map.Count); - - foreach (KeyValuePair kvp in map) - { - Primitive prim = Primitive.FromOSD(kvp.Value); - prim.LocalID = UInt32.Parse(kvp.Key); - prims.Add(prim); - } - - return prims; - } - - public static AttachmentPoint StateToAttachmentPoint(uint state) - { - const uint ATTACHMENT_MASK = 0xF0; - uint fixedState = (((byte)state & ATTACHMENT_MASK) >> 4) | (((byte)state & ~ATTACHMENT_MASK) << 4); - return (AttachmentPoint)fixedState; - } + } } } diff --git a/OpenMetaverse/_Packets_.cs b/OpenMetaverseCore/_Packets_.cs similarity index 100% rename from OpenMetaverse/_Packets_.cs rename to OpenMetaverseCore/_Packets_.cs diff --git a/Programs/PrimWorkshop/frmBrowser.cs b/Programs/PrimWorkshop/frmBrowser.cs index 75942d17..4c654746 100644 --- a/Programs/PrimWorkshop/frmBrowser.cs +++ b/Programs/PrimWorkshop/frmBrowser.cs @@ -328,7 +328,7 @@ namespace PrimWorkshop textures = 0; // Write the LLSD to the hard drive in XML format - string output = OSDParser.SerializeLLSDXmlString(Helpers.PrimListToOSD(primList)); + string output = OSDParser.SerializeLLSDXmlString(ClientHelpers.PrimListToOSD(primList)); try { // Create a temporary directory @@ -499,7 +499,7 @@ namespace PrimWorkshop // Decode the .prims file string raw = File.ReadAllText(primFile); OSD osd = OSDParser.DeserializeLLSDXml(raw); - return Helpers.OSDToPrimList(osd); + return ClientHelpers.OSDToPrimList(osd); } catch (Exception e) { diff --git a/Programs/PrimWorkshop/frmPrimWorkshop.cs b/Programs/PrimWorkshop/frmPrimWorkshop.cs index cc324eb7..4cf302c5 100644 --- a/Programs/PrimWorkshop/frmPrimWorkshop.cs +++ b/Programs/PrimWorkshop/frmPrimWorkshop.cs @@ -275,7 +275,7 @@ namespace PrimWorkshop if (osd != null && osd.Type == OSDType.Map) { - List primList = Helpers.OSDToPrimList(osd); + List primList = ClientHelpers.OSDToPrimList(osd); Prims = new List(primList.Count); for (int i = 0; i < primList.Count; i++) diff --git a/Programs/examples/TestClient/Commands/Appearance/AttachmentsCommand.cs b/Programs/examples/TestClient/Commands/Appearance/AttachmentsCommand.cs index 38085ee0..cb8c11ce 100644 --- a/Programs/examples/TestClient/Commands/Appearance/AttachmentsCommand.cs +++ b/Programs/examples/TestClient/Commands/Appearance/AttachmentsCommand.cs @@ -23,7 +23,7 @@ namespace OpenMetaverse.TestClient for (int i = 0; i < attachments.Count; i++) { Primitive prim = attachments[i]; - AttachmentPoint point = Helpers.StateToAttachmentPoint(prim.PrimData.State); + AttachmentPoint point = StateToAttachmentPoint(prim.PrimData.State); // TODO: Fetch properties for the objects with missing property sets so we can show names Logger.Log(String.Format("[Attachment @ {0}] LocalID: {1} UUID: {2} Offset: {3}", @@ -32,5 +32,12 @@ namespace OpenMetaverse.TestClient return "Found " + attachments.Count + " attachments"; } + + public static AttachmentPoint StateToAttachmentPoint(uint state) + { + const uint ATTACHMENT_MASK = 0xF0; + uint fixedState = (((byte)state & ATTACHMENT_MASK) >> 4) | (((byte)state & ~ATTACHMENT_MASK) << 4); + return (AttachmentPoint)fixedState; + } } } diff --git a/Programs/examples/TestClient/Commands/Prims/ExportCommand.cs b/Programs/examples/TestClient/Commands/Prims/ExportCommand.cs index dd3cc310..4fe4d46b 100644 --- a/Programs/examples/TestClient/Commands/Prims/ExportCommand.cs +++ b/Programs/examples/TestClient/Commands/Prims/ExportCommand.cs @@ -100,7 +100,7 @@ namespace OpenMetaverse.TestClient Logger.Log(uuid.ToString(), Helpers.LogLevel.Warning, Client); } - string output = OSDParser.SerializeLLSDXmlString(Helpers.PrimListToOSD(prims)); + string output = OSDParser.SerializeLLSDXmlString(ClientHelpers.PrimListToOSD(prims)); try { File.WriteAllText(file, output); } catch (Exception e) { return e.Message; } diff --git a/Programs/examples/TestClient/Commands/Prims/ImportCommand.cs b/Programs/examples/TestClient/Commands/Prims/ImportCommand.cs index 5c2755f4..5e20abbe 100644 --- a/Programs/examples/TestClient/Commands/Prims/ImportCommand.cs +++ b/Programs/examples/TestClient/Commands/Prims/ImportCommand.cs @@ -63,7 +63,7 @@ namespace OpenMetaverse.TestClient try { xml = File.ReadAllText(filename); } catch (Exception e) { return e.Message; } - try { prims = Helpers.OSDToPrimList(OSDParser.DeserializeLLSDXml(xml)); } + try { prims = ClientHelpers.OSDToPrimList(OSDParser.DeserializeLLSDXml(xml)); } catch (Exception e) { return "Failed to deserialize " + filename + ": " + e.Message; } // Build an organized structure from the imported prims diff --git a/mapgen.bat b/mapgen.bat index ab69895a..95f8b18b 100644 --- a/mapgen.bat +++ b/mapgen.bat @@ -1 +1 @@ -"bin/mapgenerator.exe" data/message_template.msg Programs/mapgenerator/template.cs Programs/mapgenerator/unusedpackets.txt OpenMetaverse/_Packets_.cs \ No newline at end of file +"bin/mapgenerator.exe" data/message_template.msg Programs/mapgenerator/template.cs Programs/mapgenerator/unusedpackets.txt OpenMetaverseCore/_Packets_.cs \ No newline at end of file diff --git a/prebuild.xml b/prebuild.xml index f02ee900..e5b9262a 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -1 +1,828 @@ - TRACE;DEBUG false false true 4 false 1591,1574,0419,0618 bin true true false TRACE true false true 4 false 1591,1574,0419,0618 bin false true false ../bin/ ../bin/ ../bin/ ../bin/ ../bin/ OpenMetaverseTypes.XML ../bin/ ../bin/ ../bin/ OpenMetaverse.StructuredData.XML ../bin/ ../bin/ ../bin/ OpenMetaverse.Http.XML ../bin/ ../bin/ ../bin/ OpenMetaverse.XML ../bin/ ../bin/ ../bin/ OpenMetaverse.Utilities.XML ../bin/ ../bin/ ../bin/ ../bin/ ../../bin/ ../../bin/ ../../bin/ ../bin/ ../bin/ ../bin/ ../bin/ ../bin/ ../bin/ ../bin/ ../bin/ ../bin/ ../bin/ ../bin/ OpenMetaverse.GUI.XML ../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ ../../../bin/ \ No newline at end of file + + + + + + TRACE;DEBUG + false + false + true + 4 + false + 1591,1574,0419,0618 + bin + true + true + false + + + + + TRACE + true + false + true + 4 + false + 1591,1574,0419,0618 + bin + false + true + false + + + + + + + + + ../bin/ + + + + + ../bin/ + + + + ../bin/ + + + + + + + + + + + + + + ../bin/ + + + + + ../bin/ + OpenMetaverseTypes.XML + + + + ../bin/ + + + + + + + + + + + ../bin/ + + + + + ../bin/ + OpenMetaverse.StructuredData.XML + + + + ../bin/ + + + + + + + + + + + + ../bin/ + + + + + ../bin/ + OpenMetaverse.Http.XML + + + + ../bin/ + + + + + + + + + + + + + + + + ../bin/ + + + + + ../bin/ + OpenMetaverseCore.XML + + + + ../bin/ + + + + + + + + + + + + + + + + ../bin/ + + + + + ../bin/ + OpenMetaverse.XML + + + + ../bin/ + + + + + + + + + + + + + + + + + + + + + ../bin/ + + + + + ../bin/ + OpenMetaverse.Utilities.XML + + + + ../bin/ + + + + + + + + + + + + + + + + + ../bin/ + + + + + ../bin/ + + + + ../bin/ + + + + + + + + + + + + + + + + + ../../bin/ + + + + + ../../bin/ + + + + ../../bin/ + + + + + + + + + + + + + + + + + + + + ../bin/ + + + + + ../bin/ + + + + ../bin/ + + + + + + + + + + + + ../bin/ + + + + + ../bin/ + + + + ../bin/ + + + + + + + + + + + + ../bin/ + + + + + ../bin/ + + + + ../bin/ + + + + + + + + + + + + ../bin/ + + + + + ../bin/ + OpenMetaverse.GUI.XML + + + + ../bin/ + + + + + + + + + + + + + + + + + + ../../bin/ + + + + + ../../bin/ + + + + ../../bin/ + + + + + + + + + + + + + + + + + + + + + + ../../bin/ + + + + + ../../bin/ + + + + ../../bin/ + + + + + + + + + + + + + + + + + + + + ../../bin/ + + + + + ../../bin/ + + + + ../../bin/ + + + + + + + + + + + + + + + + ../../bin/ + + + + + ../../bin/ + + + + ../../bin/ + + + + + + + + + + + + ../../../bin/ + + + + + ../../../bin/ + + + + ../../../bin/ + + + + + + + + + + + + ../../../bin/ + + + + + ../../../bin/ + + + + ../../../bin/ + + + + + + + + + + + + + + + + + + + ../../bin/ + + + + + ../../bin/ + + + + ../../bin/ + + + + + + + + + + + + + + + + + + + + + + + + + + ../../bin/ + + + + + ../../bin/ + + + + ../../bin/ + + + + + + + + + + + + + + + + + + + + + ../../bin/ + + + + + ../../bin/ + + + + ../../bin/ + + + + + + + + + + + + + + + ../../bin/ + + + + + ../../bin/ + + + + ../../bin/ + + + + + + + + + + + + + + + + + + + + + + + + + ../../bin/ + + + + + ../../bin/ + + + + ../../bin/ + + + + + + + + + + + + + + + ../../bin/ + + + + + ../../bin/ + + + + ../../bin/ + + + + + + + + + + + + + + + + + ../../../bin/ + + + + + ../../../bin/ + + + + ../../../bin/ + + + + + + + + + + + + + + + + + + + + ../../../bin/ + + + + + ../../../bin/ + + + + ../../../bin/ + + + + + + + + + + + + + + + + + + + ../../../bin/ + + + + + ../../../bin/ + + + + ../../../bin/ + + + + + + + + + + + + + + + + + + + + ../../../bin/ + + + + + ../../../bin/ + + + + ../../../bin/ + + + + + + + + + + + + + + ../../../bin/ + + + + + ../../../bin/ + + + + ../../../bin/ + + + + + + + + + + + + + + + + + + + +