ev
reply ?И чем это лучше чем вернуть в
reply ?Size: a a a
ev
reply ?reply ?LL
ev
cast это ещё одно сообщениеreplyLL
cast, усложняя код и пониманиеev
cast, усложняя код и пониманиеLL
message box до replyev
message box до replyLL
p1 sends call to p2
p2 sends reply to p1
p1 sends call to p2
p2 sends cast to p1
p2 sends reply to p1
ev
LL
ev
p1 sends call to p2
p2 sends reply to p1
p1 sends call to p2
p2 sends cast to p1
p2 sends reply to p1
LL
call-reply банально проще чем call-cast-reply, потому что первое более надёждное. Вариант где call-cast-reply неправильно сработает есть и не такой уж и тривиальный на первый взгляд: Между cast и reply в tcp-процесс сможет попасть ещё какое-нибудь сообщение, которое будет рассчитывать что процесс ещё находится в старом состоянии (без аттрибутов) и оно будет обработано с аттрибутами (из-за cast), но перед тем как какая-либо информация попадёт на клиент. Конечно, это может и не навредить и зависит от специфики этого tcp-процесса, но у вас нет никаких гарантий, что в будущем это не сможет породить какой-нибудь сложный и трудно отлавливаемый баг (потому что он связан с порядком сообщений, а такое трудно ловить)gen_statem, но лучше пока прототип на gen_server запилить.ev
call-reply банально проще чем call-cast-reply, потому что первое более надёждное. Вариант где call-cast-reply неправильно сработает есть и не такой уж и тривиальный на первый взгляд: Между cast и reply в tcp-процесс сможет попасть ещё какое-нибудь сообщение, которое будет рассчитывать что процесс ещё находится в старом состоянии (без аттрибутов) и оно будет обработано с аттрибутами (из-за cast), но перед тем как какая-либо информация попадёт на клиент. Конечно, это может и не навредить и зависит от специфики этого tcp-процесса, но у вас нет никаких гарантий, что в будущем это не сможет породить какой-нибудь сложный и трудно отлавливаемый баг (потому что он связан с порядком сообщений, а такое трудно ловить)gen_statem, но лучше пока прототип на gen_server запилить.LL
tcp-процесс после cast, но до reply ?ŹR
call-reply банально проще чем call-cast-reply, потому что первое более надёждное. Вариант где call-cast-reply неправильно сработает есть и не такой уж и тривиальный на первый взгляд: Между cast и reply в tcp-процесс сможет попасть ещё какое-нибудь сообщение, которое будет рассчитывать что процесс ещё находится в старом состоянии (без аттрибутов) и оно будет обработано с аттрибутами (из-за cast), но перед тем как какая-либо информация попадёт на клиент. Конечно, это может и не навредить и зависит от специфики этого tcp-процесса, но у вас нет никаких гарантий, что в будущем это не сможет породить какой-нибудь сложный и трудно отлавливаемый баг (потому что он связан с порядком сообщений, а такое трудно ловить)gen_statem, но лучше пока прототип на gen_server запилить.ev
tcp-процесс после cast, но до reply ?LL
p1 sends call to p2
p3 sends msg to p1
p2 sends cast to p1
p2 sends reply to p1
p2 сообщения обработаются в таком порядке: reply, msg, casttcp-процесса во время msg не совсем ясноŹR
ŹR
LL
reply клиенту