core: track active connection dependencies

Track a master active connection and emit wait/ready/fail when
it changes state.  This signal is intended for devices to
delay their activation until a master device is ready.
This commit is contained in:
Dan Williams
2012-02-26 17:38:41 -06:00
parent d08b33bb01
commit 0b8ff52fdd
4 changed files with 113 additions and 4 deletions

View File

@@ -34,6 +34,15 @@
#define NM_IS_ACT_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NM_TYPE_ACT_REQUEST))
#define NM_ACT_REQUEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_ACT_REQUEST, NMActRequestClass))
typedef enum {
NM_ACT_REQUEST_DEP_RESULT_UNKNOWN,
NM_ACT_REQUEST_DEP_RESULT_WAIT,
NM_ACT_REQUEST_DEP_RESULT_READY,
NM_ACT_REQUEST_DEP_RESULT_FAILED,
} NMActRequestDependencyResult;
#define NM_ACT_REQUEST_DEPENDENCY_RESULT "dependency-result"
typedef struct {
GObject parent;
} NMActRequest;
@@ -43,6 +52,8 @@ typedef struct {
/* Signals */
void (*properties_changed) (NMActRequest *req, GHashTable *properties);
void (*dependency_result) (NMActRequest *req, NMActRequestDependencyResult result);
} NMActRequestClass;
GType nm_act_request_get_type (void);
@@ -53,7 +64,7 @@ NMActRequest *nm_act_request_new (NMConnection *connection,
gulong user_uid,
gboolean assumed,
gpointer *device, /* An NMDevice */
NMActiveConnection *master);
NMActiveConnection *dependency);
NMConnection *nm_act_request_get_connection (NMActRequest *req);
@@ -71,6 +82,8 @@ GObject * nm_act_request_get_device (NMActRequest *req);
gboolean nm_act_request_get_assumed (NMActRequest *req);
NMActRequestDependencyResult nm_act_request_get_dependency_result (NMActRequest *req);
/* Secrets handling */
typedef void (*NMActRequestSecretsFunc) (NMActRequest *req,