/[rdesktop]/sourceforge.net/trunk/rdesktop/doc/seamlessrdp-channel.txt
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /sourceforge.net/trunk/rdesktop/doc/seamlessrdp-channel.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1199 - (show annotations)
Mon Mar 27 08:17:34 2006 UTC (18 years, 1 month ago) by astrand
File MIME type: text/plain
File size: 6251 byte(s)
Added SeamlessRDP support: Merged seamlessrdp-branch

1 TODO
2 ----
3
4 * Command for executing new programs.
5
6 * Commands for changing z order and focus.
7
8 * Command for transferring icon.
9
10 * Think about protocol version management
11
12 * Try to assure that messages aren't repeated or are sent for hidden windows.
13
14 Overview
15 ========
16
17 The protocol is a line based protocol following this simple syntax:
18
19 OPERATION,SERIAL[,ARG1[,ARG2,[...]]]
20
21 Each operation will have an increasing serial number. The initial value is
22 implementation defined.
23
24 The goal is to have a generic protocol that can be used for other display
25 systems (e.g. VNC) as well.
26
27 One line may not exceed 1024 bytes, including newline.
28
29 The protocol has no concept of hidden or unmapped windows. A window does not
30 exist unless it is visible. Note that a minimized window is an exception to
31 this rule.
32
33 The protocol has no way of indicating failure, meaning that all commands are
34 expected to succeed. If a command fails, the receiving end must send a
35 corresponding command back, indicating the actual state.
36
37 Data types
38 ==========
39 Window ID are written in hex, like 0x4321.
40
41 Window positions can be negative. This happens when a window is moved
42 outside the desktop.
43
44 All integers fit inside 32 bits.
45
46 Strings are sent in UTF-8 and do not contain any characters less than 0x20 or
47 the character , (comma).
48
49 Server to Client Operations
50 ===========================
51
52 CREATE
53 ------
54
55 Allocate structures for a new window.
56
57 Syntax:
58 CREATE,<SERIAL>,<ID>,<PARENT>,<FLAGS>
59
60 Indicates that a window has appeared on the server. If PARENT is non-zero then
61 the new window is a child of that window (it's transient for it). The special
62 value 0xFFFFFFFF for PARENT means that the window is a popup window without a
63 parent. It's commonly used for splash screens, tool tips and context menus.
64
65 Note that very little information is included in this message. Things like
66 title and state will come in subsequent messages. This message should only
67 be used to allocate data structures for the new window.
68
69 DESTROY
70 -------
71
72 Remove a window.
73
74 Syntax:
75 DESTROY,<SERIAL>,<ID>,<FLAGS>
76
77 Remove the window and deallocate all associated structures.
78
79 POSITION
80 --------
81
82 Move and/or resize a window.
83
84 Syntax:
85 POSITION,<SERIAL>,<ID>,<X>,<Y>,<WIDTH>,<HEIGHT>,<FLAGS>
86
87 If the window isn't visible yet (because a
88 STATE hasn't been set or because it's minimized), you must store the position
89 and size. A new POSITION is not guaranteed to be sent when the window changes
90 state.
91
92 TITLE
93 -----
94
95 Sets a window title.
96
97 Syntax:
98 TITLE,<SERIAL>,<ID>,<TITLE>,<FLAGS>
99
100 The text is guaranteed to be stripped of control characters (< 0x20).
101
102 Note that this has the same requirement as POSITION, that the title needs to
103 be stored for newly created windows until a STATE is sent. It is however not
104 guaranteed that a TITLE will be sent before the first STATE.
105
106
107 ZCHANGE
108 -------
109
110 The window moved in z order.
111
112 Syntax:
113 ZCHANGE,<SERIAL>,<ID>,<BEHIND>,<FLAGS>
114
115 The window with the id ID is behind the window with the id BEHIND. If
116 BEHIND is 0, then this window should be brought to the front.
117
118 STATE
119 -----
120
121 Changes the window's state and/or title.
122
123 Syntax:
124 STATE,<SERIAL>,<ID>,<STATE>,<FLAGS>
125
126 State can have one of three values:
127 0 : "Normal" window.
128 1 : Minimized.
129 2 : Maximized.
130
131 The initial STATE for a window will always be preceeded by one CREATE and one
132 POSITION. Optionally, a TITLE may also be sent before the first STATE.
133
134 DEBUG
135 -----
136
137 Debug output from the server component.
138
139 Syntax:
140 DEBUG,<SERIAL>,<STRING>
141
142 Used for debugging.
143
144 SYNCBEGIN
145 ---------
146
147 Indicates that a synchronisation has begun.
148
149 Syntax:
150 SYNCBEGIN,<SERIAL>,<FLAGS>
151
152 Sent when the server starts a synchronisation. The client should flush all
153 information at this point.
154
155 SYNCEND
156 -------
157
158 Indicates that a synchronisation is complete.
159
160 Syntac:
161 SYNCEND,<SERIAL>,<FLAGS>
162
163 Sent when the last message that is part of the synchronisation has been sent.
164 This may be followed by duplicate messages and/or messages referring invalid
165 windows that were queued up during the synchronisation.
166
167 HELLO
168 -----
169
170 Initial message sent by server.
171
172 Syntax:
173 HELLO,<SERIAL>,<FLAGS>
174
175 The server starts each connection by sending this message. Normally the client
176 will react by sending a SYNC back to the server.
177
178 Flags:
179 0x0001 : This is a reconnect to an existing session.
180 0x0002 : The desktop is currently hidden (see HIDE).
181
182 ACK
183 ---
184
185 Acknowledgement of a request to manipulate a window.
186
187 Syntax:
188 ACK,<SERIAL>,<ACKSERIAL>
189
190 Whenever one of the commands POSITION, ZCHANGE, STATE or FOCUS is executed on
191 the server, the server will send an ACK back to the client. The purpose of this
192 is to inform the client of when the operation was actually performed, allowing
193 high latencies in the channel.
194
195 HIDE
196 ----
197
198 The desktop has become hidden on the server.
199
200 Syntax:
201 HIDE,<SERIAL>,<FLAGS>
202
203 This message is sent when the desktop on the server is obscured by something
204 that cannot be tracked. The client should remove all windows and display the
205 entire desktop, allowing the user to handle whatever is blocking the view.
206
207 Note that updates to windows will still be sent as the windows still exist on
208 the server, they are merely not visible.
209
210 UNHIDE
211 ------
212
213 The desktop has been restored on the server.
214
215 Syntax:
216 UNHIDE,<SERIAL>,<FLAGS>
217
218 This message is sent some time after a HIDE, indicating that the windowed view
219 has been restored. If the client has dropped all information about windows then
220 it can send a SYNC to re-enumerate them.
221
222 Client to Server Operations
223 ===========================
224
225 SYNC
226 ----
227
228 Request a synchronisation of window information.
229
230 Syntax:
231 SYNC,<SERIAL>,<FLAGS>
232
233 For each window, the server will send CREATE, POSITION and STATE, in that
234 order, just as if the window was created. Note that a TITLE may also,
235 optionally, be sent before the STATE.
236
237 POSITION
238 --------
239
240 Identical to the command sent from server to client.
241
242 TITLE
243 -----
244
245 Identical to the command sent from server to client.
246
247 ZCHANGE
248 -------
249
250 Identical to the command sent from server to client.
251
252 STATE
253 -----
254
255 Identical to the command sent from server to client.
256
257 FOCUS
258 -----
259
260 Sets which window has input focus.
261
262 Syntax:
263 FOCUS,<SERIAL>,<ID>,<FLAGS>
264
265 Changes which window that will recieve the keyboard events. Note that this
266 might cause the window to change z order.

  ViewVC Help
Powered by ViewVC 1.1.26