<
From version < 22.1 >
edited by Soeren Domroes
on 2019/05/16 10:52
To version < 20.1 >
edited by Soeren Domroes
on 2019/05/16 10:31
>
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -193,7 +193,6 @@
193 193  class KiCoolLanguageServerExtension implements ILanguageServerExtension, CommandExtension, ILanguageClientProvider {
194 194   // fancy extension stuff
195 195  
196 - var KeithLanguageClient client
197 197   // A language server extension must implement the initialize method,
198 198   // it is however only called if the extension is registered via a language.
199 199   // This should never be the case, so this is never called.
... ... @@ -200,16 +200,6 @@
200 200   override initialize(ILanguageServerAccess access) {
201 201   this.languageServerAccess = access
202 202   }
203 -
204 - // implement ILanguageClientProvider
205 - override setLanguageClient(LanguageClient client) {
206 - this.client = client as KeithLanguageClient
207 - }
208 -
209 - // implement ILanguageClientProvider
210 - override getLanguageClient() {
211 - return this.client
212 - }
213 213  
214 214  }
215 215  {{/code}}
... ... @@ -216,7 +216,7 @@
216 216  
217 217  The CommandExtension defines all commands (requests or notifications) that are send from client to server. An example how this looks like can be seen in the code snippet Example CommandExtension is an example how to [[define a server side extension interface.>>doc:||anchor="Registeranextension(onserverside)"]]
218 218  
219 -The ILanguageClientProvider should be implemented by an extension that plans to send [[messages from the server to the client>>doc:||anchor="ServerClientcommunicationinterface"]].
208 +\\
220 220  
221 221  This language server extension is provided by a corresponding contribution, which is later used to access it:
222 222  
... ... @@ -304,61 +304,6 @@
304 304  
305 305  This defines three json-rpc commands: "keith/kicool/compile", "keith/kicool/show", "keith/kicool/get-systems". These are implemented in KiCoolLanguageServerExtension.
306 306  
307 -\\
308 -
309 -== Server Client communication interface ==
310 -
311 -Not only messages from client to server but rather messages from server client might be needed.
312 -
313 -Messages that can be send from server to client are defined in the KeithLanguageClient:
314 -
315 -{{code title="Example KeithLanguageLCient"}}
316 -/**
317 - * LanguageClient that implements additional methods necessary for server client communication in KEITH.
318 - *
319 - * @author really fancy name
320 - *
321 - */
322 - @JsonSegment("keith")
323 -interface KeithLanguageClient extends LanguageClient {
324 -
325 - @JsonNotification("kicool/compile")
326 - def void compile(Object results, String uri, boolean finished);
327 -
328 - @JsonNotification("kicool/cancel-compilation")
329 - def void cancelCompilation(boolean success);
330 -
331 - // Not only notifications, but also server client requests should be possible, but currently there is no use case for that.
332 -}
333 -{{/code}}
334 -
335 -These messages can be caught on the client side by defining the message that is caught like this:
336 -
337 -{{code}}
338 -export const snapshotDescriptionMessageType = new NotificationType<CodeContainer, void>('keith/kicool/compile');
339 -{{/code}}
340 -
341 -This message type is bound to a method that should be called whenever the client receives such a message.
342 -
343 -{{code}}
344 -const lClient: ILanguageClient = await this.client.languageClient
345 -lClient.onNotification(snapshotDescriptionMessageType, this.handleNewSnapshotDescriptions.bind(this))
346 -{{/code}}
347 -
348 -The method should receive all parameters specific in the KeithLanguageClient interface on the serevr side.
349 -
350 -Such a notification from server to client is send like this:
351 -
352 -{{code}}
353 -future.thenAccept([
354 - // client is the KeithLanguageClient registered in a LanguageServerExtension that implements a ILanguageClientProvider
355 - // compile is the command defined in the KeithLanguageClientInterface
356 - client.compile(new CompilationResults(this.snapshotMap.get(uri)), uri, finished)
357 -])
358 -{{/code}}
359 -
360 -\\
361 -
362 362  == Register and calling an extension (on client side) ==
363 363  
364 364  Language server extension do not have to be registered on the client side. It is just called.
Confluence.Code.ConfluencePageClass[0]
Id
... ... @@ -1,1 +1,1 @@
1 -57802997
1 +57802994
URL
... ... @@ -1,1 +1,1 @@
1 -https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/KIELER/pages/57802997/Running KEITH
1 +https://rtsys.informatik.uni-kiel.de/confluence//wiki/spaces/KIELER/pages/57802994/Running KEITH