Logo Search packages:      
Sourcecode: f-spot version File versions  Download package

ErrorCodes.cs

using System;
using System.Runtime.InteropServices;

namespace LibGPhoto2
{
      public enum ErrorCode
      {
            /* IO Errors */
            GeneraError       = -1,
            BadParameters           = -2,
            NoMemory          = -3,
            Library                 = -4,
            UnknownPort       = -5,
            NotSupported            = -6,
            IO                = -7,
            Timout                  = -10,
            SupportedSerial         = -20,
            SupportedUSB            = -21,
            Init              = -31,
            Read              = -34,
            Write             = -35,
            Update                  = -37,
            SerialSpeed       = -41,
            USBClearHalt            = -51,
            USBFind                 = -52,
            USBClaim          = -53,
            Lock              = -60,

            /* Other Errors*/
            CorruptedData           = -102,
            PathNotAbsolute         = -111,
            DirectoryExists         = -109,
            FileExists        = -103,
            FileNotFound            = -108,
            DirectoryNotFound = -107,
            ModelNotFound           = -105
      }

      public class Error
      {
            private static string GetErrorAsString(ErrorCode e)
            {
                  IntPtr raw_message = gp_result_as_string(e);
                  return Marshal.PtrToStringAnsi(raw_message);
            }

            private static string GetIOErrorAsString(ErrorCode e)
            {
                  IntPtr raw_message = gp_port_result_as_string(e);
                  return Marshal.PtrToStringAnsi(raw_message);
            }
            
            public static bool IsError (ErrorCode error_code)
            {
                  return (error_code < 0);
            }
            
            public static GPhotoException ErrorException (ErrorCode error_code)
            {
                  string message = "Unknown Error";
                  int error_code_int = (int)error_code;
                  
                  if (error_code_int <= -102 && error_code_int >= -111)
                        message = GetErrorAsString(error_code);
                  else if (error_code_int <= -1 && error_code_int >= -60)
                        message = GetIOErrorAsString(error_code);

                  return new GPhotoException(error_code, message);
            }
            
            public static ErrorCode CheckError (ErrorCode error)
            {
                  if (IsError (error))
                        throw ErrorException (error);
                  
                  return error;
            }
            
            [DllImport ("libgphoto2.so")]
            internal static extern IntPtr gp_result_as_string (ErrorCode result);
            
            [DllImport ("libgphoto2_port.so")]
            internal static extern IntPtr gp_port_result_as_string (ErrorCode result);
      }
      
      public class GPhotoException : Exception
      {
            private ErrorCode error;
            
            public GPhotoException(ErrorCode error_code)
            : base ("Unknown Error.")
            {
                  error = error_code;
            }
            
            public GPhotoException (ErrorCode error_code, string message)
            : base (message)
            {
                  error = error_code;
            }
            
            public override string ToString()
            {
                  return ("Error " + error.ToString() + ": " + base.ToString());
            }

            public ErrorCode Error {
                  get {
                        return error;
                  }
            }
      }
}

Generated by  Doxygen 1.6.0   Back to index