public BusObject(Connection conn, string bus_name, ObjectPath object_path) { this.conn = conn; this.bus_name = bus_name; this.object_path = object_path; }
public T GetObject <T> (string bus_name, ObjectPath path) { return((T)GetObject(typeof(T), bus_name, path)); }
public ExportObject(Connection conn, ObjectPath object_path, object obj) : base(conn, null, object_path) { this.obj = obj; }
static void AppendPathArg(StringBuilder sb, int index, ObjectPath value) { Append(sb, "arg" + index + "path", value.ToString()); }
//not particularly efficient and needs to be generalized internal void HandleMethodCall(MessageContainer method_call) { //TODO: Ping and Introspect need to be abstracted and moved somewhere more appropriate once message filter infrastructure is complete //FIXME: these special cases are slightly broken for the case where the member but not the interface is specified in the message if (method_call.Interface == "org.freedesktop.DBus.Peer") { switch (method_call.Member) { case "Ping": Send(MessageHelper.ConstructReply(method_call)); return; case "GetMachineId": if (MachineId != UUID.Zero) { Send(MessageHelper.ConstructReply(method_call, MachineId.ToString())); return; } else { // Might want to send back an error here? } break; } } if (method_call.Interface == "org.freedesktop.DBus.Introspectable" && method_call.Member == "Introspect") { Introspector intro = new Introspector(); intro.root_path = method_call.Path; intro.WriteStart(); //FIXME: do this properly //this is messy and inefficient List <string> linkNodes = new List <string> (); int depth = method_call.Path.Decomposed.Length; foreach (ObjectPath pth in registeredObjects.Keys) { if (pth.Value == (method_call.Path.Value)) { ExportObject exo = (ExportObject)registeredObjects[pth]; exo.WriteIntrospect(intro); } else { for (ObjectPath cur = pth; cur != null; cur = cur.Parent) { if (cur.Value == method_call.Path.Value) { string linkNode = pth.Decomposed[depth]; if (!linkNodes.Contains(linkNode)) { intro.WriteNode(linkNode); linkNodes.Add(linkNode); } } } } } intro.WriteEnd(); Message reply = MessageHelper.ConstructReply(method_call, intro.Xml); Send(reply); return; } BusObject bo; if (registeredObjects.TryGetValue(method_call.Path, out bo)) { ExportObject eo = (ExportObject)bo; eo.HandleMethodCall(method_call); } else { MaybeSendUnknownMethodError(method_call); } }
public MatchTest(ObjectPath value) { Signature = Signature.ObjectPathSig; Value = value; }
public ArgMatchTest(int argNum, ObjectPath value) { ArgNum = argNum; Signature = Signature.ObjectPathSig; Value = value; }
public static ExportObject CreateExportObject(Connection conn, ObjectPath object_path, object obj) { return(new ExportObject(conn, object_path, obj)); }
public void Write(ObjectPath val) { Write(val.Value); }
public object GetObject(Type type) { ObjectPath path = ReadObjectPath(); return(message.Connection.GetObject(type, (string)message.Header[FieldCode.Sender], path)); }