ErlyBank рдХреЛ рдмрдЪрд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдУрдЯреАрдкреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд░рд┐рдЪрдп рдореЗрдВ рдпрд╣ рдЪреМрдерд╛ рд▓реЗрдЦ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрднреА рд╣рдорд╛рд░реЗ рд╕рд╛рде рдЖрдП рд╣реИрдВ , рддреЛ рдореИрдВ рдкрд╣рд▓реЗ рднрд╛рдЧ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ gen_server рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реА рдмреИрдВрдХрд┐рдВрдЧ рдкреНрд░рдгрд╛рд▓реА рдХреА рдиреАрдВрд╡ рд░рдЦрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рд╕рдХреНрд╖рдо рдЫрд╛рддреНрд░ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддреИрдпрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ: eb_server.erl , eb_event_manager.erl , eb_withdrawal_handler.erl рдФрд░ eb_atm.erl ред

рдкрд░рд┐рджреГрд╢реНрдп : рдЬрд┐рд╕ рдХреНрд╖рдг рдХреЛ рд╣рдо рдмреИрдВрдХреЛрдВ рдФрд░ рдПрдЯреАрдПрдо рдореЗрдВ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реЛрддреЗ рд╣реИрдВред рдПрдЯреАрдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЬрдм рдЪрд╛рд╣реЗрдВ, 24 рдШрдВрдЯреЗ рдПрдХ рджрд┐рди рдореЗрдВ рдкреИрд╕реЗ рдирд┐рдХрд╛рд▓ рдпрд╛ рдЬрдорд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рдЬрдм рдпрд╣ рдЦреБрд▓рд╛ рд╣реЛ рддреЛ рдмреИрдВрдХ рдХреА рдХрд┐рд╕реА рднреА рд╢рд╛рдЦрд╛ рдореЗрдВ рдЬрд╛рдПрдВ, рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╡рд┐рддреНрдд рдХреА рдкреВрд░реА рдкрд╣реБрдВрдЪ рд╣реЛрдЧреАред рдЗрд╕рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА ErlyBank рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд░рдгрд╛рд▓реА рд╣рдореЗрд╢рд╛ рдЪрд╛рд▓реВ рд░рд╣рддреА рд╣реИ: рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред ErlyBank рдиреЗ рд╣рдореЗрдВ рдЗрд╕ рд▓рдХреНрд╖реНрдп рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдпрд╛ред рдПрдХ рд╕реМ рдкреНрд░рддрд┐рд╢рдд uptime! (рдпрд╛ рдЬрд┐рддрдирд╛ рд╣рдо рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)

рдкрд░рд┐рдгрд╛рдо : рдУрдЯреАрдкреА рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдПрдВрдЧреЗ рдЬрд┐рд╕рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдЪрд▓ рд░рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рдХреНрд░рд┐рдп рд╣реИрдВред

рдирд┐рдпрдВрддреНрд░рдХ рдХреНрдпрд╛ рд╣реИ?


рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬреЛ рдЙрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддреА рд╣реИ рдЬрд┐рд╕реЗ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдмрдЪреНрдЪрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ "рдЙрдбрд╝рд╛ рджреА рдЬрд╛рддреА рд╣реИ", рддреЛ рдирд┐рдпрдВрддреНрд░рдХ рдЗрд╕ рдмрдЪреНрдЪреЗ рдХреА рдкреБрдирд░рд╛рд░рдВрдн рд░рдгрдиреАрддрд┐ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдПрд░реНрд▓рд╛рдВрдЧ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рд╕рддрдд рдЙрдкрд▓рдмреНрдзрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред

рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдг рд╡реГрдХреНрд╖ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрд░реНрд▓рд╛рдВрдЧ / рдУрдЯреАрдкреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд░реВрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдмрд╛рд▓ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореВрд▓ рдирд┐рдпрдВрддреНрд░рдХ рдЗрд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ рд░реВрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рддрдХред Erlang рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдореЛрдб рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рд░реВрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдореГрддреНрдпреБ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдирд┐рдпрдВрддреНрд░рдг рдкреЗрдбрд╝ рд╣рдореЗрд╢рд╛ рдЪрд╛рд▓реВ рд░рд╣реЗрдЧрд╛ред

рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд┐рдзрд┐ рд╣реИ : init / 1 ред рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ, рддрд╛рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдП рдХрд┐ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ рдФрд░ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред

рдЕрд▓рдЧ-рдЕрд▓рдЧ eb_server рдФрд░ рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░


рдПрдХ рдЪреАрдЬ рдЬреЛ рдореИрдВрдиреЗ gen_events рдкрд░ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд▓рд╛рдЧреВ рдХреА рдереА, рд╡рд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ eb_server рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдореЗрдердб рдореЗрдВ рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рдкреНрд░реЛрд╕реЗрд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереАред рддрдм рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдЕрд╡рд╕рд░ рдерд╛ рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдерд╛ рдЕрдЧрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЕрдм, рдЬрдм рд╕реЗ рд╣рдо рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ рдореЗрдВ рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред рддреЛ рдЪрд▓реЛ рд╕рд░реНрд╡рд░ рдХреЛрдб рд╕реЗ eb_event_manager рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рд╣рдЯрд╛ рджреЗрдВред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рд▓рд╛рдЗрди 84 рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдЬреЛ рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рдХреЛ eb_server рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ eb_withdrawal_handler рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рдРрдб_рд╣реИрдВрдбрд▓рд░ рдХреЙрд▓ рднреА рдЬреЛрдбрд╝рд╛ ( рдпрджрд┐ рдЖрдк рдЗрд╕ рдЕрдиреБрд╡рд╛рдж рдЪрдХреНрд░ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрдврд╝рддреЗ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдРрд╕рд╛ рдХрд┐рдпрд╛ рдерд╛ред рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХрд╛ рдЖрд░рдВрднреАрдХрд░рдг рд╡рд┐рдзрд┐ рдХреЛрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЕрдиреБрд╡рд╛рджрдХ рдЯрд┐рдкреНрдкрдгреА )ред рдЕрдм eb_server рдореЙрдбреНрдпреВрд▓ рдХреА init рд╡рд┐рдзрд┐ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП:

init([]) ->
eb_event_manager:add_handler(eb_withdrawal_handler),
{ok, dict:new()}.

рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж eb_server.erl рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред

рдирд┐рдпрдВрддреНрд░рдХ рдлреНрд░реЗрдо


рдирд┐рдпрдВрддреНрд░рдХ рд▓рд┐рдЦрдиреЗ рдХреА рдореВрд▓ рд░реВрдкрд░реЗрдЦрд╛ рдпрд╣рд╛рдБ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдПрдХ рдЖрд░рдВрдн рд╡рд┐рдзрд┐ рдФрд░ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдЖрд░рдВрднреАрдХрд░рдг рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ рдЗрд╕ рд╕рдордп рд╡рдВрд╢ рдХреА рд░рдгрдиреАрддрд┐ рдФрд░ рдЧреИрд░-рдореМрдЬреВрдж рдЪрд╢реНрдореЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреА рд╣реИред рдЗрд╕ рдЖрд▓реЗрдЦ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЦрдВрдбреЛрдВ рдореЗрдВ рдкреБрдирд░рд╛рд░рдВрдн рд╕реНрдЯреИрдЧрд░реАрдЬрд╝ рдФрд░ рдЪрд╛рдЗрд▓реНрдб рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдиреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╡рд╛рдпрд░рдлреНрд░реЗрдо рдХреЛ eb_sup.erl рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдордХрд░рдг рдПрдХ рдФрд░ рд╕рдореНрдореЗрд▓рди рд╣реИред рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕рдореВрд╣ рдХреЗ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╣рдореЗрд╢рд╛ " _sup " рдкреНрд░рддреНрдпрдп рд╣реЛрддрд╛ рд╣реИ ред рдпрд╣ рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдорд╛рдирдХ рдЕрднреНрдпрд╛рд╕ рд╣реИред

рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ


рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдкрд╛рд╕ рдПрдХ рдПрдХрд▓ рдкреБрдирд░рд╛рд░рдВрдн рд░рдгрдиреАрддрд┐ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рдВрд╢рдЬ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЙрд╕рдХреЗ рд╡рдВрд╢ рдореЗрдВ рд╕реЗ рдПрдХ рдорд░ рдЬрд╛рдПрдЧрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрдЪреА рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдкреБрдирд░рд╛рд░рдВрдн рд░рдгрдиреАрддрд┐рдпрд╛рдБ рд╣реИрдВ:


рдкреБрдирд░рд╛рд░рдВрдн рдХреА рд░рдгрдиреАрддрд┐ рдирд┐рдореНрди рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХреА рдЧрдИ рд╣реИ:

{RestartStrategy, MaxRetries, MaxTime}

рдпрд╣ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рд░реВрд╕реА рдореЗрдВ рдмреЛрд▓рдирд╛: рдпрджрд┐ рдмрдЪреНрдЪреЗ рдХреЛ рдореИрдХреНрд╕рдЯрд╛рдЗрдо рд╕реЗрдХрдВрдбреНрд╕ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдореИрдХреНрд╕рдЯреНрд░реЗрдЯреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рд░ рдкреБрдирд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рдпрдВрддреНрд░рдХ рд╕рднреА рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЦреБрдж рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдмрдЪреНрдЪреЗ рдХреЗ рдкреБрдирд░рд╛рд░рдВрдн рдХреЗ рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рдВрд╢рдЬ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд┐рдВрдЯреЗрдХреНрд╕ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ


рдирд┐рдпрдВрддреНрд░рдХ рдЗрдирд┐рдЯ рд╡рд┐рдзрд┐ рд╡рдВрд╢рдЬ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╕реВрдЪреА рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдпреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреА рд╣реИ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рдирд┐рдпрдВрддреНрд░рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ "рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ" (рд╕реВрдЪреА рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рд▓реЗрдХрд░ рдЙрд╕рдХреЗ рдЕрдВрдд рддрдХ) рдХреНрд░рдо рдореЗрдВ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рд░рдгрдиреАрддрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рд░реВрдк рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ:

{Id, StartFunc, Restart, Shutdown, Type, Modules}

:
Id = term()
StartFunc = {M,F,A}
M = F = atom()
A = [term()]
Restart = permanent | transient | temporary
Shutdown = brutal_kill | int()>=0 | infinity
Type = worker | supervisor
Modules = [Module] | dynamic
Module = atom()


рд╡рдВрд╢ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рд╕рдореНрдореЗрд▓рди рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдИрдбреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реЛрдВ; рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдИрдбреА рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдЬреЛрдбрд╝реЗрдВред

StartFunc рдкреНрд░рд╛рд░реВрдк {рдореЙрдбреНрдпреВрд▓, рдлрдВрдХреНрд╢рди, рдЖрд░реНрдЧреНрд╕} рдореЗрдВ рдПрдХ рдЯрдкрд▓ рд╣реИ, рдЬреЛ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдордВрдЧрд▓рд╛рдЪрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг : рдкреНрд░рд╛рд░рдВрдн рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ {ok, Pid} , {ok, Pid, тАЛтАЛOther} рдпрд╛ {error, Reason} рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╛рд░рдВрдкрд░рд┐рдХ рдУрдЯреАрдкреА рд╕реНрдЯрд╛рд░реНрдЯ_рд▓рд┐рдВрдХ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдПрдХ рдореЙрдбреНрдпреВрд▓ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЕрдкрдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкреЙрди_рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ ред

рд░рд┐рд╕реНрдЯрд╛рд░реНрдЯ рдКрдкрд░ рдХреЗ рдХреЛрдб рдмреНрд▓реЙрдХ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рддреАрди рдкрд░рдорд╛рдгреБрдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрджрд┐ рдкрд░рдорд╛рдгреБ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣рдореЗрд╢рд╛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдорд╛рди " рдЕрд╕реНрдерд╛рдпреА " рд╣реИ, рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд┐рд░ рдХрднреА рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдФрд░ рдЕрдЧрд░ рдпрд╣ рдорд╛рди " рдХреНрд╖рдгрд┐рдХ " рд╣реИ, рддреЛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╢рдЯрдбрд╛рдЙрди рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╕рдордЭрд╛рддрд╛ рд╣реИ рдХрд┐ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред Brutal_kull рдкрд░рдорд╛рдгреБ рдЕрдкрдиреА рд╕рдорд╛рдкреНрддрд┐ рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдП рдмрд┐рдирд╛ рдмрдЪреНрдЪреЗ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд╢реВрдиреНрдп рд╕реЗ рдКрдкрд░ рдХреЛрдИ рднреА рдкреВрд░реНрдгрд╛рдВрдХ рд╕рд╣реА рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдордп рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкрд░рдорд╛рдгреБ " рдЕрдирдиреНрддрддрд╛ " рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╡рд┐рдирдореНрд░рддрд╛ рд╕реЗ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд░реБрдХрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдЧрд╛ред

рдкреНрд░рдХрд╛рд░ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рдВрд╢ рдХреНрдпрд╛ рд╣реИ: рдПрдХ рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдХ рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ред рдпрджрд┐ рдпрд╣ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ, рддреЛ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдкрд░рдорд╛рдгреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкрд░рдорд╛рдгреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдореЙрдбреНрдпреВрд▓ рдпрд╛ рддреЛ рдореЙрдбреНрдпреВрд▓ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╛ "рдЧрддрд┐рд╢реАрд▓" рдкрд░рдорд╛рдгреБред рдЗрд╕ рдорд╛рди рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдореЗрдВ 95% рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рдПрдХ рдПрдХрд▓ рдУрдЯреАрдкреА рдлреАрдбрдмреИрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ gen_event рд╣реИ рддреЛ "рдбрд╛рдпрдиреЗрдорд┐рдХ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЗрд╕рдХрд╛ рдкреНрд░рднрд╛рд╡ рдЧрддрд┐рд╢реАрд▓ рд╣реИ (рд╡рд┐рднрд┐рдиреНрди рд╣реИрдВрдбрд▓рд░ рдЬрд┐рдиреНрд╣реЗрдВ рддреБрд░рдВрдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдЗрд╕ рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд░рд┐рд▓реАрдЬрд╝ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓реЗрдЦ рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рдкреНрд░рдмрдВрдзрди рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╡рд╛рд╣! рдЗрддрдиреЗ рдХрдо рд╕рдордп рдореЗрдВ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдиреА рдЬрд╛рдирдХрд╛рд░реАред рд╡рдВрд╢рдЬ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреБрдирд░рд╛рд░рдВрдн рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдпрд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХрд╛рдлреА рд╕рдордп рд▓рдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рддреБрд░рдВрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рд╣рдореЗрд╢рд╛ рдХрдВрдЯреНрд░реЛрд▓рд░ рдореИрдиреБрдЕрд▓ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд░рд┐рдлреНрд░реЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рд╡рдВрд╢рдЬ рдХрд▓реНрдкрдирд╛


рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рдмрд╛рдд рдПрдХ рдШрдЯрдирд╛ рдкреНрд░рдмрдВрдзрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрд╡рд░ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╡рдВрд╢рдЬ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

EventManager = {eb_event_manager,{eb_event_manager, start_link,[]},
permanent,2000,worker,dynamic}.

рд╡рдВрд╢ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдкрд░ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдФрд░ рд╡рд┐рд╡рд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ! рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ-рджреЛ рдорд┐рдирдЯ рдореЗрдВ рдХреЛрдб рдХреЛ рдЯрдЯреЛрд▓ рд▓реЗрдВ рдФрд░ рднреВрд▓ рдЬрд╛рдПрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдПрдХ "рдЕрдЬреАрдм" рдЪреАрдЬ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реВрдЪреА рдХреЛ "рдбрд╛рдпрдирд╛рдорд┐рдХ" ( рдЧрддрд┐рд╢реАрд▓ рд╣реИ; рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдкрд░рдорд╛рдгреБ - рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рджрдХ рд╣реИ ) рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо gen_event рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реВрдЪреА рдЧрддрд┐рд╢реАрд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣реИрдВрдбрд▓рд░ рдЗрд╕рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ (рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рдВрдЦреНрдпрд╛ рдХрд╛рд░реНрдп рдХреЗ рджреМрд░рд╛рди рдмрджрд▓ рд╕рдХрддреА рд╣реИ - рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджрдХ )ред рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдЙрди рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рд╡рдВрд╢рд╛рд╡рд▓реА рдРрдирдХ рд╕рд╣рд┐рдд рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдзрд┐ рд╣реИ:

init([]) ->
EventManager = {eb_event_manager,{eb_event_manager, start_link,[]},
permanent,2000,worker,dynamic},
{ok,{{one_for_one,5,10}, [EventManager]}}.

рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рдВрд╢ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдореЗрдВ рд╕реАрдзреЗ рдЪрд╢реНрдорд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЗрди рдЪрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВред рдПрд░реНрд▓рд╛рдВрдЧ рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдХреЙрд░реНрдиреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рддрдм рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИ рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рдЯреНрдпреВрдкрд▓реНрд╕ рдХреЛ рдЗрддрдиреА рдЧрд╣рд░рд╛рдИ рд╕реЗ рдПрдореНрдмреЗрдб рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдпрд╣ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдХрд╣рд╛рдБ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдПрдХ рдЪрд░ рдкрд░ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред

рдпрджрд┐ рдЖрдк рдЕрдм рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ!), рддреЛ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд start_link рд╡рд┐рдзрд┐ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬрд╣рд╛рдБ (eb_event_manager) рджрд░реНрдЬ рдХрд░реЗрдВ, рдФрд░ рдХрдорд╛рдВрдб рдХреЛ рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ ( pid ) рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░, рдпрджрд┐ рдЖрдк рдПрдХреНрдЬрд┐рдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдорд╛рд░рддреЗ рд╣реИрдВ (рдЬрд╣рд╛рдБ (eb_sup), рдорд╛рд░рддреЗ рд╣реИрдВ) , рдФрд░ рдлрд┐рд░ eb_event_manager рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд╛рд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдордЬрд╝реЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП eb_event_manager рдХреЛ рдорд╛рд░ рджреЗрдВред рдХреБрдЫ рд╕реЗрдХрдВрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдЙрд╕реЗ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП!

рд╕рд░реНрд╡рд░ рдФрд░ рдП.рдЯреА.рдПрдо.


рд╡рдВрд╢ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдФрд░ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреА рдорджрдж рд╕реЗ, рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдФрд░ рдмреИрдВрдХ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рддреЛ рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪреБрдиреМрддреА рдЖрдкрдХреЛ рд▓реБрднрд╛ рд░рд╣реА рд╣реИ, рддреЛ рдЕрднреА рдХрд░реЗрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдореИрдВрдиреЗ рдиреАрдЪреЗ рдЙрди рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджрд┐рдпрд╛ рд╣реИ:

Server = {eb_server, {eb_server, start_link, []},
permanent,2000,worker,[eb_server]},
ATM = {eb_atm, {eb_atm, start_link, []},
permanent,2000,worker,[eb_atm]},


рдЗрди рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЗрдВ рдЖрд░рдВрднрд┐рдХ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рд░рдЦрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред

рдЖрдк рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ eb_sup.erl рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рд░рдирдЯрд╛рдЗрдо рдкрд░ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдирд┐рдХрд╛рд▓рдирд╛


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЗрд╕ рддрдВрддреНрд░ рдХреЛ ErlyBank рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрд╛рдХрд┐рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖ рд╕рдХрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ start_child рдФрд░ delete_dild рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдирд┐рдпрдВрддреНрд░рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдмрдЪреНрдЪреЗ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдиреЛрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛ред

рд╡реЗ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдмрддрд╛рдП рдЧрдП рдЧрд╛рдЗрдб рдХреЛ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдпрд╛; рдЖрдк рд╕реАрдзреЗ рдЗрд╕рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖


рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдирд┐рдпрдВрддреНрд░рдг рд╡реГрдХреНрд╖, рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рд░рдгрдиреАрддрд┐рдпрд╛рдВ, рд╡рдВрд╢рдЬ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ, рдФрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╡рдВрд╢ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдЬреИрд╕реА рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рдкреЗрд╢ рдХреАрдВред

рдпрд╣ рдЗрд░рд▓рдВрдЧ / OTP рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд░рд┐рдЪрдп рдореЗрдВ рдЪреМрдерд╛ рд▓реЗрдЦ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдкрд╛рдВрдЪрд╡рд╛рдВ рд▓реЗрдЦ рддреИрдпрд╛рд░ рд╣реИ, рдЕрдЧрд▓реЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдЖрд╡реЗрджрди рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛ред



рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓реЗрдЦ

4. ErlyBank рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рд╡рд░реНрддрдорд╛рди рд▓реЗрдЦ)
3. gen_event рдХрд╛ рдкрд░рд┐рдЪрдп: рдЪрд╛рд▓рд╛рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕реВрдЪрдирд╛рдПрдБ

рдЕрдиреБрд╡рд╛рдж рдХрд╛ рд▓реЗрдЦрдХ tiesto рд╣реИ :
2. gen_fsm рдХрд╛ рдкрд░рд┐рдЪрдп: ErlyBank ATM
1. gen_server рдХрд╛ рдкрд░рд┐рдЪрдп: ErlyBank
0. рдУрдкрди рдЯреЗрд▓рд┐рдХреЙрдо рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо / рдУрдкрди рдЯреЗрд▓реАрдХрдореНрдпреВрдирд┐рдХреЗрд╢рди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (OTP / OTP) рдХрд╛ рдкрд░рд┐рдЪрдп
-1ред рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕

Source: https://habr.com/ru/post/In129277/


All Articles