SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
What’s new in SObjectizer-5.5.9
SObjectizer Team, Oct 2015
A Short Overview
There are several new features in SObjectizer v.5.5.9.
Three of them could be seen as important additions to SObjectizer’s
capabilities:
● an ability to use an arbitrary user type as a message type;
● new class wrapped_env_t;
● an ability to trace message delivery process.
There are also several improvements for existing features.
This presentation briefly describes all of them.
SObjectizer Team, Oct 2015
Arbitrary user type as message type
SObjectizer Team, Oct 2015
Until v.5.5.9 all messages must have been derived from so_5::rt::
message_t.
Even if an agent had to send just one int-value to another agent that
int-value had to be a member of dedicated C++ class/struct:
// Definition of message-related stuff.
enum class engine_action { turn_on, speed_up, slow_down, turn_off };
struct msg_engine_action : public so_5::rt::message_t {
engine_action m_action;
msg_engine_action( engine_action action ) : m_action{ action } {}
};
// Message sending...
so_5::send_to_agent< msg_engine_action >( engine_agent, engine_action::turn_on );
// Message processing...
void engine_agent::evt_engine_action( const msg_engine_action & msg ) {
switch( msg.m_action ) {...}
}
SObjectizer Team, Oct 2015
Since v.5.5.9 it is possible to use arbitrary user-defined types as types
of messages.
Inheritance from so_5::rt::message_t is not mandatory anymore:
// Definition of message-related stuff.
enum class engine_action { turn_on, speed_up, slow_down, turn_off };
// Message sending...
so_5::send_to_agent< engine_action >( engine_agent, engine_action::turn_on );
// Message processing...
void engine_agent::evt_engine_action( const engine_action & action ) {
switch( action ) {...}
}
SObjectizer Team, Oct 2015
The only requirement for such types is very simple: a type T can be
used as type of message if T is MoveConstructible.
It is because SObjectizer creates an instance of an envelope of
special type so_5::rt::user_type_message_t<T> and temporary object
of type T is used to initialize payload field inside that envelope:
template< typename T >
struct user_type_message_t : public message_t {
const T m_payload;
template< typename... ARGS >
user_type_message_t( ARGS &&... args )
: m_payload( T{ std::forward< ARGS >( args )... } ) {}
};
SObjectizer Team, Oct 2015
The messages of arbitrary user types are first-class citizens in
SObjectizer v.5.5.9.
They can be used in asynchronous and synchronous interactions.
Delivery filters and message limits can be specified for user-type
messages.
But signals must still be present as structs/classes
derived from so_5::rt::signal_t.
SObjectizer Team, Oct 2015
More information about user-type messages can be found in the
corresponding Wiki-section.
SObjectizer Team, Oct 2015
Class wrapped_env_t
SObjectizer Team, Oct 2015
A traditional way of launching SObjectizer Environment via so_5::
launch() is simple and useful.
But only if an application is built on top of SObjectizer only.
Usage of so_5::launch() could be not very convenient in other cases.
For example if an application uses some form of message loop for
handling GUI events.
An attempt to use so_5::launch() in such cases could look like...
SObjectizer Team, Oct 2015
A possible way of using so_5::launch() with classical message loop:
int main()
{
so_5::rt::environment_t * env_ptr = nullptr; // To be set inside launch();
so_5::launch( [&]( so_5::rt::environment_t & env ) {
env_ptr = &env;
... // Some SO Environment initialization code.
} );
... // Some application-specific initialization code.
while(!GetMessage(...))
ProcessMessage(...);
env_ptr->stop(); // Stopping SO Environment.
// NOTE: there is no way to wait for a complete finish of SO Environment work!
... // Some application-specific deinitialization code.
}
SObjectizer Team, Oct 2015
It is easy to see that this scenario is not simple and straightforward.
It is just an opposite: fragile and error prone.
So to simplify usage of SObjectizer with other frameworks and
events/messages handling loops in one application a new class has
been introduced in v.5.5.9: so_5::wrapped_env_t.
SObjectizer Team, Oct 2015
A possible way of using so_5::wrapped_env_t with classical message
loop:
int main()
{
so_5::wrapped_env_t env; // Empty SO Environment will be started here.
env.environment().introduce_coop( []( so_5::rt::coop_t & coop ) {
... // Some SO Environment initialization code.
} );
... // Some application-specific initialization code.
while(!GetMessage(...))
ProcessMessage(...);
env.stop_then_join(); // Stopping SO Environment and wait for complete finish.
... // Some application-specific deinitialization code.
}
SObjectizer Team, Oct 2015
More information about so_5::wrapped_env_t and details of its work
can be found in the corresponding Wiki-section.
SObjectizer Team, Oct 2015
Message Delivery Tracing
SObjectizer Team, Oct 2015
A new mechanism for simplification of debugging SObjectizer’s
application has been added in v.5.5.9: message delivery tracing.
This mechanism can be activated on the start of SObjectizer
Environment. After activation of message delivery tracing a full log of
messages delivery will be formed.
This log will contain traces of all important stages of message
processing: pushing of a message to event queues of subscribers,
rejection of a message by a delivery filter, searching of an event
handler for a message, overlimit reactions...
SObjectizer Team, Oct 2015
A new example has been added to the SObjectizer distributive:
chstate_with_tracing. This example shows how message traces could
look (under GCC v.5.2.0):
[tid=3][mbox_id=4] deliver_message.push_to_queue [msg_type=N17a_state_swither_t16greeting_messageE][envelope_ptr=0x5565a0]
↳ [payload_ptr=0x5565b0][overlimit_deep=1][agent_ptr=0x556320]
[tid=2][agent_ptr=0x556320] demand_handler_on_message.find_handler [mbox_id=4]
↳ [msg_type=N17a_state_swither_t16greeting_messageE][envelope_ptr=0x5565a0][payload_ptr=0x5565b0]
↳ [state=<DEFAULT>][evt_handler=0x55ab38]
*** 0) greeting: Hello, World!, ptr: 0x5565b0
[tid=3][mbox_id=4] deliver_message.push_to_queue [msg_type=N17a_state_swither_t19change_state_signalE][signal]
↳ [overlimit_deep=1][agent_ptr=0x556320]
[tid=2][agent_ptr=0x556320] demand_handler_on_message.find_handler [mbox_id=4]
↳ [msg_type=N17a_state_swither_t19change_state_signalE][signal][state=<DEFAULT>][evt_handler=0x55aaf8]
[tid=3][mbox_id=4] deliver_message.push_to_queue [msg_type=N17a_state_swither_t16greeting_messageE][envelope_ptr=0x5565a0]
↳ [payload_ptr=0x5565b0][overlimit_deep=1][agent_ptr=0x556320]
[tid=2][agent_ptr=0x556320] demand_handler_on_message.find_handler [mbox_id=4]
↳ [msg_type=N17a_state_swither_t16greeting_messageE][envelope_ptr=0x5565a0]
↳ [payload_ptr=0x5565b0][state=state_1][evt_handler=NONE]
SObjectizer Team, Oct 2015

Weitere ähnliche Inhalte

Was ist angesagt?

Creating Windows Runtime Components
Creating Windows Runtime Components Creating Windows Runtime Components
Creating Windows Runtime Components Mirco Vanini
 
Future Programming Language
Future Programming LanguageFuture Programming Language
Future Programming LanguageYLTO
 
#4 (Remote Method Invocation)
#4 (Remote Method Invocation)#4 (Remote Method Invocation)
#4 (Remote Method Invocation)Ghadeer AlHasan
 
CSharp Presentation
CSharp PresentationCSharp Presentation
CSharp PresentationVishwa Mohan
 
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)Ovidiu Farauanu
 
C programming interview questions
C programming interview questionsC programming interview questions
C programming interview questionsadarshynl
 
Preprocessor directives in c language
Preprocessor directives in c languagePreprocessor directives in c language
Preprocessor directives in c languagetanmaymodi4
 
Cap'n Proto (C++ Developer Meetup Iasi)
Cap'n Proto (C++ Developer Meetup Iasi)Cap'n Proto (C++ Developer Meetup Iasi)
Cap'n Proto (C++ Developer Meetup Iasi)Ovidiu Farauanu
 
(3) cpp abstractions more_on_user_defined_types_exercises
(3) cpp abstractions more_on_user_defined_types_exercises(3) cpp abstractions more_on_user_defined_types_exercises
(3) cpp abstractions more_on_user_defined_types_exercisesNico Ludwig
 
Polymorphism 140527082302-phpapp01
Polymorphism 140527082302-phpapp01Polymorphism 140527082302-phpapp01
Polymorphism 140527082302-phpapp01Engr.Tazeen Ahmed
 
Greach 2014 - Metaprogramming with groovy
Greach 2014 - Metaprogramming with groovyGreach 2014 - Metaprogramming with groovy
Greach 2014 - Metaprogramming with groovyIván López Martín
 
Perfomatix - iOS swift coding standards
Perfomatix - iOS swift coding standardsPerfomatix - iOS swift coding standards
Perfomatix - iOS swift coding standardsPerfomatix Solutions
 
chap 8 : The java.lang and java.util Packages (scjp/ocjp)
chap 8 : The java.lang and java.util Packages (scjp/ocjp)chap 8 : The java.lang and java.util Packages (scjp/ocjp)
chap 8 : The java.lang and java.util Packages (scjp/ocjp)It Academy
 
Interfaces In Java
Interfaces In JavaInterfaces In Java
Interfaces In Javaparag
 

Was ist angesagt? (20)

Creating Windows Runtime Components
Creating Windows Runtime Components Creating Windows Runtime Components
Creating Windows Runtime Components
 
Future Programming Language
Future Programming LanguageFuture Programming Language
Future Programming Language
 
Meta Programming in Groovy
Meta Programming in GroovyMeta Programming in Groovy
Meta Programming in Groovy
 
#4 (Remote Method Invocation)
#4 (Remote Method Invocation)#4 (Remote Method Invocation)
#4 (Remote Method Invocation)
 
CSharp Presentation
CSharp PresentationCSharp Presentation
CSharp Presentation
 
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
 
Designing Better API
Designing Better APIDesigning Better API
Designing Better API
 
Visual Basic –User Interface- V
Visual Basic –User Interface- VVisual Basic –User Interface- V
Visual Basic –User Interface- V
 
Groovy intro
Groovy introGroovy intro
Groovy intro
 
C programming interview questions
C programming interview questionsC programming interview questions
C programming interview questions
 
Preprocessor directives in c language
Preprocessor directives in c languagePreprocessor directives in c language
Preprocessor directives in c language
 
Lecture 18
Lecture 18Lecture 18
Lecture 18
 
Cap'n Proto (C++ Developer Meetup Iasi)
Cap'n Proto (C++ Developer Meetup Iasi)Cap'n Proto (C++ Developer Meetup Iasi)
Cap'n Proto (C++ Developer Meetup Iasi)
 
(3) cpp abstractions more_on_user_defined_types_exercises
(3) cpp abstractions more_on_user_defined_types_exercises(3) cpp abstractions more_on_user_defined_types_exercises
(3) cpp abstractions more_on_user_defined_types_exercises
 
Polymorphism 140527082302-phpapp01
Polymorphism 140527082302-phpapp01Polymorphism 140527082302-phpapp01
Polymorphism 140527082302-phpapp01
 
Pcom xpcom
Pcom xpcomPcom xpcom
Pcom xpcom
 
Greach 2014 - Metaprogramming with groovy
Greach 2014 - Metaprogramming with groovyGreach 2014 - Metaprogramming with groovy
Greach 2014 - Metaprogramming with groovy
 
Perfomatix - iOS swift coding standards
Perfomatix - iOS swift coding standardsPerfomatix - iOS swift coding standards
Perfomatix - iOS swift coding standards
 
chap 8 : The java.lang and java.util Packages (scjp/ocjp)
chap 8 : The java.lang and java.util Packages (scjp/ocjp)chap 8 : The java.lang and java.util Packages (scjp/ocjp)
chap 8 : The java.lang and java.util Packages (scjp/ocjp)
 
Interfaces In Java
Interfaces In JavaInterfaces In Java
Interfaces In Java
 

Andere mochten auch

Degree Distance of Some Planar Graphs
Degree Distance of Some Planar GraphsDegree Distance of Some Planar Graphs
Degree Distance of Some Planar Graphsijcoa
 
TEHLİKE GELİYORUM DEMİŞTİ: İTALYA’DA ÜÇLÜ DEPREM ATAĞI
TEHLİKE GELİYORUM DEMİŞTİ: İTALYA’DA ÜÇLÜ DEPREM ATAĞITEHLİKE GELİYORUM DEMİŞTİ: İTALYA’DA ÜÇLÜ DEPREM ATAĞI
TEHLİKE GELİYORUM DEMİŞTİ: İTALYA’DA ÜÇLÜ DEPREM ATAĞIHaluk Eyidoğan
 
Догнать и перегнать
Догнать и перегнатьДогнать и перегнать
Догнать и перегнатьCEE-SEC(R)
 
Gov & Education Day 2015 - Mark Mendelson, UCLA
Gov & Education Day 2015 - Mark Mendelson, UCLAGov & Education Day 2015 - Mark Mendelson, UCLA
Gov & Education Day 2015 - Mark Mendelson, UCLASplunk
 
Конкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнерыКонкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнерыcorehard_by
 
Equinix peering location matters 2016_feb_24
Equinix peering location matters 2016_feb_24Equinix peering location matters 2016_feb_24
Equinix peering location matters 2016_feb_24EquinixUK
 
Splunk Enterprise for IT Troubleshooting Hands-On
Splunk Enterprise for IT Troubleshooting Hands-OnSplunk Enterprise for IT Troubleshooting Hands-On
Splunk Enterprise for IT Troubleshooting Hands-OnSplunk
 
Getting Started with Splunk Enterprise
Getting Started with Splunk Enterprise Getting Started with Splunk Enterprise
Getting Started with Splunk Enterprise Splunk
 
Модель акторов и C++ что, зачем и как?
Модель акторов и C++ что, зачем и как?Модель акторов и C++ что, зачем и как?
Модель акторов и C++ что, зачем и как?Yauheni Akhotnikau
 
Managing SCADA Operations and Security with Splunk Enterprise
Managing SCADA Operations and Security with Splunk EnterpriseManaging SCADA Operations and Security with Splunk Enterprise
Managing SCADA Operations and Security with Splunk EnterpriseSplunk
 
[2016 데이터 그랜드 컨퍼런스] 6 3(전략, 솔루션).크레딧데이터 공공데이터를 활용한 생활의 질 향상
[2016 데이터 그랜드 컨퍼런스] 6 3(전략, 솔루션).크레딧데이터 공공데이터를 활용한 생활의 질 향상[2016 데이터 그랜드 컨퍼런스] 6 3(전략, 솔루션).크레딧데이터 공공데이터를 활용한 생활의 질 향상
[2016 데이터 그랜드 컨퍼런스] 6 3(전략, 솔루션).크레딧데이터 공공데이터를 활용한 생활의 질 향상K data
 
SplunkLive! Customer Presentation – Harris
SplunkLive! Customer Presentation – HarrisSplunkLive! Customer Presentation – Harris
SplunkLive! Customer Presentation – HarrisSplunk
 
SplunkLive! Utrecht - KPN
SplunkLive! Utrecht - KPNSplunkLive! Utrecht - KPN
SplunkLive! Utrecht - KPNSplunk
 
SplunkLive! Utrecht - Splunk for IT Operations - Rick Fitz
SplunkLive! Utrecht - Splunk for IT Operations - Rick FitzSplunkLive! Utrecht - Splunk for IT Operations - Rick Fitz
SplunkLive! Utrecht - Splunk for IT Operations - Rick FitzSplunk
 
Herbalife Customer Presentation
Herbalife Customer PresentationHerbalife Customer Presentation
Herbalife Customer PresentationSplunk
 
Chatbot workshop - How to build one.#digitized16
Chatbot workshop - How to build one.#digitized16Chatbot workshop - How to build one.#digitized16
Chatbot workshop - How to build one.#digitized16Warply
 
Building an Analytics Enables SOC
Building an Analytics Enables SOCBuilding an Analytics Enables SOC
Building an Analytics Enables SOCSplunk
 
chatbot and messenger as a platform
chatbot and messenger as a platformchatbot and messenger as a platform
chatbot and messenger as a platformDaisuke Minamide
 

Andere mochten auch (20)

Degree Distance of Some Planar Graphs
Degree Distance of Some Planar GraphsDegree Distance of Some Planar Graphs
Degree Distance of Some Planar Graphs
 
Cover officina 1 copia 3
Cover officina 1 copia 3Cover officina 1 copia 3
Cover officina 1 copia 3
 
TEHLİKE GELİYORUM DEMİŞTİ: İTALYA’DA ÜÇLÜ DEPREM ATAĞI
TEHLİKE GELİYORUM DEMİŞTİ: İTALYA’DA ÜÇLÜ DEPREM ATAĞITEHLİKE GELİYORUM DEMİŞTİ: İTALYA’DA ÜÇLÜ DEPREM ATAĞI
TEHLİKE GELİYORUM DEMİŞTİ: İTALYA’DA ÜÇLÜ DEPREM ATAĞI
 
Догнать и перегнать
Догнать и перегнатьДогнать и перегнать
Догнать и перегнать
 
Gov & Education Day 2015 - Mark Mendelson, UCLA
Gov & Education Day 2015 - Mark Mendelson, UCLAGov & Education Day 2015 - Mark Mendelson, UCLA
Gov & Education Day 2015 - Mark Mendelson, UCLA
 
Конкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнерыКонкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнеры
 
Equinix peering location matters 2016_feb_24
Equinix peering location matters 2016_feb_24Equinix peering location matters 2016_feb_24
Equinix peering location matters 2016_feb_24
 
Splunk Enterprise for IT Troubleshooting Hands-On
Splunk Enterprise for IT Troubleshooting Hands-OnSplunk Enterprise for IT Troubleshooting Hands-On
Splunk Enterprise for IT Troubleshooting Hands-On
 
Getting Started with Splunk Enterprise
Getting Started with Splunk Enterprise Getting Started with Splunk Enterprise
Getting Started with Splunk Enterprise
 
Модель акторов и C++ что, зачем и как?
Модель акторов и C++ что, зачем и как?Модель акторов и C++ что, зачем и как?
Модель акторов и C++ что, зачем и как?
 
Managing SCADA Operations and Security with Splunk Enterprise
Managing SCADA Operations and Security with Splunk EnterpriseManaging SCADA Operations and Security with Splunk Enterprise
Managing SCADA Operations and Security with Splunk Enterprise
 
[2016 데이터 그랜드 컨퍼런스] 6 3(전략, 솔루션).크레딧데이터 공공데이터를 활용한 생활의 질 향상
[2016 데이터 그랜드 컨퍼런스] 6 3(전략, 솔루션).크레딧데이터 공공데이터를 활용한 생활의 질 향상[2016 데이터 그랜드 컨퍼런스] 6 3(전략, 솔루션).크레딧데이터 공공데이터를 활용한 생활의 질 향상
[2016 데이터 그랜드 컨퍼런스] 6 3(전략, 솔루션).크레딧데이터 공공데이터를 활용한 생활의 질 향상
 
SplunkLive! Customer Presentation – Harris
SplunkLive! Customer Presentation – HarrisSplunkLive! Customer Presentation – Harris
SplunkLive! Customer Presentation – Harris
 
SplunkLive! Utrecht - KPN
SplunkLive! Utrecht - KPNSplunkLive! Utrecht - KPN
SplunkLive! Utrecht - KPN
 
SplunkLive! Utrecht - Splunk for IT Operations - Rick Fitz
SplunkLive! Utrecht - Splunk for IT Operations - Rick FitzSplunkLive! Utrecht - Splunk for IT Operations - Rick Fitz
SplunkLive! Utrecht - Splunk for IT Operations - Rick Fitz
 
Herbalife Customer Presentation
Herbalife Customer PresentationHerbalife Customer Presentation
Herbalife Customer Presentation
 
Chatbot workshop - How to build one.#digitized16
Chatbot workshop - How to build one.#digitized16Chatbot workshop - How to build one.#digitized16
Chatbot workshop - How to build one.#digitized16
 
Building an Analytics Enables SOC
Building an Analytics Enables SOCBuilding an Analytics Enables SOC
Building an Analytics Enables SOC
 
chatbot and messenger as a platform
chatbot and messenger as a platformchatbot and messenger as a platform
chatbot and messenger as a platform
 
Chatbot interfaces
Chatbot interfacesChatbot interfaces
Chatbot interfaces
 

Ähnlich wie What's new in SObjectizer 5.5.9

Dive into SObjectizer 5.5. Tenth part: Mutable Messages
Dive into SObjectizer 5.5. Tenth part: Mutable MessagesDive into SObjectizer 5.5. Tenth part: Mutable Messages
Dive into SObjectizer 5.5. Tenth part: Mutable MessagesYauheni Akhotnikau
 
What is SObjectizer 5.6 (at v.5.6.0)
What is SObjectizer 5.6 (at v.5.6.0)What is SObjectizer 5.6 (at v.5.6.0)
What is SObjectizer 5.6 (at v.5.6.0)Yauheni Akhotnikau
 
Dive into SObjectizer 5.5. Seventh part: Message Limits
Dive into SObjectizer 5.5. Seventh part: Message LimitsDive into SObjectizer 5.5. Seventh part: Message Limits
Dive into SObjectizer 5.5. Seventh part: Message LimitsYauheni Akhotnikau
 
What is SObjectizer 5.7 (at v.5.7.0)
What is SObjectizer 5.7 (at v.5.7.0)What is SObjectizer 5.7 (at v.5.7.0)
What is SObjectizer 5.7 (at v.5.7.0)Yauheni Akhotnikau
 
Dive into SObjectizer 5.5. Fifth part: Timers
Dive into SObjectizer 5.5. Fifth part: TimersDive into SObjectizer 5.5. Fifth part: Timers
Dive into SObjectizer 5.5. Fifth part: TimersYauheni Akhotnikau
 
Dive into SObjectizer 5.5. Introductory part
Dive into SObjectizer 5.5. Introductory partDive into SObjectizer 5.5. Introductory part
Dive into SObjectizer 5.5. Introductory partYauheni Akhotnikau
 
ROS Based Programming and Visualization of Quadrotor Helicopters
ROS Based Programming and Visualization of Quadrotor HelicoptersROS Based Programming and Visualization of Quadrotor Helicopters
ROS Based Programming and Visualization of Quadrotor HelicoptersAtılay Mayadağ
 
Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...
Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...
Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...NicheTech Com. Solutions Pvt. Ltd.
 
Diving in OOP (Day 1) : Polymorphism and Inheritance (Early Binding/Compile T...
Diving in OOP (Day 1) : Polymorphism and Inheritance (Early Binding/Compile T...Diving in OOP (Day 1) : Polymorphism and Inheritance (Early Binding/Compile T...
Diving in OOP (Day 1) : Polymorphism and Inheritance (Early Binding/Compile T...Akhil Mittal
 
What’s new in SObjectizer 5.5.8
What’s new in SObjectizer 5.5.8What’s new in SObjectizer 5.5.8
What’s new in SObjectizer 5.5.8Yauheni Akhotnikau
 
Message queuing telemetry transport (mqtt)and part 3 and summarizing
Message queuing telemetry transport (mqtt)and  part 3 and summarizingMessage queuing telemetry transport (mqtt)and  part 3 and summarizing
Message queuing telemetry transport (mqtt)and part 3 and summarizingHamdamboy (함담보이)
 
Typescript language extension of java script
Typescript language extension of java scriptTypescript language extension of java script
Typescript language extension of java scriptmichaelaaron25322
 
Iot hub agent
Iot hub agentIot hub agent
Iot hub agentrtfmpliz1
 
Apple’s New Swift Programming Language Takes Flight With New Enhancements And...
Apple’s New Swift Programming Language Takes Flight With New Enhancements And...Apple’s New Swift Programming Language Takes Flight With New Enhancements And...
Apple’s New Swift Programming Language Takes Flight With New Enhancements And...Azilen Technologies Pvt. Ltd.
 

Ähnlich wie What's new in SObjectizer 5.5.9 (20)

What is SObjectizer 5.5
What is SObjectizer 5.5What is SObjectizer 5.5
What is SObjectizer 5.5
 
Dive into SObjectizer 5.5. Tenth part: Mutable Messages
Dive into SObjectizer 5.5. Tenth part: Mutable MessagesDive into SObjectizer 5.5. Tenth part: Mutable Messages
Dive into SObjectizer 5.5. Tenth part: Mutable Messages
 
What is SObjectizer 5.6 (at v.5.6.0)
What is SObjectizer 5.6 (at v.5.6.0)What is SObjectizer 5.6 (at v.5.6.0)
What is SObjectizer 5.6 (at v.5.6.0)
 
Dive into SObjectizer 5.5. Seventh part: Message Limits
Dive into SObjectizer 5.5. Seventh part: Message LimitsDive into SObjectizer 5.5. Seventh part: Message Limits
Dive into SObjectizer 5.5. Seventh part: Message Limits
 
What is SObjectizer 5.7 (at v.5.7.0)
What is SObjectizer 5.7 (at v.5.7.0)What is SObjectizer 5.7 (at v.5.7.0)
What is SObjectizer 5.7 (at v.5.7.0)
 
Dive into SObjectizer 5.5. Fifth part: Timers
Dive into SObjectizer 5.5. Fifth part: TimersDive into SObjectizer 5.5. Fifth part: Timers
Dive into SObjectizer 5.5. Fifth part: Timers
 
An Introduction to OMNeT++ 5.1
An Introduction to OMNeT++ 5.1An Introduction to OMNeT++ 5.1
An Introduction to OMNeT++ 5.1
 
How to build typing indicator in a Chat app
How to build typing indicator in a Chat appHow to build typing indicator in a Chat app
How to build typing indicator in a Chat app
 
An Introduction to OMNeT++ 5.4
An Introduction to OMNeT++ 5.4An Introduction to OMNeT++ 5.4
An Introduction to OMNeT++ 5.4
 
Dive into SObjectizer 5.5. Introductory part
Dive into SObjectizer 5.5. Introductory partDive into SObjectizer 5.5. Introductory part
Dive into SObjectizer 5.5. Introductory part
 
An Introduction to OMNeT++ 6.0
An Introduction to OMNeT++ 6.0An Introduction to OMNeT++ 6.0
An Introduction to OMNeT++ 6.0
 
ROS Based Programming and Visualization of Quadrotor Helicopters
ROS Based Programming and Visualization of Quadrotor HelicoptersROS Based Programming and Visualization of Quadrotor Helicopters
ROS Based Programming and Visualization of Quadrotor Helicopters
 
Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...
Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...
Objective of c in IOS , iOS Live Project Training Ahmedabad, MCA Live Project...
 
Diving in OOP (Day 1) : Polymorphism and Inheritance (Early Binding/Compile T...
Diving in OOP (Day 1) : Polymorphism and Inheritance (Early Binding/Compile T...Diving in OOP (Day 1) : Polymorphism and Inheritance (Early Binding/Compile T...
Diving in OOP (Day 1) : Polymorphism and Inheritance (Early Binding/Compile T...
 
What’s new in SObjectizer 5.5.8
What’s new in SObjectizer 5.5.8What’s new in SObjectizer 5.5.8
What’s new in SObjectizer 5.5.8
 
Message queuing telemetry transport (mqtt)and part 3 and summarizing
Message queuing telemetry transport (mqtt)and  part 3 and summarizingMessage queuing telemetry transport (mqtt)and  part 3 and summarizing
Message queuing telemetry transport (mqtt)and part 3 and summarizing
 
Typescript language extension of java script
Typescript language extension of java scriptTypescript language extension of java script
Typescript language extension of java script
 
Iot hub agent
Iot hub agentIot hub agent
Iot hub agent
 
resume
resumeresume
resume
 
Apple’s New Swift Programming Language Takes Flight With New Enhancements And...
Apple’s New Swift Programming Language Takes Flight With New Enhancements And...Apple’s New Swift Programming Language Takes Flight With New Enhancements And...
Apple’s New Swift Programming Language Takes Flight With New Enhancements And...
 

Mehr von Yauheni Akhotnikau

arataga. SObjectizer and RESTinio in action: a real-world example
arataga. SObjectizer and RESTinio in action: a real-world examplearataga. SObjectizer and RESTinio in action: a real-world example
arataga. SObjectizer and RESTinio in action: a real-world exampleYauheni Akhotnikau
 
Actor Model and C++: what, why and how? (March 2020 Edition)
Actor Model and C++: what, why and how? (March 2020 Edition)Actor Model and C++: what, why and how? (March 2020 Edition)
Actor Model and C++: what, why and how? (March 2020 Edition)Yauheni Akhotnikau
 
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...Yauheni Akhotnikau
 
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...Yauheni Akhotnikau
 
Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...
Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...
Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...Yauheni Akhotnikau
 
Акторы на C++: стоило ли оно того?
Акторы на C++: стоило ли оно того?Акторы на C++: стоило ли оно того?
Акторы на C++: стоило ли оно того?Yauheni Akhotnikau
 
25 Years of C++ History Flashed in Front of My Eyes
25 Years of C++ History Flashed in Front of My Eyes25 Years of C++ History Flashed in Front of My Eyes
25 Years of C++ History Flashed in Front of My EyesYauheni Akhotnikau
 
GECon 2017: C++ - a Monster that no one likes but that will outlast them all
GECon 2017: C++ - a Monster that no one likes but that will outlast them allGECon 2017: C++ - a Monster that no one likes but that will outlast them all
GECon 2017: C++ - a Monster that no one likes but that will outlast them allYauheni Akhotnikau
 
Actor Model and C++: what, why and how?
Actor Model and C++: what, why and how?Actor Model and C++: what, why and how?
Actor Model and C++: what, why and how?Yauheni Akhotnikau
 
Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Yauheni Akhotnikau
 
Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Yauheni Akhotnikau
 
Dive into SObjectizer 5.5. Ninth Part: Message Chains
Dive into SObjectizer 5.5. Ninth Part: Message ChainsDive into SObjectizer 5.5. Ninth Part: Message Chains
Dive into SObjectizer 5.5. Ninth Part: Message ChainsYauheni Akhotnikau
 
Dive into SObjectizer 5.5. Eighth Part: Dispatchers
Dive into SObjectizer 5.5. Eighth Part: DispatchersDive into SObjectizer 5.5. Eighth Part: Dispatchers
Dive into SObjectizer 5.5. Eighth Part: DispatchersYauheni Akhotnikau
 
Dive into SObjectizer-5.5. Sixth part: Synchronous Interaction
Dive into SObjectizer-5.5. Sixth part: Synchronous InteractionDive into SObjectizer-5.5. Sixth part: Synchronous Interaction
Dive into SObjectizer-5.5. Sixth part: Synchronous InteractionYauheni Akhotnikau
 
Dive into SObjectizer 5.5. Fourth part. Exception
Dive into SObjectizer 5.5. Fourth part. ExceptionDive into SObjectizer 5.5. Fourth part. Exception
Dive into SObjectizer 5.5. Fourth part. ExceptionYauheni Akhotnikau
 
Dive into SObjectizer 5.5. Third part. Coops
Dive into SObjectizer 5.5. Third part. CoopsDive into SObjectizer 5.5. Third part. Coops
Dive into SObjectizer 5.5. Third part. CoopsYauheni Akhotnikau
 
Погружение в SObjectizer 5.5. Вводная часть
Погружение в SObjectizer 5.5. Вводная частьПогружение в SObjectizer 5.5. Вводная часть
Погружение в SObjectizer 5.5. Вводная частьYauheni Akhotnikau
 

Mehr von Yauheni Akhotnikau (18)

arataga. SObjectizer and RESTinio in action: a real-world example
arataga. SObjectizer and RESTinio in action: a real-world examplearataga. SObjectizer and RESTinio in action: a real-world example
arataga. SObjectizer and RESTinio in action: a real-world example
 
Actor Model and C++: what, why and how? (March 2020 Edition)
Actor Model and C++: what, why and how? (March 2020 Edition)Actor Model and C++: what, why and how? (March 2020 Edition)
Actor Model and C++: what, why and how? (March 2020 Edition)
 
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
[C++ CoreHard Autumn 2018] Actors vs CSP vs Task...
 
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
Shrimp: A Rather Practical Example Of Application Development With RESTinio a...
 
Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...
Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...
Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...
 
Акторы на C++: стоило ли оно того?
Акторы на C++: стоило ли оно того?Акторы на C++: стоило ли оно того?
Акторы на C++: стоило ли оно того?
 
25 Years of C++ History Flashed in Front of My Eyes
25 Years of C++ History Flashed in Front of My Eyes25 Years of C++ History Flashed in Front of My Eyes
25 Years of C++ History Flashed in Front of My Eyes
 
GECon 2017: C++ - a Monster that no one likes but that will outlast them all
GECon 2017: C++ - a Monster that no one likes but that will outlast them allGECon 2017: C++ - a Monster that no one likes but that will outlast them all
GECon 2017: C++ - a Monster that no one likes but that will outlast them all
 
Actor Model and C++: what, why and how?
Actor Model and C++: what, why and how?Actor Model and C++: what, why and how?
Actor Model and C++: what, why and how?
 
Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++
 
Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?
 
Dive into SObjectizer 5.5. Ninth Part: Message Chains
Dive into SObjectizer 5.5. Ninth Part: Message ChainsDive into SObjectizer 5.5. Ninth Part: Message Chains
Dive into SObjectizer 5.5. Ninth Part: Message Chains
 
Dive into SObjectizer 5.5. Eighth Part: Dispatchers
Dive into SObjectizer 5.5. Eighth Part: DispatchersDive into SObjectizer 5.5. Eighth Part: Dispatchers
Dive into SObjectizer 5.5. Eighth Part: Dispatchers
 
Dive into SObjectizer-5.5. Sixth part: Synchronous Interaction
Dive into SObjectizer-5.5. Sixth part: Synchronous InteractionDive into SObjectizer-5.5. Sixth part: Synchronous Interaction
Dive into SObjectizer-5.5. Sixth part: Synchronous Interaction
 
Dive into SObjectizer 5.5. Fourth part. Exception
Dive into SObjectizer 5.5. Fourth part. ExceptionDive into SObjectizer 5.5. Fourth part. Exception
Dive into SObjectizer 5.5. Fourth part. Exception
 
Dive into SObjectizer 5.5. Third part. Coops
Dive into SObjectizer 5.5. Third part. CoopsDive into SObjectizer 5.5. Third part. Coops
Dive into SObjectizer 5.5. Third part. Coops
 
Погружение в SObjectizer 5.5. Вводная часть
Погружение в SObjectizer 5.5. Вводная частьПогружение в SObjectizer 5.5. Вводная часть
Погружение в SObjectizer 5.5. Вводная часть
 
Обзор SObjectizer 5.5
Обзор SObjectizer 5.5Обзор SObjectizer 5.5
Обзор SObjectizer 5.5
 

Kürzlich hochgeladen

Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
SoftTeco - Software Development Company Profile
SoftTeco - Software Development Company ProfileSoftTeco - Software Development Company Profile
SoftTeco - Software Development Company Profileakrivarotava
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Anthony Dahanne
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 

Kürzlich hochgeladen (20)

Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
SoftTeco - Software Development Company Profile
SoftTeco - Software Development Company ProfileSoftTeco - Software Development Company Profile
SoftTeco - Software Development Company Profile
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 

What's new in SObjectizer 5.5.9

  • 1. What’s new in SObjectizer-5.5.9 SObjectizer Team, Oct 2015 A Short Overview
  • 2. There are several new features in SObjectizer v.5.5.9. Three of them could be seen as important additions to SObjectizer’s capabilities: ● an ability to use an arbitrary user type as a message type; ● new class wrapped_env_t; ● an ability to trace message delivery process. There are also several improvements for existing features. This presentation briefly describes all of them. SObjectizer Team, Oct 2015
  • 3. Arbitrary user type as message type SObjectizer Team, Oct 2015
  • 4. Until v.5.5.9 all messages must have been derived from so_5::rt:: message_t. Even if an agent had to send just one int-value to another agent that int-value had to be a member of dedicated C++ class/struct: // Definition of message-related stuff. enum class engine_action { turn_on, speed_up, slow_down, turn_off }; struct msg_engine_action : public so_5::rt::message_t { engine_action m_action; msg_engine_action( engine_action action ) : m_action{ action } {} }; // Message sending... so_5::send_to_agent< msg_engine_action >( engine_agent, engine_action::turn_on ); // Message processing... void engine_agent::evt_engine_action( const msg_engine_action & msg ) { switch( msg.m_action ) {...} } SObjectizer Team, Oct 2015
  • 5. Since v.5.5.9 it is possible to use arbitrary user-defined types as types of messages. Inheritance from so_5::rt::message_t is not mandatory anymore: // Definition of message-related stuff. enum class engine_action { turn_on, speed_up, slow_down, turn_off }; // Message sending... so_5::send_to_agent< engine_action >( engine_agent, engine_action::turn_on ); // Message processing... void engine_agent::evt_engine_action( const engine_action & action ) { switch( action ) {...} } SObjectizer Team, Oct 2015
  • 6. The only requirement for such types is very simple: a type T can be used as type of message if T is MoveConstructible. It is because SObjectizer creates an instance of an envelope of special type so_5::rt::user_type_message_t<T> and temporary object of type T is used to initialize payload field inside that envelope: template< typename T > struct user_type_message_t : public message_t { const T m_payload; template< typename... ARGS > user_type_message_t( ARGS &&... args ) : m_payload( T{ std::forward< ARGS >( args )... } ) {} }; SObjectizer Team, Oct 2015
  • 7. The messages of arbitrary user types are first-class citizens in SObjectizer v.5.5.9. They can be used in asynchronous and synchronous interactions. Delivery filters and message limits can be specified for user-type messages. But signals must still be present as structs/classes derived from so_5::rt::signal_t. SObjectizer Team, Oct 2015
  • 8. More information about user-type messages can be found in the corresponding Wiki-section. SObjectizer Team, Oct 2015
  • 10. A traditional way of launching SObjectizer Environment via so_5:: launch() is simple and useful. But only if an application is built on top of SObjectizer only. Usage of so_5::launch() could be not very convenient in other cases. For example if an application uses some form of message loop for handling GUI events. An attempt to use so_5::launch() in such cases could look like... SObjectizer Team, Oct 2015
  • 11. A possible way of using so_5::launch() with classical message loop: int main() { so_5::rt::environment_t * env_ptr = nullptr; // To be set inside launch(); so_5::launch( [&]( so_5::rt::environment_t & env ) { env_ptr = &env; ... // Some SO Environment initialization code. } ); ... // Some application-specific initialization code. while(!GetMessage(...)) ProcessMessage(...); env_ptr->stop(); // Stopping SO Environment. // NOTE: there is no way to wait for a complete finish of SO Environment work! ... // Some application-specific deinitialization code. } SObjectizer Team, Oct 2015
  • 12. It is easy to see that this scenario is not simple and straightforward. It is just an opposite: fragile and error prone. So to simplify usage of SObjectizer with other frameworks and events/messages handling loops in one application a new class has been introduced in v.5.5.9: so_5::wrapped_env_t. SObjectizer Team, Oct 2015
  • 13. A possible way of using so_5::wrapped_env_t with classical message loop: int main() { so_5::wrapped_env_t env; // Empty SO Environment will be started here. env.environment().introduce_coop( []( so_5::rt::coop_t & coop ) { ... // Some SO Environment initialization code. } ); ... // Some application-specific initialization code. while(!GetMessage(...)) ProcessMessage(...); env.stop_then_join(); // Stopping SO Environment and wait for complete finish. ... // Some application-specific deinitialization code. } SObjectizer Team, Oct 2015
  • 14. More information about so_5::wrapped_env_t and details of its work can be found in the corresponding Wiki-section. SObjectizer Team, Oct 2015
  • 16. A new mechanism for simplification of debugging SObjectizer’s application has been added in v.5.5.9: message delivery tracing. This mechanism can be activated on the start of SObjectizer Environment. After activation of message delivery tracing a full log of messages delivery will be formed. This log will contain traces of all important stages of message processing: pushing of a message to event queues of subscribers, rejection of a message by a delivery filter, searching of an event handler for a message, overlimit reactions... SObjectizer Team, Oct 2015
  • 17. A new example has been added to the SObjectizer distributive: chstate_with_tracing. This example shows how message traces could look (under GCC v.5.2.0): [tid=3][mbox_id=4] deliver_message.push_to_queue [msg_type=N17a_state_swither_t16greeting_messageE][envelope_ptr=0x5565a0] ↳ [payload_ptr=0x5565b0][overlimit_deep=1][agent_ptr=0x556320] [tid=2][agent_ptr=0x556320] demand_handler_on_message.find_handler [mbox_id=4] ↳ [msg_type=N17a_state_swither_t16greeting_messageE][envelope_ptr=0x5565a0][payload_ptr=0x5565b0] ↳ [state=<DEFAULT>][evt_handler=0x55ab38] *** 0) greeting: Hello, World!, ptr: 0x5565b0 [tid=3][mbox_id=4] deliver_message.push_to_queue [msg_type=N17a_state_swither_t19change_state_signalE][signal] ↳ [overlimit_deep=1][agent_ptr=0x556320] [tid=2][agent_ptr=0x556320] demand_handler_on_message.find_handler [mbox_id=4] ↳ [msg_type=N17a_state_swither_t19change_state_signalE][signal][state=<DEFAULT>][evt_handler=0x55aaf8] [tid=3][mbox_id=4] deliver_message.push_to_queue [msg_type=N17a_state_swither_t16greeting_messageE][envelope_ptr=0x5565a0] ↳ [payload_ptr=0x5565b0][overlimit_deep=1][agent_ptr=0x556320] [tid=2][agent_ptr=0x556320] demand_handler_on_message.find_handler [mbox_id=4] ↳ [msg_type=N17a_state_swither_t16greeting_messageE][envelope_ptr=0x5565a0] ↳ [payload_ptr=0x5565b0][state=state_1][evt_handler=NONE] SObjectizer Team, Oct 2015