banshee r4323 - in trunk/musicbrainz-sharp/src/MusicBrainz: . MusicBrainz



Author: scottp
Date: Tue Aug  5 10:41:45 2008
New Revision: 4323
URL: http://svn.gnome.org/viewvc/banshee?rev=4323&view=rev

Log:
* src/MusicBrainz/MusicBrainz/MusicBrainzObject.cs: Made some protected
  methods static.
* src/MusicBrainz/MusicBrainz/LocalDisc.cs: Changed protected
  properties to protected fields and changed an array property to a
  method.
* src/MusicBrainz/MusicBrainz/DiscLinux.cs,
  src/MusicBrainz/MusicBrainz/DiscWin32.cs: Changed class name to
  match file name and changed protected properties to protected
  fields.
* src/MusicBrainz/MusicBrainz/Query.cs: Changed attribute public
  readonly fields to public readonly properties.
* src/MusicBrainz/MusicBrainz/Artist.cs: Made public static field
  ThreadStatic and made a private method static.
* src/MusicBrainz/MusicBrainz/MusicBrainzService.cs: Made public static
  fields ThreadStatic.

Modified:
   trunk/musicbrainz-sharp/src/MusicBrainz/ChangeLog
   trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/Artist.cs
   trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/DiscLinux.cs
   trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/DiscWin32.cs
   trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/LocalDisc.cs
   trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/MusicBrainzObject.cs
   trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/MusicBrainzService.cs
   trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/Query.cs

Modified: trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/Artist.cs
==============================================================================
--- trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/Artist.cs	(original)
+++ trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/Artist.cs	Tue Aug  5 10:41:45 2008
@@ -125,8 +125,20 @@
 
         #region Public
         
-        public static ArtistReleaseType DefaultArtistReleaseType =
-            new ArtistReleaseType (ReleaseStatus.Official, false);
+        [ThreadStatic]
+        private static ArtistReleaseType default_artist_release_type;
+        public static ArtistReleaseType DefaultArtistReleaseType {
+            get {
+                if (default_artist_release_type == null) {
+                    default_artist_release_type = new ArtistReleaseType (ReleaseStatus.Official, false);
+                }
+                return default_artist_release_type;
+            }
+            set {
+                if (value == null) throw new ArgumentNullException ("value");
+                default_artist_release_type = value; 
+            }
+        }
         
         public ArtistReleaseType ArtistReleaseType {
             get { return artist_release_type; }
@@ -238,7 +250,7 @@
             str = builder.ToString ();
         }
         
-        void Format (StringBuilder builder, Enum enumeration, bool various)
+        static void Format (StringBuilder builder, Enum enumeration, bool various)
         {
             builder.Append (various ? "va-" : "sa-");
             Utils.EnumToString (builder, enumeration.ToString ());
@@ -256,8 +268,8 @@
         
         public static bool operator ==(ArtistReleaseType artistReleaseType1, ArtistReleaseType artistReleaseType2)
         {
-            return (artistReleaseType1 == null && artistReleaseType2 == null) ||
-                (artistReleaseType1 != null && artistReleaseType2 != null && artistReleaseType1.str == artistReleaseType2.str);
+            return (Object.ReferenceEquals (artistReleaseType1, null) && Object.ReferenceEquals (artistReleaseType2, null)) ||
+                (!Object.ReferenceEquals (artistReleaseType1, null) && !Object.ReferenceEquals (artistReleaseType2, null) && artistReleaseType1.str == artistReleaseType2.str);
         }
         
         public static bool operator !=(ArtistReleaseType artistReleaseType1, ArtistReleaseType artistReleaseType2)

Modified: trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/DiscLinux.cs
==============================================================================
--- trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/DiscLinux.cs	(original)
+++ trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/DiscLinux.cs	Tue Aug  5 10:41:45 2008
@@ -25,7 +25,7 @@
 
 namespace MusicBrainz
 {
-    internal sealed class LinuxDisc : LocalDisc
+    internal sealed class DiscLinux : LocalDisc
     {
         const int O_RDONLY = 0x0;
         const int O_NONBLOCK = 0x4000;
@@ -37,7 +37,7 @@
         const int CD_FRAMES = 75;
         const int XA_INTERVAL = ((60 + 90 + 2) * CD_FRAMES);
         
-        [DllImport ("libc.so.6")]
+        [DllImport ("libc.so.6", CharSet = CharSet.Auto)]
         static extern int open (string path, int flags);
         
         [DllImport ("libc.so.6")]
@@ -95,18 +95,18 @@
             
             if (ret < 0) return ret;
             
-            FirstTrack = th.cdth_trk0;
-            LastTrack = th.cdth_trk1;
+            first_track = th.cdth_trk0;
+            last_track = th.cdth_trk1;
             
             ms.addr_format = CDROM_LBA;
             ret = read_multisession (fd, ref ms);
             
-            if(ms.xa_flag != 0) LastTrack--;
+            if(ms.xa_flag != 0) last_track--;
             
             return ret;
         }
         
-        int ReadTocEntry (int fd, byte track_number, ref ulong lba)
+        static int ReadTocEntry (int fd, byte track_number, ref ulong lba)
         {
             cdrom_tocentry te = new cdrom_tocentry ();
             te.cdte_track = track_number;
@@ -134,7 +134,7 @@
             return ReadTocEntry (fd, CDROM_LEADOUT, ref lba);
         }
         
-        internal LinuxDisc (string device)
+        internal DiscLinux (string device)
         {
             int fd = open (device, O_RDONLY | O_NONBLOCK);
             
@@ -142,15 +142,15 @@
             
             try {
                 if (ReadTocHeader(fd) < 0) throw new Exception ("Cannot read table of contents");
-                if (LastTrack == 0) throw new Exception ("This disc has no tracks");
+                if (last_track == 0) throw new Exception ("This disc has no tracks");
                 
                 ulong lba = 0;
                 ReadLeadout (fd, ref lba);
-                TrackOffsets [0] = (int)lba + 150;
+                track_offsets [0] = (int)lba + 150;
                 
-                for (byte i = FirstTrack; i <= LastTrack; i++) {
+                for (byte i = first_track; i <= last_track; i++) {
                     ReadTocEntry (fd, i, ref lba);
-                    TrackOffsets[i] = (int)lba + 150;
+                    track_offsets[i] = (int)lba + 150;
                 }
             } finally {
                 close (fd);

Modified: trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/DiscWin32.cs
==============================================================================
--- trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/DiscWin32.cs	(original)
+++ trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/DiscWin32.cs	Tue Aug  5 10:41:45 2008
@@ -27,17 +27,17 @@
 
 namespace MusicBrainz
 {
-    internal sealed class Win32Disc : LocalDisc
+    internal sealed class DiscWin32 : LocalDisc
     {
         [DllImport ("winmm")]
-        static extern Int32 mciSendString (String command, StringBuilder buffer, Int32 bufferSize, IntPtr hwndCallback);
+        static extern Int32 mciSendString ([MarshalAs(UnmanagedType.LPTStr)] String command, [MarshalAs(UnmanagedType.LPTStr)] StringBuilder buffer, Int32 bufferSize, IntPtr hwndCallback);
 
         [DllImport ("winmm")]
-        static extern Int32 mciGetErrorString (Int32 errorCode, StringBuilder errorText, Int32 errorTextSize);
+        static extern Int32 mciGetErrorString (Int32 errorCode, [MarshalAs(UnmanagedType.LPTStr)] StringBuilder errorText, Int32 errorTextSize);
         
         delegate void MciCall (string result);
 
-        internal Win32Disc (string device)
+        internal DiscWin32 (string device)
         {
             string device_string = device.Length == 0 ? "cdaudio" : string.Format ("{0} type cdaudio", device);
 
@@ -61,8 +61,8 @@
                 string.Format ("status {0} number of tracks wait", alias),
                 "Could not read number of tracks",
                 delegate (string result) {
-                    FirstTrack = 1;
-                    LastTrack = byte.Parse (result);
+                    first_track = 1;
+                    last_track = byte.Parse (result);
                 });
 
             MciClosure (
@@ -70,26 +70,26 @@
                 "Could not set time format",
                 null);
 
-            for (int i = 1; i <= LastTrack; i++)
+            for (int i = 1; i <= last_track; i++)
                 MciClosure (
                     string.Format ("status {0} position track {1} wait", alias, i),
                     string.Format ("Could not get position for track {0}", i),
                     delegate (string result) {
-                        TrackOffsets [i] =
+                        track_offsets [i] =
                             int.Parse (result.Substring (0,2)) * 4500 +
                             int.Parse (result.Substring (3,2)) * 75 +
                             int.Parse (result.Substring (6,2));
                     });
 
             MciClosure (
-                string.Format ("status {0} length track {1} wait", alias, LastTrack),
+                string.Format ("status {0} length track {1} wait", alias, last_track),
                 "Could not read the length of the last track",
                 delegate (string result) {
-                    TrackOffsets [0] =
+                    track_offsets [0] =
                         int.Parse (result.Substring (0, 2)) * 4500 +
                         int.Parse (result.Substring (3, 2)) * 75 +
                         int.Parse (result.Substring (6, 2)) +
-                        TrackOffsets [LastTrack] + 1;
+                        track_offsets [last_track] + 1;
                 });
 
             MciClosure (

Modified: trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/LocalDisc.cs
==============================================================================
--- trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/LocalDisc.cs	(original)
+++ trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/LocalDisc.cs	Tue Aug  5 10:41:45 2008
@@ -28,12 +28,25 @@
 {
     public abstract class LocalDisc : Disc
     {
-        public static string SubmissionServiceUrl = "http://mm.musicbrainz.org/bare/cdlookup.html";;
+        [ThreadStatic]
+        private static string submission_service_url;
+        public static string SubmissionServiceUrl {
+            get {
+                if (submission_service_url == null) {
+                    submission_service_url = "http://mm.musicbrainz.org/bare/cdlookup.html";;
+                }
+                return submission_service_url;
+            }
+            set {
+                if (value == null) throw new ArgumentNullException ("value");
+                submission_service_url = value;
+            }
+        }
         
-        byte first_track;
-        byte last_track;
+        protected byte first_track;
+        protected byte last_track;
+        protected int [] track_offsets = new int [100];
         int [] track_durations;
-        int [] track_offsets = new int [100];
         
         internal LocalDisc()
         {
@@ -55,8 +68,8 @@
         {
             StringBuilder input_builder = new StringBuilder (804);
             
-            input_builder.Append (string.Format ("{0:X2}", FirstTrack));
-            input_builder.Append (string.Format ("{0:X2}", LastTrack));
+            input_builder.Append (string.Format ("{0:X2}", first_track));
+            input_builder.Append (string.Format ("{0:X2}", last_track));
             
             for (int i = 0; i < track_offsets.Length; i++)
                 input_builder.Append (string.Format ("{0:X8}", track_offsets [i]));
@@ -75,22 +88,9 @@
             Id = hash_builder.ToString ();
         }
         
-        protected byte FirstTrack {
-            get { return first_track; }
-            set { first_track = value; }
-        }
-
-        protected byte LastTrack {
-            get { return last_track; }
-            set { last_track = value; }
-        }
-
-        protected int [] TrackOffsets {
-            get { return track_offsets; }
-        }
-        
-        public int [] TrackDurations {
-            get { return track_durations; }
+        public int [] GetTrackDurations ()
+        {
+            return (int []) track_durations.Clone ();
         }
         
         string submission_url;
@@ -123,8 +123,8 @@
         {
             if (device == null) throw new ArgumentNullException ("device");
             return Environment.OSVersion.Platform != PlatformID.Unix
-                ? (LocalDisc)new Win32Disc (device)
-                : new LinuxDisc (device);
+                ? (LocalDisc)new DiscWin32 (device)
+                : new DiscLinux (device);
         }
     }
 }

Modified: trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/MusicBrainzObject.cs
==============================================================================
--- trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/MusicBrainzObject.cs	(original)
+++ trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/MusicBrainzObject.cs	Tue Aug  5 10:41:45 2008
@@ -168,13 +168,13 @@
                 AppendIncParameters (builder, rels_params);
         }
         
-        protected void AppendIncParameters (StringBuilder builder, string parameter)
+        protected static void AppendIncParameters (StringBuilder builder, string parameter)
         {
             builder.Append (builder.Length == 0 ? "&inc=" : "+");
             builder.Append (parameter);
         }
         
-        protected void AppendIncParameters (StringBuilder builder, string parameter1, string parameter2)
+        protected static void AppendIncParameters (StringBuilder builder, string parameter1, string parameter2)
         {
             builder.Append (builder.Length == 0 ? "&inc=" : "+");
             builder.Append (parameter1);
@@ -182,7 +182,7 @@
             builder.Append (parameter2);
         }
 
-        protected void AppendIncParameters (StringBuilder builder, string [] parameters)
+        protected static void AppendIncParameters (StringBuilder builder, string [] parameters)
         {
             foreach (string parameter in parameters)
                 AppendIncParameters (builder, parameter);
@@ -279,7 +279,7 @@
         
         public static bool operator ==(MusicBrainzObject obj1, MusicBrainzObject obj2)
         {
-            return (obj1 == null && obj2 == null) || (obj1 != null && obj2 != null && obj1.GetType ().Equals (obj2.GetType ()) && obj1.Id == obj2.Id);
+            return (Object.ReferenceEquals (obj1, null) && Object.ReferenceEquals (obj2, null)) || (!Object.ReferenceEquals (obj1, null) && !Object.ReferenceEquals (obj2, null) && obj1.GetType () == obj2.GetType () && obj1.Id == obj2.Id);
         }
         
         public static bool operator !=(MusicBrainzObject obj1, MusicBrainzObject obj2)

Modified: trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/MusicBrainzService.cs
==============================================================================
--- trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/MusicBrainzService.cs	(original)
+++ trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/MusicBrainzService.cs	Tue Aug  5 10:41:45 2008
@@ -27,8 +27,28 @@
 {
     public static class MusicBrainzService
     {
-        public static string ServiceUrl = @"http://musicbrainz.org/ws/1/";;
-        public static RequestCachePolicy CachePolicy;
+        [ThreadStatic]
+        private static string service_url;
+        public static string ServiceUrl {
+            get {
+                if (service_url == null) {
+                    service_url = @"http://musicbrainz.org/ws/1/";;
+                }
+                return service_url;
+            }
+            set {
+                if (value == null) throw new ArgumentNullException ("value");
+                service_url = value;
+            }
+        }
+        
+        [ThreadStatic]
+        private static RequestCachePolicy cache_policy;
+        public static RequestCachePolicy CachePolicy {
+            get { return cache_policy; }
+            set { cache_policy = value; }
+        }
+        
         public static event EventHandler<XmlRequestEventArgs> XmlRequest;
         
         internal static void OnXmlRequest (string url, bool fromCache)

Modified: trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/Query.cs
==============================================================================
--- trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/Query.cs	(original)
+++ trunk/musicbrainz-sharp/src/MusicBrainz/MusicBrainz/Query.cs	Tue Aug  5 10:41:45 2008
@@ -174,23 +174,36 @@
     [AttributeUsage (AttributeTargets.Method | AttributeTargets.Property)]
     internal sealed class QueryableAttribute : Attribute
     {
-        public readonly string Name;
+        readonly string name;
+        
         public QueryableAttribute (string name)
         {
-            Name = name;
+            this.name = name;
+        }
+        
+        public string Name {
+            get { return name; }
         }
     }
 
     [AttributeUsage (AttributeTargets.Method | AttributeTargets.Property)]
     internal sealed class QueryableMemberAttribute : Attribute
     {
-        public readonly string Name;
-        public readonly string Member;
+        readonly string member;
+        readonly string name;
         
         public QueryableMemberAttribute (string member, string name)
         {
-            Member = member;
-            Name = name;
+            this.member = member;
+            this.name = name;
+        }
+        
+        public string Member {
+            get { return member; }
+        }
+        
+        public string Name {
+            get { return name; }
         }
     }
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]