|
1 | | -# Events |
2 | | - |
3 | | -Pode lets you register scripts to be run when certain server events are triggered. The following types of events can have scripts registered: |
4 | | - |
5 | | -| Event | Description | Runspaces Open? | |
6 | | -| ---------- | -------------------------------------------------------------------------------------------------- | --------------- | |
7 | | -| Starting | Triggered during the initialization phase of the server, just after configuration has been loaded. | No | |
8 | | -| Start | Triggered just after the server's `-ScriptBlock` has been invoked. | No | |
9 | | -| Running | Triggered after all runspaces have been opened and are running. | Yes | |
10 | | -| Restarting | Triggered just after a server restarted is initiated, but just before clean-up has begun. | Yes | |
11 | | -| Restart | Triggered after the server restarts, after the clean-up has occurred. | Yes | |
12 | | -| Terminate | Triggered just before the server terminates. | Yes | |
13 | | -| Crash | Triggered if the server terminates due to an unhandled exception being thrown. | Unstable | |
14 | | -| Stop | Triggered when the server stops - after either a Terminate or Crash. | Yes | |
15 | | -| Suspending | Triggered when the server begins the suspension process. | Yes | |
16 | | -| Suspend | Triggered when the server completes the suspension process. | Yes | |
17 | | -| Resuming | Triggered when the server begins the resuming process after suspension | Yes | |
18 | | -| Resume | Triggered when the server resumes operation after suspension. | Yes | |
19 | | -| Enable | Triggered when the server is enabled. | Yes | |
20 | | -| Disable | Triggered when the server is disabled. | No | |
21 | | -| Browser | Triggered when the server is told to open in a browser. | Yes | |
22 | | - |
23 | | -And these events are triggered in the following order: |
24 | | - |
25 | | -```mermaid |
26 | | -graph TD |
27 | | - Launch((Launch)) --> Starting(Starting) |
28 | | - Starting --> Start(Start) |
29 | | - Start --> Running(Running) |
30 | | - Running --natural stop --> Terminate(Terminate) |
31 | | - Running --unhandled exception --> Crash(Crash) |
32 | | - Running -- internal restart --> Restarting(Restarting) |
33 | | - Running -- open --> Browser(Browser) |
34 | | - Running --> Suspending(Suspending) --> Suspend(Suspend) |
35 | | - Suspend --> Resuming(Resuming) --> Resume([Resume]) |
36 | | - Running --> Disable(Disable) --> Enable([Enable]) |
37 | | - Restarting --> Restart(Restart) |
38 | | - Restart --> Starting |
39 | | - Terminate --> Stop(Stop) |
40 | | - Crash --> Stop |
41 | | - Stop --> End((End)) |
42 | | -``` |
43 | | - |
44 | | -!!! note |
45 | | - Resume and Enable both end up back at the "Running" state, but will not trigger the Running event. |
46 | | - |
47 | | -## Register |
48 | | - |
49 | | -You can use [`Register-PodeEvent`](../../Functions/Events/Register-PodeEvent) to register a scriptblock that can be run when a server level event within Pode is triggered. Each event can have multiple scripts registered. |
50 | | - |
51 | | -For example, to register for when the server Starts: |
52 | | - |
53 | | -```powershell |
54 | | -Register-PodeEvent -Type Start -Name 'OnStart' -ScriptBlock { |
55 | | - # inform a portal, write a log, etc |
56 | | -} |
57 | | -``` |
58 | | - |
59 | | -The scriptblock supplied to `Register-PodeEvent` also supports `$using:` variables. You can retrieve a registered script using [`Get-PodeEvent`](../../Functions/Events/Get-PodeEvent): |
60 | | - |
61 | | -```powershell |
62 | | -$evt = Get-PodeEvent -Type Start -Name 'OnStart' |
63 | | -``` |
64 | | - |
65 | | -### Event Data |
66 | | - |
67 | | -Various metadata about the server event is supplied to your scriptblock, under the `$TriggeredEvent` variable: |
68 | | - |
69 | | -| Property | Description | |
70 | | -| --------- | ------------------------------------------------------------------------------------- | |
71 | | -| Lockable | A global lockable value you can use for `Lock-PodeObject` | |
72 | | -| Metadata | Any additional metadata about the event, you can add your own properties here as well | |
73 | | -| Type | The type of event triggered - Start, Running, Restart, etc. | |
74 | | -| Timestamp | When the event was triggered, in UTC | |
75 | | - |
76 | | -## Unregister |
77 | | - |
78 | | -To unregister an previous event registration, simply use [`Unregister-PodeEvent`](../../Functions/Events/Unregister-PodeEvent): |
79 | | - |
80 | | - |
81 | | -```powershell |
82 | | -# to remove the Start event from above: |
83 | | -Unregister-PodeEvent -Type Start -Name 'OnStart' |
84 | | -``` |
85 | | - |
86 | | -## Other Events |
87 | | - |
88 | | -The events listed above are Server related events, you can find various other events for other functionality listed below: |
89 | | - |
90 | | -* [Authentication](../Authentication/Overview#events) |
91 | | -* [Signals](../WebSockets/Endpoints#events) |
92 | | -* [SSE](../Routes/Utilities/SSE#events) |
| 1 | +# Events |
| 2 | + |
| 3 | +Pode lets you register scripts to be run when certain server events are triggered. The following types of events can have scripts registered: |
| 4 | + |
| 5 | +| Event | Description | Runspaces Open? | |
| 6 | +| ---------- | -------------------------------------------------------------------------------------------------- | --------------- | |
| 7 | +| Starting | Triggered during the initialization phase of the server, just after configuration has been loaded. | No | |
| 8 | +| Start | Triggered just after the server's `-ScriptBlock` has been invoked. | No | |
| 9 | +| Running | Triggered after all runspaces have been opened and are running. | Yes | |
| 10 | +| Restarting | Triggered just after a server restarted is initiated, but just before clean-up has begun. | Yes | |
| 11 | +| Restart | Triggered after the server restarts, after the clean-up has occurred. | Yes | |
| 12 | +| Terminate | Triggered just before the server terminates. | Yes | |
| 13 | +| Crash | Triggered if the server terminates due to an unhandled exception being thrown. | Unstable | |
| 14 | +| Stop | Triggered when the server stops - after either a Terminate or Crash. | Yes | |
| 15 | +| Suspending | Triggered when the server begins the suspension process. | Yes | |
| 16 | +| Suspend | Triggered when the server completes the suspension process. | Yes | |
| 17 | +| Resuming | Triggered when the server begins the resuming process after suspension | Yes | |
| 18 | +| Resume | Triggered when the server resumes operation after suspension. | Yes | |
| 19 | +| Enable | Triggered when the server is enabled. | Yes | |
| 20 | +| Disable | Triggered when the server is disabled. | No | |
| 21 | +| Browser | Triggered when the server is told to open in a browser. | Yes | |
| 22 | + |
| 23 | +And these events are triggered in the following order: |
| 24 | + |
| 25 | +```mermaid |
| 26 | +graph TD |
| 27 | + Launch((Launch)) --> Starting(Starting) |
| 28 | + Starting --> Start(Start) |
| 29 | + Start --> Running(Running) |
| 30 | + Running --natural stop --> Terminate(Terminate) |
| 31 | + Running --unhandled exception --> Crash(Crash) |
| 32 | + Running -- internal restart --> Restarting(Restarting) |
| 33 | + Running -- open --> Browser(Browser) |
| 34 | + Running --> Suspending(Suspending) --> Suspend(Suspend) |
| 35 | + Suspend --> Resuming(Resuming) --> Resume([Resume]) |
| 36 | + Running --> Disable(Disable) --> Enable([Enable]) |
| 37 | + Restarting --> Restart(Restart) |
| 38 | + Restart --> Starting |
| 39 | + Terminate --> Stop(Stop) |
| 40 | + Crash --> Stop |
| 41 | + Stop --> End((End)) |
| 42 | +``` |
| 43 | + |
| 44 | +!!! note |
| 45 | + Resume and Enable both end up back at the "Running" state, but will not trigger the Running event. |
| 46 | + |
| 47 | +## Register |
| 48 | + |
| 49 | +You can use [`Register-PodeEvent`](../../Functions/Events/Register-PodeEvent) to register a scriptblock that can be run when a server level event within Pode is triggered. Each event can have multiple scripts registered. |
| 50 | + |
| 51 | +For example, to register for when the server Starts: |
| 52 | + |
| 53 | +```powershell |
| 54 | +Register-PodeEvent -Type Start -Name 'OnStart' -ScriptBlock { |
| 55 | + # inform a portal, write a log, etc |
| 56 | +} |
| 57 | +``` |
| 58 | + |
| 59 | +The scriptblock supplied to `Register-PodeEvent` also supports `$using:` variables. You can retrieve a registered script using [`Get-PodeEvent`](../../Functions/Events/Get-PodeEvent): |
| 60 | + |
| 61 | +```powershell |
| 62 | +$evt = Get-PodeEvent -Type Start -Name 'OnStart' |
| 63 | +``` |
| 64 | + |
| 65 | +### Event Data |
| 66 | + |
| 67 | +Various metadata about the server event is supplied to your scriptblock, under the `$TriggeredEvent` variable: |
| 68 | + |
| 69 | +| Property | Description | |
| 70 | +| --------- | ------------------------------------------------------------------------------------- | |
| 71 | +| Lockable | A global lockable value you can use for `Lock-PodeObject` | |
| 72 | +| Metadata | Any additional metadata about the event, you can add your own properties here as well | |
| 73 | +| Type | The type of event triggered - Start, Running, Restart, etc. | |
| 74 | +| Timestamp | When the event was triggered, in UTC | |
| 75 | + |
| 76 | +## Unregister |
| 77 | + |
| 78 | +To unregister an previous event registration, simply use [`Unregister-PodeEvent`](../../Functions/Events/Unregister-PodeEvent): |
| 79 | + |
| 80 | + |
| 81 | +```powershell |
| 82 | +# to remove the Start event from above: |
| 83 | +Unregister-PodeEvent -Type Start -Name 'OnStart' |
| 84 | +``` |
| 85 | + |
| 86 | +## Other Events |
| 87 | + |
| 88 | +The events listed above are Server related events, you can find various other events for other functionality listed below: |
| 89 | + |
| 90 | +* [Authentication](../Authentication/Overview#events) |
| 91 | +* [Signals](../WebSockets/Endpoints#events) |
| 92 | +* [SSE](../Routes/Utilities/SSE#events) |
0 commit comments