libprofile
libprofile

Introduction

Profile service is a new subsysten that consists of two parts:

  • profiled - daemon process that keeps track of current profile settings
  • libprofile - client library for accessing the profile data.

Architecture

High level view to system utilizing profile service:

  1. Profile daemon supports any number of clients
  2. Application code includes libprofile.h
  3. Application binary is linked against libprofile.so
  4. Libprofile utilizes D-Bus to communicate with the server
  5. Configuration data files define default profile values
  6. Profile daemon accepts request and sends signals on dbus
  7. Changes to profile values are stored to a file
  8. As is the name of currently active profile

ASCII art diagram of the above:

+-------+ +-------+ +-------+
| | | | | |
| app 1 | | app 2 | | app N | 1: Applications
| | | | | |
--------------------------------- 2: libprofile.h
| |
| libprofile |
| | 3: API library
+-------------+
^ ^ ^
| | |
D-Bus 4: IPC communication
+--------+ | | |
| static | v v v 5: Default values
| config | +----------+
| files |--->| |
+--------+ | profiled | 6:Server Process
| |
+----------+
^ ^
| |
| |
v v
+---------+ +---------+
| dynamic | | current | 7: Modified values
| config | | profile | 8: Active profile
| file | | file |
+---------+ +---------+

SVN

All source code is stored in subversion repository dms, subdirectory profiled.