/*** This file is part of avahi. avahi is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. avahi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with avahi; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. ***/ using System; using System.Runtime.InteropServices; namespace Avahi { public enum ErrorCode { Ok = 0, Failure = -1, BadState = -2, InvalidHostName = - 3, InvalidDomainName = -4, NoNetwork = -5, InvalidTTL = -6, IsPattern = -7, Collision = -8, InvalidRecord = -9, InvalidServiceName = -10, InvalidServiceType = -11, InvalidPort = -12, InvalidKey = -13, InvalidAddress = -14, Timeout = -15, TooManyClients = -16, TooManyObjects = -17, TooManyEntries = -18, OS = -19, AccessDenied = -20, InvalidOperation = -21, DBusError = -22, Disconnected = -23, NoMemory = -24, InvalidObject = -25, NoDaemon = -26, InvalidInterface = -27, InvalidProtocol = -28, InvalidFlags = -29, NotFound = -30, InvalidConfig = -31, VersionMismatch = -32, InvalidServiceSubtype = -33, InvalidPacket = -34, InvalidDnsError = -35, DnsFormErr = -36, DnsServFail = -37, DnsNxDomain = -38, DnsNoTimp = -39, DnsRefused = -40, DnsYxDomain = -41, DnsYxRrSet = -42, DnsNxRrSet = -43, DnsNotAuth = -44, DnsNotZone = -45, InvalidRData = -46, InvalidDnsClass = -47, InvalidDnsType = -48, NotSupported = -49, NotPermitted = -50 } public delegate void ErrorCodeHandler (object o, ErrorCodeArgs args); public class ErrorCodeArgs : EventArgs { private ErrorCode code; public ErrorCode ErrorCode { get { return code; } } public ErrorCodeArgs (ErrorCode code) { this.code = code; } } public class ClientException : ApplicationException { private ErrorCode code; [DllImport ("avahi-common")] private static extern IntPtr avahi_strerror (ErrorCode code); public ErrorCode ErrorCode { get { return code; } } internal ClientException (int code) : this ((ErrorCode) code) { } internal ClientException (ErrorCode code) : base (GetErrorString (code)) { this.code = code; } private static string GetErrorString (ErrorCode code) { IntPtr str = avahi_strerror (code); return Utility.PtrToString (str); } } }