From becfcf5d1e774031b2091c100d3a5f508360789f Mon Sep 17 00:00:00 2001 From: William Jon McCann Date: Tue, 30 Oct 2007 03:52:16 +0000 Subject: Make SessionRelay and SessionDirect (was Session) implement a common 2007-10-29 William Jon McCann * daemon/Makefile.am: * daemon/gdm-factory-slave.c: (on_session_info), (on_session_problem), (on_session_info_query), (on_session_secret_info_query), (on_session_opened), (on_session_user_verified), (on_session_user_verification_error), (on_session_session_started), (create_product_display), (on_session_relay_disconnected), (on_session_relay_connected), (on_greeter_begin_verification), (on_greeter_begin_verification_for_user), (on_greeter_answer), (on_greeter_session_selected), (on_greeter_language_selected), (on_greeter_user_selected), (on_greeter_cancel), (gdm_factory_slave_start), (gdm_factory_slave_stop): * daemon/gdm-product-slave.c: (setup_server), (add_user_authorization), (setup_session), (on_session_user_verified), (on_relay_start_session), (on_relay_begin_verification), (on_relay_begin_verification_for_user), (on_relay_answer), (reset_session), (on_relay_open), (create_new_session), (on_relay_cancelled), (connect_to_session_relay), (gdm_product_slave_stop): * daemon/gdm-session-direct.c: (on_user_verification_error), (on_session_started), (on_session_startup_error), (on_session_exited), (gdm_session_direct_handle_verified), (gdm_session_direct_handle_verification_failed), (gdm_session_direct_handle_username_changed), (gdm_session_direct_handle_info_query), (gdm_session_direct_handle_secret_info_query), (gdm_session_direct_handle_info), (gdm_session_direct_handle_problem), (gdm_session_direct_handle_session_started), (gdm_session_direct_handle_startup_failed), (gdm_session_direct_handle_session_exited), (gdm_session_direct_handle_session_died), (handle_connection), (gdm_session_direct_init), (worker_exited), (worker_died), (gdm_session_direct_open), (send_begin_verification), (send_begin_verification_for_user), (gdm_session_direct_begin_verification), (gdm_session_direct_begin_verification_for_user), (is_prog_in_path), (get_session_command_for_file), (get_session_command), (open_ck_session), (setup_session_environment), (gdm_session_direct_start_session), (gdm_session_direct_close), (gdm_session_direct_answer_query), (gdm_session_direct_cancel), (gdm_session_direct_get_username), (gdm_session_direct_select_session), (gdm_session_direct_select_language), (gdm_session_direct_select_user), (_gdm_session_direct_set_display_name), (_gdm_session_direct_set_display_hostname), (_gdm_session_direct_set_display_device), (_gdm_session_direct_set_user_x11_authority_file), (_gdm_session_direct_set_display_is_local), (gdm_session_direct_set_property), (gdm_session_direct_get_property), (gdm_session_direct_dispose), (gdm_session_direct_finalize), (gdm_session_iface_init), (gdm_session_direct_class_init), (gdm_session_direct_new): * daemon/gdm-session-direct.h: * daemon/gdm-session-private.h: * daemon/gdm-session-relay.c: (gdm_session_relay_open), (gdm_session_relay_close), (gdm_session_relay_begin_verification), (gdm_session_relay_begin_verification_for_user), (gdm_session_relay_answer_query), (gdm_session_relay_select_session), (gdm_session_relay_select_language), (gdm_session_relay_select_user), (gdm_session_relay_cancel), (gdm_session_relay_start_session), (handle_info_query), (handle_secret_info_query), (handle_info), (handle_problem), (handle_user_verified), (handle_user_verification_error), (handle_session_started), (handle_session_stopped), (handle_opened), (handle_reset), (do_introspect), (handle_connection), (gdm_session_iface_init), (gdm_session_relay_class_init): * daemon/gdm-session-relay.h: * daemon/gdm-session.c: (gdm_session_get_type), (gdm_session_open), (gdm_session_close), (gdm_session_begin_verification), (gdm_session_begin_verification_for_user), (gdm_session_answer_query), (gdm_session_select_session), (gdm_session_select_language), (gdm_session_select_user), (gdm_session_cancel), (gdm_session_start_session), (gdm_session_class_init), (_gdm_session_user_verified), (_gdm_session_user_verification_error), (_gdm_session_info_query), (_gdm_session_secret_info_query), (_gdm_session_info), (_gdm_session_problem), (_gdm_session_session_started), (_gdm_session_session_startup_error), (_gdm_session_session_exited), (_gdm_session_session_died), (_gdm_session_opened), (_gdm_session_closed), (_gdm_session_selected_user_changed): * daemon/gdm-session.h: * daemon/gdm-simple-slave.c: (on_session_started), (on_session_exited), (on_session_died), (on_session_user_verified), (on_session_user_verification_error), (on_session_info), (on_session_problem), (on_session_info_query), (on_session_secret_info_query), (on_session_opened), (on_session_selected_user_changed), (create_new_session), (on_greeter_begin_verification), (on_greeter_begin_verification_for_user), (on_greeter_answer), (on_greeter_session_selected), (on_greeter_language_selected), (on_greeter_cancel), (on_greeter_connected), (gdm_simple_slave_stop), (gdm_simple_slave_init): * daemon/test-session.c: (on_open), (on_session_started), (on_session_exited), (on_session_died), (on_user_verified), (on_user_verification_error), (on_info_query), (on_info), (on_problem), (on_secret_info_query), (import_environment), (main): Make SessionRelay and SessionDirect (was Session) implement a common interface GdmSession. Push some code that lived in the simple and product slaves into the SessionDirect class. Using an interface has a few advantages besides ensuring consistency: makes it easier to do some abstraction in the slave classes, makes it possible to more easily implement other non-pam backends. Add a stub for a selected-user-changed signal from the session interface. This will be used to update the user selection in the greeter when the user is set from the backend. svn path=/trunk/; revision=5452 --- daemon/gdm-session.h | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 daemon/gdm-session.h (limited to 'daemon/gdm-session.h') diff --git a/daemon/gdm-session.h b/daemon/gdm-session.h new file mode 100644 index 00000000..5a14f54b --- /dev/null +++ b/daemon/gdm-session.h @@ -0,0 +1,105 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2007 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + + +#ifndef __GDM_SESSION_H +#define __GDM_SESSION_H + +#include + +G_BEGIN_DECLS + +#define GDM_TYPE_SESSION (gdm_session_get_type ()) +#define GDM_SESSION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDM_TYPE_SESSION, GdmSession)) +#define GDM_SESSION_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GDM_TYPE_SESSION, GdmSessionClass)) +#define GDM_IS_SESSION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDM_TYPE_SESSION)) +#define GDM_SESSION_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GDM_TYPE_SESSION, GdmSessionIface)) + +typedef struct _GdmSession GdmSession; /* Dummy typedef */ +typedef struct _GdmSessionIface GdmSessionIface; + +struct _GdmSessionIface +{ + GTypeInterface base_iface; + + /* Methods */ + void (* begin_verification) (GdmSession *session); + void (* begin_verification_for_user) (GdmSession *session, + const char *username); + void (* answer_query) (GdmSession *session, + const char *text); + void (* select_language) (GdmSession *session, + const char *text); + void (* select_session) (GdmSession *session, + const char *text); + void (* select_user) (GdmSession *session, + const char *text); + void (* open) (GdmSession *session); + void (* close) (GdmSession *session); + void (* cancel) (GdmSession *session); + void (* start_session) (GdmSession *session); + + /* Signals */ + void (* user_verified) (GdmSession *session); + void (* user_verification_error) (GdmSession *session, + const char *message); + void (* info_query) (GdmSession *session, + const char *query_text); + void (* secret_info_query) (GdmSession *session, + const char *query_text); + void (* info) (GdmSession *session, + const char *info); + void (* problem) (GdmSession *session, + const char *problem); + void (* session_started) (GdmSession *session); + void (* session_startup_error) (GdmSession *session, + const char *message); + void (* session_exited) (GdmSession *session, + int exit_code); + void (* session_died) (GdmSession *session, + int signal_number); + void (* opened) (GdmSession *session); + void (* closed) (GdmSession *session); + void (* selected_user_changed) (GdmSession *session, + const char *text); + +}; + +GType gdm_session_get_type (void) G_GNUC_CONST; + +void gdm_session_begin_verification (GdmSession *session); +void gdm_session_begin_verification_for_user (GdmSession *session, + const char *username); +void gdm_session_answer_query (GdmSession *session, + const char *text); +void gdm_session_select_session (GdmSession *session, + const char *session_name); +void gdm_session_select_language (GdmSession *session, + const char *language); +void gdm_session_select_user (GdmSession *session, + const char *username); +void gdm_session_open (GdmSession *session); +void gdm_session_close (GdmSession *session); +void gdm_session_cancel (GdmSession *session); +void gdm_session_start_session (GdmSession *session); + +G_END_DECLS + +#endif /* __GDM_SESSION_H */ -- cgit v1.2.1