private bool IsContactCapable(string bus_name, ObjectPath op, uint handle) { Console.WriteLine(MSG_PREFIX + "Getting Contact capabilities"); uint[] handles = new uint[1]; handles[0] = handle; IDictionary <uint, RequestableChannelClass[]> caps; IContactCapabilities icaps = bus.GetObject <IContactCapabilities> (bus_name, op); caps = icaps.GetContactCapabilities(handles); if (caps.ContainsKey(handle)) { RequestableChannelClass[] rccs = caps[handle]; for (int i = 0; i < rccs.Length; i++) { if (rccs[i].FixedProperties.ContainsKey(Constants.CHANNEL_TYPE_DBUSTUBE + ".ServiceName") && rccs[i].FixedProperties[Constants.CHANNEL_TYPE_DBUSTUBE + ".ServiceName"].Equals(DTUBETEST_IFACE)) { Console.WriteLine(MSG_PREFIX + "Contact supports service name {0}", DTUBETEST_IFACE); return(true); } } } return(false); }
protected internal virtual void Initialize() { capabilities = Connection.ContactCapabilities; capabilities.ContactCapabilitiesChanged += OnContactCapabilitiesChanged; if (Status > ConnectionPresenceType.Offline && Status < ConnectionPresenceType.Unknown) { uint [] handle = { Handle }; IDictionary <uint, RequestableChannelClass []> dictionary = capabilities.GetContactCapabilities(handle); if (dictionary.ContainsKey(Handle)) { //Log.DebugFormat ("{0} Loading services on Contact.Initialize()", this.Name); LoadSupportedChannels(dictionary [Handle]); } } avatar = new Avatar(this); }