OTP Design Principles

Version 5.6.5

Bibliography | Glossary | Cover | Top

Table of Contents


1 Overview
1.1 Supervision Trees
1.2 Behaviours
1.3 Applications
1.4 Releases
1.5 Release Handling

2 Gen_Server Behaviour
2.1 Client-Server Principles
2.2 Example
2.3 Starting a Gen_Server
2.4 Synchronous Requests - Call
2.5 Asynchronous Requests - Cast
2.6 Stopping
2.7 Handling Other Messages

3 Gen_Fsm Behaviour
3.1 Finite State Machines
3.2 Example
3.3 Starting a Gen_Fsm
3.4 Notifying About Events
3.5 Timeouts
3.6 All State Events
3.7 Stopping
3.8 Handling Other Messages

4 Gen_Event Behaviour
4.1 Event Handling Principles
4.2 Example
4.3 Starting an Event Manager
4.4 Adding an Event Handler
4.5 Notifying About Events
4.6 Deleting an Event Handler
4.7 Stopping

5 Supervisor Behaviour
5.1 Supervision Principles
5.2 Example
5.3 Restart Strategy
5.4 Maximum Restart Frequency
5.5 Child Specification
5.6 Starting a Supervisor
5.7 Adding a Child Process
5.8 Stopping a Child Process
5.9 Simple-One-For-One Supervisors
5.10 Stopping

6 Sys and Proc_Lib
6.1 Simple Debugging
6.2 Special Processes
6.3 User-Defined Behaviours

7 Applications
7.1 Application Concept
7.2 Application Callback Module
7.3 Application Resource File
7.4 Directory Structure
7.5 Application Controller
7.6 Loading and Unloading Applications
7.7 Starting and Stopping Applications
7.8 Configuring an Application
7.9 Application Start Types

8 Included Applications
8.1 Definition
8.2 Specifying Included Applications
8.3 Synchronizing Processes During Startup

9 Distributed Applications
9.1 Definition
9.2 Specifying Distributed Applications
9.3 Starting and Stopping Distributed Applications
9.4 Failover
9.5 Takeover

10 Releases
10.1 Release Concept
10.2 Release Resource File
10.3 Generating Boot Scripts
10.4 Creating a Release Package
10.5 Directory Structure

11 Release Handling
11.1 Release Handling Principles
11.2 Requirements
11.3 Distributed Systems
11.4 Release Handling Instructions
11.5 Application Upgrade File
11.6 Release Upgrade File
11.7 Installing a Release
11.8 Updating Application Specifications

12 Appup Cookbook
12.1 Changing a Functional Module
12.2 Changing a Residence Module
12.3 Changing a Callback Module
12.4 Changing Internal State
12.5 Module Dependencies
12.6 Changing Code For a Special Process
12.7 Changing a Supervisor
12.8 Adding or Deleting a Module
12.9 Starting or Terminating a Process
12.10 Adding or Removing an Application
12.11 Restarting an Application
12.12 Changing an Application Specification
12.13 Changing Application Configuration
12.14 Changing Included Applications
12.15 Changing Non-Erlang Code
12.16 Emulator Restart