| /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ |
| |
| #ifndef foologinduserhfoo |
| #define foologinduserhfoo |
| |
| /*** |
| This file is part of systemd. |
| |
| Copyright 2011 Lennart Poettering |
| |
| systemd is free software; you can redistribute it and/or modify it |
| under the terms of the GNU Lesser General Public License as published by |
| the Free Software Foundation; either version 2.1 of the License, or |
| (at your option) any later version. |
| |
| systemd 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 |
| Lesser General Public License for more details. |
| |
| You should have received a copy of the GNU Lesser General Public License |
| along with systemd; If not, see <http://www.gnu.org/licenses/>. |
| ***/ |
| |
| typedef struct User User; |
| |
| #include "list.h" |
| #include "util.h" |
| #include "logind.h" |
| #include "logind-session.h" |
| |
| typedef enum UserState { |
| USER_OFFLINE, |
| USER_LINGERING, |
| USER_ONLINE, |
| USER_ACTIVE, |
| _USER_STATE_MAX, |
| _USER_STATE_INVALID = -1 |
| } UserState; |
| |
| struct User { |
| Manager *manager; |
| |
| uid_t uid; |
| gid_t gid; |
| char *name; |
| |
| char *state_file; |
| char *runtime_path; |
| char *service; |
| char *cgroup_path; |
| |
| Session *display; |
| |
| dual_timestamp timestamp; |
| |
| bool in_gc_queue:1; |
| bool started:1; |
| |
| LIST_HEAD(Session, sessions); |
| LIST_FIELDS(User, gc_queue); |
| }; |
| |
| User* user_new(Manager *m, uid_t uid, gid_t gid, const char *name); |
| void user_free(User *u); |
| int user_check_gc(User *u, bool drop_not_started); |
| void user_add_to_gc_queue(User *u); |
| int user_start(User *u); |
| int user_stop(User *u); |
| UserState user_get_state(User *u); |
| int user_get_idle_hint(User *u, dual_timestamp *t); |
| int user_save(User *u); |
| int user_load(User *u); |
| int user_kill(User *u, int signo); |
| |
| char *user_bus_path(User *s); |
| |
| extern const DBusObjectPathVTable bus_user_vtable; |
| |
| int user_send_signal(User *u, bool new_user); |
| int user_send_changed(User *u, const char *properties); |
| |
| const char* user_state_to_string(UserState s); |
| UserState user_state_from_string(const char *s); |
| |
| #endif |