Power Manager: Developer

Dragon Systems Software Limited (DssW)

Graham Miln

DssW
Director
Dragon Systems Software Limited

4.0.0

2010-08-25-15-14-32


Table of Contents

I. API Overview
1. Getting Started
Using Power Manager Engine's C API
Creating a Connection
Follow the Create/Copy Rule
Authenticating Remote Connections
Passive: Username and Password
Interactive: Command Line Tool
PMAuthenticatorCreate
Providing NULL
CFAuthenticator: Using an authenticator
Writing your own authenticator
2. Supporting Agents, Daemons, and Utilities
pmctl — control tool.
pmnotify.app — notification agent.
pmrights — authorisation rights tool.
pmuli — universal login item tool.
pmuser — per-session daemon.
pmuser.app — universal login item.
Power Manager Access — user interface assistant.
Remove Power Manager — removal tool.
3. Supporting Bonjour
Power Manager's Service Types
pm - DssW Power Manager protocol
Defined TXT Keys
II. API Reference
I. Application Programmer Interfaces (APIs)
pme.api.pmdctl — Primary interface for the Power Manager Engine.
II. Build
build.version — Engine's release version.
build.restart — Restart the engine and associated processes.
III. Client
client.computername — Computer's name.
client.localhostname — Computer's local host name.
client.ethernetaddress — Primary ethernet address.
client.ethernetaddresses — All ethernet addresses.
client.machinemodel — Machine's model type.
IV. Event Store
eventstore.events — Available events that can be triggered or performed.
eventstore.store — Store zero or more events.
eventstore.remove — Remove an event.
eventstore.history — Event history.
V. Legal
legal.licence — Engine's licence details.
legal.license — Set the licence details.
legal.revoke — Remove all licence information.
VI. Listen
listen.sockets — Sockets the engine accepts incoming connections on.
listen.applysocket — Set a socket to listen for incoming connections on.
listen.removesocket — Remove a socket.
VII. Log
log.recent — Audit log tail.
log.filterlevel — Filtering out log messages with levels lower than this.
log.setfilterlevel — Set the filter level for new log messages.
VIII. Notifications
notifications.current — Notifying date and time based triggers with events.
notifications.warning — Warnings of host affecting actions.
notifications.warningperiod — Seconds to display warnings.
notifications.notifyperiod — Seconds to display notifications.
notifications.setwarningperiod — Set the seconds to display warnings.
notifications.setnotifyperiod — Sets seconds before an Event the user is notified.
IX. On Demand
ondemand.available — Available on demand events.
ondemand.perform — Perform an event's actions.
X. Scheduler
scheduler.enabled — Can events be triggered.
scheduler.pending — Date and time based triggers with events.
scheduler.active — Active events.
scheduler.assistants — Local assistant signatures.
scheduler.setenabled — Set the Scheduler's enabled state.
scheduler.cancel — Cancel a pending queued trigger.
scheduler.adjust — Adjust a pending trigger date.
scheduler.reset — Reset a pending trigger.
XI. Time Zone
timezone.name — name
timezone.utcoffset — UTC offset in seconds
XII. Structures
SSL — A description of a SSL configuration.
action — Task to perform.
action sleep — Put the computer to sleep.
action shut down — Shut down the computer.
action restart — Restart the computer.
action log out — Log out all users.
action fast user switch — Switch to the Login Window.
action notification — Post a notification.
action await notification — Wait for a notification.
action await relative date — Wait for a period of time.
action execute external — Execute an external process.
action launch application — Launch an application.
action warn — Warn users of imminent host affecting action.
action await power on — Wait for the computer to power on.
action await sample — Wait for the sample to successfully conclude.
active event — Active event instance.
application description — Description for launching an external process.
assistant — Assistant details.
condition — Description of a testable condition that resolves to a boolean.
condition boolean — A constant condition.
condition delayed boolean — A delayed constant condition.
condition days — Conditional on the day of the week.
condition date range — Conditional on the date falling within a specific period.
condition time range — Conditional on the time now falling within a specific period.
condition execute external — Conditional on the external executable's exit status.
condition sample — Conditional on a sample's successful conclusion.
condition running processes — Conditional on whether specific processes are running.
condition power assertions — Conditional on whether other processes have power assertions set.
criteria — Group of conditions to test.
event — Event containing triggers to observe, conditions to test, and actions to perform.
event history — Event history.
external — Description for executing an external process.
external executable — Execute the external executable.
external inline — Execute the inline content.
external criterion — Criterion for judging an external executable sample.
external criterion interpret — Interpret the output as a number.
external criterion contains — Output contains a value.
licence — Licence details for this Power Manager Engine.
log message
process signature — Process signature provides a robust means of identifying a running process.
process signature bundle identifier — Match a process's bundle identifier.
process signature name — Match a process's bundle or executable name.
process signature localised name — Match a process's localised name.
queued trigger — Queued trigger instance.
queued warning — Host wide warning.
resource limits — Constraints for external processes.
sample — Description for sampling.
sample execute external — Sample from an external executable.
sample criterion — Criterion for concluding a sample.
socket — A description of a TCP/IP socket.
trigger — Description of an external event or potential change in state to watch.
trigger once — Trigger once on a given time and date.
trigger daily — Trigger at a given time on given days of the week.
trigger after inactivity — Trigger after a given period of user inactivity.
trigger notification — Trigger on a notification.
trigger power on — Trigger when host powers on.
trigger start up — Trigger when host starts up.
trigger log in — Trigger when a user logs in.
trigger log out — Trigger when a user logs out.
trigger sample — Trigger when a sample successfully concludes.
XIII. Elements
SSL allowances — SSL allow.
SSL level — SSL level.
action type — Types of action.
application behaviour — Application launch behaviours.
application visibility — Application visibility.
behaviour — Event wide behaviours.
comparison — Value comparison methods.
comparison option — Comparison options.
condition type — Types of condition.
day — Days of the week.
days — Days of the week. Any combination of unique days.
delay by seconds — Seconds to delay by.
drift — Acceptable date and time drift.
encoding — Encoding formats.
event activity — Active event state.
external continues — When to continue performing remaining actions.
external criterion type — Types of external criterion.
external files — Special case external files.
external type — Types of externals.
external user types — Types of special case users.
image — Built-in image identifiers.
licence state — Available licence states.
message level — Levels of log messages.
notification — Notification.
port — TCP/IP port.
power — Power event.
process signature type — Types of process signature.
protocol family — Supported network protocols.
quiet — Minimise notifications.
requires — How many must resolve to true.
sample criterion type — Types of sample criterion.
scatter — Seconds, plus and minus, to scatter a date and time by.
scope — Scope of notification.
socket options — Socket options.
socket state — Socket states.
source type — Types of sample sources.
time out — Duration after which a silent connection is disconnected.
trigger type — Types of trigger.
unique ID — Unique identifier (ID).
value — Value to compare against.
Index

List of Examples

1.1. Create a PMConnection
1.2. Connect to the default engine
1.3. Default main.c of a Core Services XCode 3.2 project
1.4. Include the PowerManager framework headers.
1.5. Create a PMConnectionRef.
1.6. Create and set a PMAuthenticator.
1.7. Connect to a URL and enter the runloop.
1.8. Create and set a custom PMAuthenticator.
1.9. Create a response array and iterate over the requests.
1.10. Get the request type for request.
1.11. Handle the prompt request type.
1.12. Handle the informative message request type.
1.13. Handle the error message request type.
2.1. Integer coercions
2.2. Boolean coercions
2.3. Date coercions
17. C: build.version
18. Objective-C: build.version
19. AppleScript: build.version
20. Shell: build.version
21. C: Minimal build.restart
22. C: client.computername
23. Objective-C: client.computername
24. AppleScript: client.computername
25. Shell: client.computername
26. C: client.localhostname
27. Objective-C: client.localhostname
28. AppleScript: client.localhostname
29. Shell: client.localhostname
30. C: client.ethernetaddress
31. Objective-C: client.ethernetaddress
32. AppleScript: client.ethernetaddress
33. Shell: client.ethernetaddress
34. C: client.ethernetaddresses
35. Objective-C: client.ethernetaddresses
36. AppleScript: client.ethernetaddresses
37. Shell: client.ethernetaddresses
38. C: client.machinemodel
39. Objective-C: client.machinemodel
40. AppleScript: client.machinemodel
41. Shell: client.machinemodel
42. C: eventstore.events
43. Objective-C: eventstore.events
44. AppleScript: eventstore.events
45. Shell: eventstore.events
46. C: Minimal eventstore.store
47. C: Minimal eventstore.remove
48. C: Minimal eventstore.history
49. C: legal.licence
50. Objective-C: legal.licence
51. AppleScript: legal.licence
52. Shell: legal.licence
53. C: Minimal legal.license
54. C: Minimal legal.revoke
55. C: listen.sockets
56. Objective-C: listen.sockets
57. AppleScript: listen.sockets
58. Shell: listen.sockets
59. C: Minimal listen.applysocket
60. C: Minimal listen.removesocket
61. C: log.recent
62. Objective-C: log.recent
63. AppleScript: log.recent
64. Shell: log.recent
65. C: log.filterlevel
66. Objective-C: log.filterlevel
67. AppleScript: log.filterlevel
68. Shell: log.filterlevel
69. C: Minimal log.setfilterlevel
70. C: notifications.current
71. Objective-C: notifications.current
72. AppleScript: notifications.current
73. Shell: notifications.current
74. C: notifications.warning
75. Objective-C: notifications.warning
76. AppleScript: notifications.warning
77. Shell: notifications.warning
78. C: notifications.warningperiod
79. Objective-C: notifications.warningperiod
80. AppleScript: notifications.warningperiod
81. Shell: notifications.warningperiod
82. C: notifications.notifyperiod
83. Objective-C: notifications.notifyperiod
84. AppleScript: notifications.notifyperiod
85. Shell: notifications.notifyperiod
86. C: Minimal notifications.setwarningperiod
87. C: Minimal notifications.setnotifyperiod
88. C: ondemand.available
89. Objective-C: ondemand.available
90. AppleScript: ondemand.available
91. Shell: ondemand.available
92. C: Minimal ondemand.perform
93. C: scheduler.enabled
94. Objective-C: scheduler.enabled
95. AppleScript: scheduler.enabled
96. Shell: scheduler.enabled
97. C: scheduler.pending
98. Objective-C: scheduler.pending
99. AppleScript: scheduler.pending
100. Shell: scheduler.pending
101. C: scheduler.active
102. Objective-C: scheduler.active
103. AppleScript: scheduler.active
104. Shell: scheduler.active
105. C: scheduler.assistants
106. Objective-C: scheduler.assistants
107. AppleScript: scheduler.assistants
108. Shell: scheduler.assistants
109. C: Minimal scheduler.setenabled
110. C: Minimal scheduler.cancel
111. C: Minimal scheduler.adjust
112. C: Minimal scheduler.reset
113. C: timezone.name
114. Objective-C: timezone.name
115. AppleScript: timezone.name
116. Shell: timezone.name
117. C: timezone.utcoffset
118. Objective-C: timezone.utcoffset
119. AppleScript: timezone.utcoffset
120. Shell: timezone.utcoffset