Compare commits

...

12 Commits

Author SHA1 Message Date
Tristan B. Velloza Kildaire 88b36b5e1e Client
- Fixed typo
2023-10-02 22:27:54 +02:00
Tristan B. Velloza Kildaire 7b10478a36 Client
- `makeRequest(BaseMessage request, Queue responseQueue, bool releaseAfterUse = false)` now will only deregister the queue if requested
- `makeRequest(BaseMessage request)` now requests queuew deregistration
2023-10-02 22:22:50 +02:00
Tristan B. Velloza Kildaire d6d9b40d41 Client
- We nwo release the queue passed to `makeRequest(BaseMessage request, Queue responseQueue)`
2023-10-02 22:20:23 +02:00
Tristan B. Velloza Kildaire d0c0c4a7ed Client
- Use the queue-registration-less `makeRequest(BaseMessage)` in `nopRequest()`
2023-10-02 22:04:42 +02:00
Tristan B. Velloza Kildaire 9406422a92 Client
- Added a note about resource-leak easily fixable
2023-10-02 22:04:04 +02:00
Tristan B. Velloza Kildaire 3c0d82fd85 Client
- Compilation error fix
2023-10-02 22:03:05 +02:00
Tristan B. Velloza Kildaire c3b90192e6 Client
- Added `makeRequest(BaseMessage request)`
2023-10-02 22:02:44 +02:00
Tristan B. Velloza Kildaire 5704397b74 Client
- Removed duplicate semicolons
2023-10-02 22:00:18 +02:00
Tristan B. Velloza Kildaire dd12a719d5 Client
- Removed now-completed TODOs
2023-10-02 21:59:50 +02:00
Tristan B. Velloza Kildaire 113e793111 Client
- Added `makeRequest(BaseMessage request, Queue responseQueue)`
2023-10-02 21:59:12 +02:00
Tristan B. Velloza Kildaire 8bdaec9ded Dub
- Actually, updated `davinci`
2023-10-02 21:47:12 +02:00
Tristan B. Velloza Kildaire aa2a0e3107 Client
- Testing out setting of fields with `nopRequest()`

Dub

- Update `davinci`
2023-10-02 21:47:03 +02:00
2 changed files with 50 additions and 8 deletions

View File

@ -4,7 +4,7 @@
],
"copyright": "Tristan B. Kildaire",
"dependencies": {
"davinci": ">=0.1.3",
"davinci": ">=0.1.7",
"gogga": ">=2.1.18",
"guillotine": ">=0.2.1-alpha",
"river": ">=0.3.7",

View File

@ -81,7 +81,7 @@ public class DanteClient
{
/* Start the tristanable manager */
manager.start();
version(dbg) { writeln("Dante staretd tristanable manager..."); }
version(dbg) { writeln("Dante started tristanable manager..."); }
}
public void stop()
@ -98,21 +98,64 @@ public class DanteClient
import davinci.c2s.test;
import davinci;
NopMessage testMessage = new NopMessage();
testMessage.setTestField("Lekker Boetie");
BaseMessage msg = new BaseMessage(MessageType.CLIENT_TO_SERVER, CommandType.NOP_COMMAND, testMessage);
// TODO: Encode message
// TODO: Send with tristanable
// TODO: Wrap a tristanable `dequeue()` in a FutureTask via guillotine and return that
return makeRequest(msg);
}
/**
* Makes a request and returns a future which
* can be awaited on for when the request
* is fulfilled server-side.
*
* This method automatically manages
* the queueing for you.
*
* Params:
* request = the request message
* Returns: a `Future`
*/
private Future makeRequest(BaseMessage request)
{
// Obtain a unique queue for this request
Queue uniqueQueue = this.manager.getUniqueQueue();
return makeRequest(request, uniqueQueue, true);
}
/**
* Makes a request described by the provided message
* which, we will then return a future which will
* wait for a reply on the queue provided.
*
* Params:
* request = the request message
* responseQueue = the queue which the future
* should await a reply from on
* releaseAfterUse = whether or not to automatically
* deregister the provided queue after completion. Default
* is `false`.
*
* Returns: a `Future`
*/
private Future makeRequest(BaseMessage request, Queue responseQueue, bool releaseAfterUse = false)
{
BaseMessage doRequest()
{
TaggedMessage message = new TaggedMessage(uniqueQueue.getID(), msg.encode());
TaggedMessage message = new TaggedMessage(responseQueue.getID(), request.encode());
this.manager.sendMessage(message);
TaggedMessage response = uniqueQueue.dequeue();
TaggedMessage response = responseQueue.dequeue();
if(releaseAfterUse)
{
// De-register queue here to prevent resource leak
// ... and allow queue id recycling
this.manager.releaseQueue(responseQueue);
}
return BaseMessage.decode(response.getPayload());
}
@ -120,7 +163,6 @@ public class DanteClient
return future;
}
}