OTP Design Principles
User's Guide
Version 12.0
User's Guide
PDF
Top
Expand All
Contract All
Chapters
Overview
Top of chapter
Supervision Trees
Behaviours
Applications
Releases
Release Handling
gen_server Behaviour
Top of chapter
Client-Server Principles
Example
Starting a Gen_Server
Synchronous Requests - Call
Asynchronous Requests - Cast
Stopping
Handling Other Messages
gen_statem Behaviour
Top of chapter
Event-Driven State Machines
When to use gen_statem
Callback Module
Callback Modes
State Callback
Transition Actions
Event Types and Event Content
State Enter Calls
Time-Outs
Example
Starting gen_statem
Handling Events
State Time-Outs
All State Events
One State Callback
Stopping
Event Time-Outs
Generic Time-Outs
Erlang Timers
Postponing Events
State Enter Actions
Inserted Events
Example Revisited
Filter the State
Complex State
Hibernation
gen_event Behaviour
Top of chapter
Event Handling Principles
Example
Starting an Event Manager
Adding an Event Handler
Notifying about Events
Deleting an Event Handler
Stopping
Handling Other Messages
Supervisor Behaviour
Top of chapter
Supervision Principles
Example
Supervisor Flags
Restart Strategy
Maximum Restart Intensity
Child Specification
Starting a Supervisor
Adding a Child Process
Stopping a Child Process
Simplified one_for_one Supervisors
Stopping
sys and proc_lib
Top of chapter
Simple Debugging
Special Processes
User-Defined Behaviours
Applications
Top of chapter
Application Concept
Application Callback Module
Application Resource File
Directory Structure
Application Controller
Loading and Unloading Applications
Starting and Stopping Applications
Configuring an Application
Application Start Types
Included Applications
Top of chapter
Introduction
Specifying Included Applications
Synchronizing Processes during Startup
Distributed Applications
Top of chapter
Introduction
Specifying Distributed Applications
Starting and Stopping Distributed Applications
Failover
Takeover
Releases
Top of chapter
Release Concept
Release Resource File
Generating Boot Scripts
Creating a Release Package
Directory Structure
Release Handling
Top of chapter
Release Handling Principles
Requirements
Distributed Systems
Release Handling Instructions
Application Upgrade File
Release Upgrade File
Installing a Release
Updating Application Specifications
Appup Cookbook
Top of chapter
Changing a Functional Module
Changing a Residence Module
Changing a Callback Module
Changing Internal State
Module Dependencies
Changing Code for a Special Process
Changing a Supervisor
Adding or Deleting a Module
Starting or Terminating a Process
Adding or Removing an Application
Restarting an Application
Changing an Application Specification
Changing Application Configuration
Changing Included Applications
Changing Non-Erlang Code
Emulator Restart and Upgrade
Emulator Upgrade From Pre OTP R15
OTP Design Principles User's Guide
Version 12.0
February 23, 2021