boost :: asio i Active Object

Zaimplementowałem pewien wzór wzorcowy Active Object oparty na module. Jest to bardzo prosta implementacja. Mam Scheduler, ActivationList, Requests i Futures, aby uzyskać odpowiedź. Moje wymagania były takie:

Dostęp do aktywnego obiektu należy serializować, wykonując jego metody w jego własnym wątku (główne zadanie i założenie wzorca projektowania obiektu aktywnego)Dzwoniący powinien być w stanie określić priorytet wykonywania żądań. Oznacza to, że jeśli oczekuje na wykonanie więcej niż zero żądań, są one uporządkowane według priorytetu przypisanego do każdego żądania. Żądania o wyższym priorytecie będą wykonywane w pierwszej kolejności, więc jeśli zawsze będą jakieś żądania oczekujące na Liście Aktywacji i będą miały wyższy priorytet niż dane żądania, to żądanie nigdy nie zostanie wykonane - jest to dla mnie OKMusi być możliwe określenie maksymalnej liczby oczekujących żądań na liście (ograniczenie użycia pamięci)Musi być możliwe unieważnienie wszystkich oczekujących żądańŻądania powinny być w stanie zwracać wartości (blokować wywołującego) LUB po prostu wykonywać bez zwracania wartości, ale wywołujący zostanie zablokowany do czasu przetworzenia żądania LUB nie zostanie zablokowany rozmówca i nie jest dla niego ważne, jeśli dane żądanie zostało przetworzone lub nie solTuż przed wykonaniem żądania wykonywana jest pewna metoda zabezpieczająca w celu sprawdzenia, czy dane żądanie zostanie wykonane, czy nie. Jeśli nie - zwróci trochę niezdefiniowanej wartości do wywołującego (w mojej obecnej implementacji jest to boost :: none, ponieważ każdy typ zwracanego żądania to boost :: opcjonalne)

OK teraz pytanie: czy można użyć boost :: asio i spełnić wszystkie moje wymagania? Moja implementacja działa, ale chciałbym użyć czegoś, co prawdopodobnie zostało wdrożone w znacznie lepszy sposób niż to zrobiłem. Chciałbym też wiedzieć to na przyszłość i nie „ponownie wymyślać koła”.

questionAnswers(1)

yourAnswerToTheQuestion