Giter Site home page Giter Site logo

Comments (5)

eao197 avatar eao197 commented on May 21, 2024 1

Hi!

It's not an easy question. Let me take some time to think about it.

from sobjectizer.

eao197 avatar eao197 commented on May 21, 2024 1

It seems that this case requires support of messages with different priorities. In that case you can have msg_do_something_heavy with low priority and msg_shutdown with high priority. It allows to switch an agent in a different state when msg_shutdown arrives (message msg_do_something_heavy will just be ignored in that state):

class SlowAgent : public so_5::agent_t
{
  state_t st_normal{this};
  state_t st_shut_down{this};
  ...
public:
  void so_define_agent() override
  {
    this >>= st_normal;
    st_normal
      .event([](mhood_t<msg_do_something_heavy> cmd) {
        ... // Some time-consuming processing.
      })
      .event([this](mhood_t<msg_shutdown>) {
        this >> st_shut_down; // Or call so_deactivate_agent().
      });
    // No subscription for st_shut_down.
  }
  ...
};

In that case, you send a msg_shutdown message before shutting your agent. That message will be delivered before any other messages that are already in the event queue (like msg_do_something_heavy). The agent will be switched to a state in that all other messages will just be ignored.

But SO-5.6/5.7 doesn't support message priorities.

There is an example how a dispatcher with priorities can be implemented: https://github.com/Stiffstream/so5_custom_queue_disps_demo
And the description of that example in Russian: https://habr.com/ru/post/531566/ (Hope a service like Google Translate or DeepL can help here).

from sobjectizer.

ilpropheta avatar ilpropheta commented on May 21, 2024

Thanks @eao197 for your response. Message priorities would be the perfect fit. However, at the moment I don't want to introduce too much "custom code" around the framework.

Actually, I have redesigned the data flow of this particular agent in terms of a message chain and solved this problem by closing it with drop_content. It's not as slick as with message priorities but it's an acceptable trade-off at the moment.

Any future plans for making them a standard feature?

from sobjectizer.

eao197 avatar eao197 commented on May 21, 2024

Any future plans for making them a standard feature?

Because it's another time when message priorities are discussed this feature has to be added to SObjectizer in some form (maybe in the form of another dispatcher). But it's hard to predict when it could be done in the current situation. I hope github won't be closed for my country.

from sobjectizer.

ilpropheta avatar ilpropheta commented on May 21, 2024

Sure @eao197 , the current situation is critical and definitely much more important than any other things right now. Definitely impossible to make any predictions.

from sobjectizer.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.