Giter Site home page Giter Site logo

Comments (4)

eao197 avatar eao197 commented on June 15, 2024

Hi!

does it mean that any messages sent to the channels they subscribed to will be discarded until step 6 is done?

No. If SObjectizer works correctly (I hope it does mostly) then agent will accept messages since steps 3 and 4 complete. When agent gets its event_queue from the dispatcher (at step 3) all messages sent to that agent will go to the agent's queue.

It allows to have logic like that: agents A and B are placed into the same coop (but bound to different dispatchers), agent A sends a message M to agent B in A's so_evt_start. The B will receive that message even if B's so_evt_start isn't called by the B's dispatcher. And all those actions could happen just inside register_coop.

Related: does the same hold for introduce_child_coop?

Yes. introduce_child_coop is just a handy wrapper around introduce_coop.

from sobjectizer.

ilpropheta avatar ilpropheta commented on June 15, 2024

Thanks for the clarification!

In my scenario, I am only interested that my agents do not miss any messages. Starting to process such messages later is totally fine for me.

Imagine that all my agents subscribe to a certain channel X the typical way, that is inside so_define_agent. They are all in their own cooperation (to be able to commit suicide, as we discussed in the old #28) that is under a common parent cooperation (just for convenience, since they can all be deregistered at once).

All such agents are registered in a function similar to that I mentioned before:

void Register(...)
{
   so_5::introduce_child_coop(parent_coop, [&](so_5::coop_t& c) {
      c.make_agent<...>(...);
   });
}

Imagine something like this: a for loop that calls such Register function for every agent that needs to join the party.
Only after this for loop messages can start to arrive to that channel X I was mentioning before.

Am I on the safe side? To be clear again: I am not interested that messages are processed straight after that for loop, just that messages are not discarded (and then processed later when agents actually start).

I think it's the case and mine is probably just a doubt - since SObjectizer works correctly :)

from sobjectizer.

eao197 avatar eao197 commented on June 15, 2024

It seems to me that you are on the safe side.

from sobjectizer.

ilpropheta avatar ilpropheta commented on June 15, 2024

It was just an unfounded doubt actually. Thanks @eao197 for your support and keep up with the great work!

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.