From 9ed0a8dbad121b64ca8baca78f28ca58602c47ca Mon Sep 17 00:00:00 2001
From: MW
Date: Wed, 25 Apr 2007 18:12:06 +0000
Subject: updated to use lastest version of libsl but is currently broke when
using SL viewer 1.15.02, due to big changes in the message templates.
---
XmlRpcCS/XmlRpcExposedAttribute.cs | 60 ++++++++++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)
create mode 100644 XmlRpcCS/XmlRpcExposedAttribute.cs
(limited to 'XmlRpcCS/XmlRpcExposedAttribute.cs')
diff --git a/XmlRpcCS/XmlRpcExposedAttribute.cs b/XmlRpcCS/XmlRpcExposedAttribute.cs
new file mode 100644
index 0000000..67b27ae
--- /dev/null
+++ b/XmlRpcCS/XmlRpcExposedAttribute.cs
@@ -0,0 +1,60 @@
+namespace Nwc.XmlRpc
+{
+ using System;
+ using System.Reflection;
+
+ ///
+ /// Simple tagging attribute to indicate participation is XML-RPC exposure.
+ ///
+ ///
+ /// If present at the class level it indicates that this class does explicitly
+ /// expose methods. If present at the method level it denotes that the method
+ /// is exposed.
+ ///
+ [AttributeUsage(
+ AttributeTargets.Class | AttributeTargets.Method,
+ AllowMultiple = false,
+ Inherited = true
+ )]
+ public class XmlRpcExposedAttribute : Attribute
+ {
+ /// Check if obj is an object utilizing the XML-RPC exposed Attribute.
+ /// Object of a class or method to check for attribute.
+ /// Boolean true if attribute present.
+ public static Boolean ExposedObject(Object obj)
+ {
+ return IsExposed(obj.GetType());
+ }
+
+ /// Check if obj.methodName is an XML-RPC exposed method.
+ /// A method is considered to be exposed if it exists and, either, the object does not use the XmlRpcExposed attribute,
+ /// or the object does use the XmlRpcExposed attribute and the method has the XmlRpcExposed attribute as well.
+ /// Boolean true if the method is exposed.
+ public static Boolean ExposedMethod(Object obj, String methodName)
+ {
+ Type type = obj.GetType();
+ MethodInfo method = type.GetMethod(methodName);
+
+ if (method == null)
+ throw new MissingMethodException("Method " + methodName + " not found.");
+
+ if (!IsExposed(type))
+ return true;
+
+ return IsExposed(method);
+ }
+
+ /// Check if mi is XML-RPC exposed.
+ /// MemberInfo of a class or method to check for attribute.
+ /// Boolean true if attribute present.
+ public static Boolean IsExposed(MemberInfo mi)
+ {
+ foreach (Attribute attr in mi.GetCustomAttributes(true))
+ {
+ if (attr is XmlRpcExposedAttribute)
+ return true;
+ }
+ return false;
+ }
+ }
+}
--
cgit v1.1