Home | History | Annotate | Download | only in bus

Lines Matching refs:service

2 /* services.c  Service management
53 BusService *service;
145 BusService *service;
147 service = _dbus_hash_table_lookup_string (registry->service_hash,
150 return service;
154 _bus_service_find_owner_link (BusService *service,
159 link = _dbus_list_get_first_link (&service->owners);
169 link = _dbus_list_get_next_link (&service->owners, link);
187 bus_owner_new (BusService *service,
193 result = _dbus_mem_pool_alloc (service->registry->owner_pool);
205 result->service = service;
207 if (!bus_connection_add_owned_service (conn, service))
209 _dbus_mem_pool_dealloc (service->registry->owner_pool, result);
235 bus_connection_remove_owned_service (owner->conn, owner->service);
236 _dbus_mem_pool_dealloc (owner->service->registry->owner_pool, owner);
248 BusService *service;
255 service = _dbus_hash_table_lookup_string (registry->service_hash,
257 if (service != NULL)
258 return service;
260 service = _dbus_mem_pool_alloc (registry->service_pool);
261 if (service == NULL)
267 service->registry = registry;
268 service->refcount = 1;
270 _dbus_verbose ("copying string %p '%s' to service->name\n",
272 if (!_dbus_string_copy_data (service_name, &service->name))
274 _dbus_mem_pool_dealloc (registry->service_pool, service);
280 service->name);
282 if (!bus_driver_send_service_owner_changed (service->name,
287 bus_service_unref (service);
292 service->name, transaction, error))
294 bus_service_unref (service);
298 if (!bus_service_add_owner (service, owner_connection_if_created, flags,
301 bus_service_unref (service);
306 service->name,
307 service))
314 return service;
327 BusService *service = _dbus_hash_iter_get_value (&iter);
329 (* function) (service, data);
352 BusService *service = _dbus_hash_iter_get_value (&iter);
354 retval[i] = _dbus_strdup (service->name);
390 BusService *service;
404 _dbus_verbose ("Attempt to acquire invalid service name\n");
413 "Cannot acquire a service starting with ':' such as \"%s\"",
416 _dbus_verbose ("Attempt to acquire invalid base service name \"%s\"",
425 "Connection \"%s\" is not allowed to own the service \"%s\"because "
454 "Connection \"%s\" is not allowed to own the service \"%s\" due "
467 "Connection \"%s\" is not allowed to own the service \"%s\" due "
488 service = bus_registry_lookup (registry, service_name);
490 if (service != NULL)
492 primary_owner = bus_service_get_primary_owner (service);
501 if (service == NULL)
503 service = bus_registry_ensure (registry,
506 if (service == NULL)
510 primary_owner = bus_service_get_primary_owner (service);
528 !(bus_service_get_allow_replacement (service))) ||
537 link = _bus_service_find_owner_link (service, connection);
540 _dbus_list_unlink (&service->owners, link);
550 !(bus_service_get_allow_replacement (service))))
553 if (!bus_service_add_owner (service, connection,
569 if (!bus_service_add_owner (service, connection,
576 if (!bus_service_remove_owner (service, old_owner_conn,
582 if (!bus_service_swap_owner (service, old_owner_conn,
588 _dbus_assert (connection == bus_service_get_primary_owner (service)->conn);
594 service,
611 BusService *service;
622 _dbus_verbose ("Attempt to release invalid service name\n");
629 /* Not allowed; the base service name cannot be created or released */
631 "Cannot release a service starting with ':' such as \"%s\"",
634 _dbus_verbose ("Attempt to release invalid base service name \"%s\"",
642 /* Not allowed; the base service name cannot be created or released */
644 "Cannot release the %s service because it is owned by the bus",
647 _dbus_verbose ("Attempt to release service name \"%s\"",
653 service = bus_registry_lookup (registry, service_name);
655 if (service == NULL)
659 else if (!bus_service_has_owner (service, connection))
665 if (!bus_service_remove_owner (service, connection,
669 _dbus_assert (!bus_service_has_owner (service, connection));
693 const char *service = _dbus_hash_iter_get_string_key (&iter);
697 service,
709 bus_service_unlink_owner (BusService *service,
712 _dbus_list_remove_last (&service->owners, owner);
717 bus_service_unlink (BusService *service)
719 _dbus_assert (service->owners == NULL);
721 /* the service may not be in the hash, if
725 _dbus_hash_table_remove_string (service->registry->service_hash,
726 service->name);
728 bus_service_unref (service);
732 bus_service_relink (BusService *service,
735 _dbus_assert (service->owners == NULL);
738 _dbus_hash_table_insert_string_preallocated (service->registry->service_hash,
740 service->name,
741 service);
743 bus_service_ref (service);
753 BusService *service; /**< service to cancel ownership of */
765 bus_service_unlink_owner (d->service, d->owner);
767 if (d->service->owners == NULL)
768 bus_service_unlink (d->service);
778 bus_service_unref (d->service);
785 BusService *service,
794 d->service = service;
804 bus_service_ref (d->service);
813 bus_service_add_owner (BusService *service,
824 /* Send service acquired message first, OOM will result
827 if (service->owners == NULL)
829 if (!bus_driver_send_service_acquired (connection, service->name, transaction, error))
833 bus_owner_link = _bus_service_find_owner_link (service, connection);
837 bus_owner = bus_owner_new (service, connection, flags);
845 if (!(flags & DBUS_NAME_FLAG_REPLACE_EXISTING) || service->owners == NULL)
847 if (!_dbus_list_append (&service->owners,
857 if (!_dbus_list_insert_after (&service->owners,
858 _dbus_list_get_first_link (&service->owners),
877 _dbus_list_unlink (&service->owners, bus_owner_link);
878 link = _dbus_list_get_first_link (&service->owners);
881 _dbus_list_insert_after_link (&service->owners, link, bus_owner_link);
889 service,
892 bus_service_unlink_owner (service, bus_owner);
903 BusService *service;
919 if (d->service->owners == NULL)
922 bus_service_relink (d->service, d->hash_entry);
933 link = _dbus_list_get_first_link (&d->service->owners);
939 link = _dbus_list_get_next_link (&d->service->owners, link);
942 _dbus_list_insert_before_link (&d->service->owners, link, d->owner_link);
947 * that the base service is destroyed last, and we never even
948 * tentatively remove the base service.
967 _dbus_hash_table_free_preallocated_entry (d->service->registry->service_hash,
972 bus_service_unref (d->service);
979 BusService *service,
989 d->service = service;
991 d->service_link = _dbus_list_alloc_link (service);
993 d->hash_entry = _dbus_hash_table_preallocate_entry (service->registry->service_hash);
995 bus_service_ref (d->service);
1000 link = _dbus_list_get_first_link (&service->owners);
1005 link = _dbus_list_get_next_link (&service->owners, link);
1013 link = _dbus_list_get_next_link (&service->owners, link);
1030 bus_service_swap_owner (BusService *service,
1044 /* Send service lost message */
1045 primary_owner = bus_service_get_primary_owner (service);
1050 if (!bus_driver_send_service_lost (connection, service->name,
1054 if (service->owners == NULL)
1056 _dbus_assert_not_reached ("Tried to swap owner of a service that has no owners");
1058 else if (_dbus_list_length_is_one (&service->owners))
1060 _dbus_assert_not_reached ("Tried to swap owner of a service that has no other owners in the queue");
1067 link = _dbus_list_get_first_link (&service->owners);
1069 link = _dbus_list_get_next_link (&service->owners, link);
1075 if (!bus_driver_send_service_owner_changed (service->name,
1083 service->name,
1089 if (!add_restore_ownership_to_transaction (transaction, service, primary_owner))
1096 swap_link = _dbus_list_get_first_link (&service->owners);
1097 _dbus_list_unlink (&service->owners, swap_link);
1099 _dbus_list_insert_after_link (&service->owners,
1100 _dbus_list_get_first_link (&service->owners),
1108 bus_service_remove_owner (BusService *service,
1121 /* Send service lost message */
1122 primary_owner = bus_service_get_primary_owner (service);
1125 if (!bus_driver_send_service_lost (connection, service->name,
1135 link = _bus_service_find_owner_link (service, connection);
1136 _dbus_list_unlink (&service->owners, link);
1144 if (service->owners == NULL)
1146 _dbus_assert_not_reached ("Tried to remove owner of a service that has no owners");
1148 else if (_dbus_list_length_is_one (&service->owners))
1150 if (!bus_driver_send_service_owner_changed (service->name,
1161 link = _dbus_list_get_first_link (&service->owners);
1163 link = _dbus_list_get_next_link (&service->owners, link);
1169 if (!bus_driver_send_service_owner_changed (service->name,
1177 service->name,
1183 if (!add_restore_ownership_to_transaction (transaction, service, primary_owner))
1189 bus_service_unlink_owner (service, primary_owner);
1191 if (service->owners == NULL)
1192 bus_service_unlink (service);
1198 bus_service_ref (BusService *service)
1200 _dbus_assert (service->refcount > 0);
1202 service->refcount += 1;
1204 return service;
1208 bus_service_unref (BusService *service)
1210 _dbus_assert (service->refcount > 0);
1212 service->refcount -= 1;
1214 if (service->refcount == 0)
1216 _dbus_assert (service->owners == NULL);
1218 dbus_free (service->name);
1219 _dbus_mem_pool_dealloc (service->registry->service_pool, service);
1224 bus_service_get_primary_owners_connection (BusService *service)
1228 owner = bus_service_get_primary_owner (service);
1237 bus_service_get_primary_owner (BusService *service)
1239 return _dbus_list_get_first (&service->owners);
1243 bus_service_get_name (BusService *service)
1245 return service->name;
1249 bus_service_get_allow_replacement (BusService *service)
1254 _dbus_assert (service->owners != NULL);
1256 link = _dbus_list_get_first_link (&service->owners);
1263 bus_service_has_owner (BusService *service,
1268 link = _bus_service_find_owner_link (service, connection);
1277 bus_service_list_queued_owners (BusService *service,
1285 link = _dbus_list_get_first_link (&service->owners);
1299 link = _dbus_list_get_next_link (&service->owners, link);