summaryrefslogtreecommitdiff
path: root/daemon/INTERNALS
blob: f7f5e1003cb738edbcd13caee821992a0e091cf2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
* GDM Internals

This document attempts to describe the internal design of GDM.

** GdmManager

The GdmManager is the top-level singleton object.  It contains a
GdmDisplayStore object and a number of GdmDisplayFactory objects.

** GdmDisplayStore

This is a container for storing GdmDisplay objects.

** GdmDisplayFactory

A GdmDisplayFactory is an abstract class of object that is capable of
creating GdmDisplay objects.

*** GdmLocalDisplayFactory

A subclass of GdmDisplayFactory that uses HAL and ConsoleKit to identify
local hardware on which to start a GdmDisplay.

*** GdmXdmcpDisplayFactory

A subclass of GdmDisplayFactory that listens for requests for XDMCP
logins and creates a GdmDisplay for them.

** GdmDisplay

A GdmDisplay is an abstract class of object that represents a single X
Server diplay.

*** GdmStaticDisplay

A subclass of GdmDisplay that represents a local display.

*** GdmStaticFactoryDisplay

A subclass of GdmDisplay that represents a local display that only
runs a login greeter interface.  A GdmProductDisplay is created to
manage each new user session.

*** GdmProductDisplay

A subclass of GdmDisplay that only runs a user session.  It does not
run a login greeter interface.  It will also be destroyed when
the user session ends.

*** GdmXdmcpDisplay

A subclass of GdmDisplay that represents a remote XDMCP display.


** GdmSlave

A GdmSlave is an abstract class of object that performs work for a
GdmDisplay.  A Slave is run in a sub-process spawned by each GdmDisplay.  The
slave communicates with the parent display using the D-Bus protocol.

*** GdmSimpleSlave

A subclass of GdmSlave that runs both a login greeter and a user
session.

*** GdmFactorySlave

A subclass of GdmSlave that only runs a login greeter.

*** GdmProductSlave

A subclass of GdmSlave that only runs a user session.


** GdmServer

A class that manages running a local X Server.

** GdmGreeterServer

A class that creates a D-Bus server on a private connection that is
used to command the greeter subprocess.

** GdmGreeterSession

A class that manages running an external greeter session.  This will
provide the GdmGreeterServer D-Bus address to the subprocesses.

** GdmSession

An interface used to control the authentication process and the user
session itself.  Once the authentication process is started an object
that implements this interface will emit signals to request any
required information.

*** GdmSessionDirect

A class of object that implements the GdmSession interface.  It is
used to start and directly control a GdmSessionWorker subprocess by
creating a D-Bus server on a private connection.

*** GdmSessionRelay

A class of object that implements the GdmSession interface.  It is
used to relay session controls to a remote listener.  In particular,
it is used to relay messages between the GreeterServer in a
GdmFactorySlave and the GdmSessionDirect in a GdmProductSlave.

** GdmSessionWorkerJob

A class that manages running a GdmSessionWorker subprocess.  This will
also provide the GdmSession D-Bus address to the subprocess.

** GdmSessionWorker

This class handles the PAM conversation and relays the questions and
messages to the GdmSession through the private D-Bus connection.  When
the user is authenticated this subprocess "exec"s the user session.


Local Variables:
mode: outline
End: