boost :: asio und Active Object

Ich habe ein modulbasiertes Active Object-Entwurfsmuster implementiert. Die Implementierung ist sehr einfach. Ich habe Scheduler, ActivationList, Requests und Futures, um eine Antwort zu erhalten. Meine Anforderungen waren wie folgt:

Der Zugriff auf ein aktives Objekt wird serialisiert, indem seine Methoden innerhalb seines eigenen Threads ausgeführt werden (Hauptanforderung und Annahme des Entwurfsmusters für ein aktives Objekt).Der Anrufer muss in der Lage sein, die Priorität der Ausführung von Anforderungen festzulegen. Das heißt, wenn mehr als null Anforderungen auf Ausführung warten, werden sie nach der Priorität geordnet, die jeder Anforderung zugewiesen ist. Anforderungen mit höherer Priorität werden zuerst ausgeführt. Wenn also immer einige Anforderungen in der Aktivierungsliste anstehen und sie eine höhere Priorität als bestimmte Anforderungen haben, wird diese Anforderung niemals ausgeführt. Für mich ist dies in OrdnungEs muss möglich sein, die maximale Anzahl von Anforderungen anzugeben, die auf der Liste ausstehen (beschränken Sie die Speichernutzung).Alle anstehenden Anfragen können ungültig gemacht werdenAnfragen müssen in der Lage sein, Werte zurückzugeben (Blockierung des Anrufers) ODER sie müssen nur ohne Rückgabe von Werten ausgeführt werden, der Anrufer muss jedoch blockiert werden, bis die Anfrage bearbeitet wird ODER der Anrufer darf nicht blockiert werden und es ist nicht wichtig, ob die angegebene Anfrage bearbeitet wurde oder nicht GUnmittelbar vor der Ausführung der Anforderung muss eine Schutzmethode ausgeführt werden, um zu überprüfen, ob eine bestimmte Anforderung ausgeführt werden soll oder nicht. Wenn nicht, wird ein undefinierter Wert an den Aufrufer zurückgegeben (in meiner aktuellen Implementierung ist dies boost :: none, da jeder Anforderungsrückgabetyp boost :: optional ist).

OK jetzt Frage: Kann boost :: asio verwendet werden und alle meine Anforderungen erfüllen? Meine Implementierung funktioniert, aber ich möchte etwas verwenden, was wahrscheinlich viel besser implementiert ist als ich es getan habe. Auch ich würde es gerne für die Zukunft wissen und das Rad nicht noch einmal "neu erfinden".

Antworten auf die Frage(1)

Ihre Antwort auf die Frage