prot-A.slightly-obsolete 4.59 KB
Newer Older
Per Cederqvist's avatar
.    
Per Cederqvist committed
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230


			   LysKOM-Projektet
		   --------------------------------
	      Beskrivning av server-klient-protokollet,
			 version A, i LysKOM
		   --------------------------------
			   av Lars Aronsson
		      <aronsson@lysator.liu.se>
			     datum ok{nt



Kommunikationen till servern sker i klartext. P} s} vis {r det m|jligt
att provk|ra utan att ha en klient ig}ng. Avlusningen blev ocks}
enklare.


UPPKOPPLING

Vid uppkoppling s{nder klienten ett 'A' f|ljt av login-identiteten f|r
anv{ndaren (en str{ng, se nedan). Servern svarar med att skicka
"LysKOM\n". Sedan {r uppkopplingen gjord.

FUNKTIONSANROP

Vid ett funktionsanrop skickas f|ljande data fr}n klienten till
servern:

	ref-nr  funktions-nr parametrar

ref-nr {r ett heltal (unsigned, max 32 bitar) som klienten kan v{lja
fritt, t ex som ett l|pnummer.

funktions-nr {r ett heltal som anger vilken funktion man vill anropa.
De definieras i isc/com.h.

Om anropet lyckades ser svaret ut s} h{r:

	=ref-nr  svar

Om det misslyckas:

	%ref-nr  kom_errno err_stat



DATAFORMAT

Allt som skickas (utom m|jligtvis innuti str{ngar) {r ASCII. Bortsett
fr}n innuti str{ngar skickas inga kontrolltecken. Whitespace anv{nds
f|r att skilja olika f{lt }t. Som whitespace r{knas ' ', \r, \n, \t
och \000. (Ett funktionsanrop beh|ver inte avslutas med \n, det g}r
lika bra med vilken whitespace som helst, men det m}ste finnas en
whitespace - det r{cker inte med att paketet tar slut).

Alla tal, (t ex int, Pers_no, Conf_no) skickas i decimal form.

Enumar skickas i decimal form.

Str{ngar skickas som Hollerith-str{ngar, dvs f|rst ett heltal som
anger l{ngden, sen ett H, sen str{ngen. Innuti en str{ng kan vilka
tecken som helst komma. (0-255).

Arrayer skickas inom m}svingar. T ex kan en Text_list som ser ut s}
h{r:
typedef  struct {
	Local_text_no	  first_local_no,
    			  no_of_texts;
	Text_no		* texts;
}  Text_list;

skickas s} h{r:
	5 3 { 8 9 11 }

eller, om texts==NULL:
	5 3 *

Asterisk anv{nds allts} f|r att markera en tom array. (Till exempel om
man inte fr}gar efter Membership). Asterisk-notationen kan bara
anv{ndas i rikting fr}n servern till klienten. 


EXEMPEL

S} h{r kan en k|rning se ut.

Klienten skickar	Servern svarar		F|rklaring
================	==============		==========

A5Hceder		LysKOM\n		Uppkoppling.
1 37			=1 100 1 2 3 4 5712	Get_info
69 27 5712		=69 {textstat}		Get_text_stat
18 26 5712		=18 {textmassa}		Get_text
2 1 334 5HaBcdE		%2 3 0 0 0		Login, misslyckas. (KOM_PWD)
3 1 334 5HaBcDe		=3			Login, lyckas.
...
9 2			=9			Logout (beh|vs eg. ej)


FELHANTERING

Om servern tar emot text som inte st{mmer med det protokoll som f|r
tillf{llet {r implementerat (f|rhoppningsvis, men ej n|dv{ndigtvis,
det som {r beskrivet h{r) skriver den ut "%% LysKOM protocol error.\n"

ASYNKRONA MEDDELANDEN

Servern skickar ibland ut meddelanden som clienterna kanske tycker {r
intressanta. Formatet f|r dessa {r:

	:no_of_tokens function < tokens >

De b|rjar allts} med ":" i st{llet f|r "=" eller "%". Genom att
antalet token alltid s{nds s} kan {ven gamla klienter "|verleva" en ny
klient med nya asynkrona meddelanden. Det {r bara att hoppa |ver r{tt
antal token.

Termen "asynkrona meddelanden" {r lite oegentlig. Meddelanden {r
synkroniserade med allt annat som skickas ut fr}n servern. Ett
meddelanden kommer bara n{r ett svar skulle ha kommit.

DATAFORMAT F\R SAMMANSATTA TYPER

Person
	username	str{ng
	privileges	bitstr{ng
	personal_flags	bitstr{ng
	created_texts:
	    first_local_no
	    no_of_texts
	    texts	array
	marks:
	    no_of_marks
	    marks	array
	conferences:
	    no_of_confs
	    confs:	array
		conf_no
		priority
		last_time_read
		last_text_read
		no_of_read
		read_texts	array
	user_area
	last_login
	total_time_present
	sessions
	created_lines
	created_bytes
	read_texts
	no_of_text_fetches
	created_persons
	created_confs



Conference

	name	str{ng
	members:
	    no_of_members
	    members:	array
		member	(Pers_no)
	texts:
	    first_local_no
	    no_of_texts
	    texts	array (Text_no)
	conf_type	bitstr{ng
	creator
	creation_time
	presentation
	supervisor
	permitted_submitters
	super_conf
	last_written
	msg_of_day
	nice


Text_stat

	author
	creation_time
	no_of_lines
	no_of_marks
	no_of_misc
	misc_info:	array
	    type	0 recpt
			1 cc_recpt
			2 comm_to
			3 comm_in
			4 footn_to
			5 footn_in
			6 loc_no
			7 rec_time
			8 sent_by	
			9 sent_at
	    datum



Info
	version
	conf_pres_conf
	pers_pres_conf
	motd_conf
	kom_news_conf
	motd_of_lyskom

Membership

	no_of_confs
	confs:	array
	    conf_no
	    priority
	    last_time_read
	    last_text_read
	    no_of_read
	    read_texts	array


Text_list
	first_local_no
	no_of_texts
	    texts	array

str{ng
	12HTolv tecken.