Comments (2)
I don't think it's a good idea to place another std::string
into so_5::agent_t
, because in the most cases it will be an empty value.
Maybe something like that:
namespace so_5
{
// Public stuff.
struct anonymous_agent_id_t { std::array<char, N> m_ptr_as_id; };
struct named_agent_id_t { std::string_view m_name; }
using agent_name_t = std::variant<anonymous_agent_id_t, named_agent_id_t>;
[[nodiscard]]
std::string_view to_string_view(const agent_name_t & name);
class agent_t {
public:
[[nodiscard]]
agent_name_t
so_agent_name() const noexcept;
private:
std::unique_ptr<char[]> m_agent_name;
};
} /* namespace so_5 */
If the name is not specified in the constructor (via modificators for context_t object) then agent_t::m_agent_name
will be nullptr. And agent_t::so_agent_name()
will return an instance of anonymous_agent_id_t
where m_ptr_as_id
will hold a string representation of agent's this
pointer.
If the name is specified, then agent_t::m_agent_name
will contain a copy of name inside, and agent_t::so_agent_name()
will return named_agent_id_t
that references this name.
So if the name is not used the space penalty will be just sizeof(std::unique_ptr<char[]>)
(8 bytes for 64-bit platform).
from sobjectizer.
It's a part of v.5.8.2 release.
from sobjectizer.
Related Issues (20)
- Asynchrony of register_coop HOT 4
- Documentation for message_holder_t has to be extended HOT 1
- A usage example for agent_t::limit_then_redirect method in API Reference HOT 1
- [Design] Your opinion on expressing agent intent HOT 2
- Deprecation of coop_t::deregister and coop_t::deregister_normally methods HOT 1
- [idea] An emergency stop of SOEnv on an exception in noexcept context HOT 1
- `so_evt_finish` not called until `so_evt_start` is running? HOT 2
- Should agent_t::so_drop_subscription* methods be marked as noexcept? HOT 1
- Should delivery filters be checked for noexcept-ness?
- bind_and_transform HOT 10
- so_5::details::make_message_instance_impl metafunction doesn't set message mutability flag properly HOT 1
- limit_then_transform for mutable messages HOT 1
- Allow `const auto &` as an argument for delivery filter in single/multi_sink_binding HOT 1
- Should there be agent_t::so_disp_binder() and agent_t::so_coop_default_disp_binder() methods? HOT 2
- [idea] Make so5extra's revocable timers the default implementation for timers in SObjectizer
- Another constructor for wrapped_env_t that waits completion of init-function HOT 1
- Use of message limits and state_t::time_limit
- New method `as_string_view` for so_5::stats::prefix_t and so_5::stats::suffix_t HOT 1
- SO_5_TYPE shouldn't be used for so_5::stats::messages::quantity
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sobjectizer.