~ubuntu-branches/ubuntu/oneiric/enigmail/oneiric-updates

« back to all changes in this revision

Viewing changes to extensions/enigmail/ipc/docu.txt

  • Committer: Bazaar Package Importer
  • Author(s): Alexander Sack
  • Date: 2010-04-10 01:42:24 UTC
  • Revision ID: james.westby@ubuntu.com-20100410014224-fbq9ui5x3b0h2t36
Tags: 2:1.0.1-0ubuntu1
* First releaase of enigmail 1.0.1 for tbird/icedove 3
  (LP: #527138)
* redo packaging from scratch 
  + add debian/make-orig target that uses xulrunner provided
    buildsystem + enigmail tarball to produce a proper orig.tar.gz
  + use debhelper 7 with mozilla-devscripts
  + use debian source format 3.0 (quilt)
  + patch enigmail to use frozen API only
    - add debian/patches/frozen_api.diff
  + patch build system to not link against -lxul - which isnt
    available for sdks produced by all-static apps like tbird
    - add debian/patches/build_system_dont_link_libxul.diff
  + add minimal build-depends to control

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
IPC Modules Overview
 
2
====================
 
3
 
 
4
This file provides an introduction into the modules provided by this package.
 
5
Working examples can be found in the test/ directory.
 
6
 
 
7
nsIPCService
 
8
------------
 
9
A service that provides high-level access to the other components.
 
10
The most important methods are various variants of execPipe, which
 
11
allow to execute a file in blocking or non-blocking way, pass
 
12
information through stdin to the  executed comamnd, and get back
 
13
the output from stdout and stderr (see below for more details).
 
14
 
 
15
The input/output is done via the nsIIPCRequest interface provided.
 
16
 
 
17
 
 
18
nsIPipeTransport
 
19
----------------
 
20
Implements nsIRequest.
 
21
 
 
22
The nsIPipeTransport interface executes a file in a new process and
 
23
communicates with the process using pipes.
 
24
 
 
25
OWNERSHIP AND THREADING MODEL for nsPipeTransport:
 
26
 
 
27
nsPipeTransport can be created in any thread with an event queue.
 
28
 
 
29
nsPipeTransport lives only in the thread that it was created in.
 
30
 
 
31
nsPipeTransport creates a helper thread object, nsStdoutPoller and
 
32
retains an owning reference to it. nsStdoutPoller also holds a strong
 
33
reference to a proxy interface (nsIPipeTransportListener) implemented by
 
34
nsPipeTransport, which is released when the polling thread terminates.
 
35
 
 
36
The polling thread terminates when it is "interrupted" by
 
37
nsPipeTransport or when EOF/error is encountered in reading data from
 
38
the process STDOUT.
 
39
 
 
40
The "terminate" method should *always* be called to release the process
 
41
resources when done.
 
42
 
 
43
For asynchronous reading, when nsStdoutPoller terminates of its own
 
44
accord, any stream listener is informed by invoking OnStopRequest.
 
45
Usually this listener will be the same as the owner of nsPipeTransport.
 
46
(If the owner initiates the request shutdown by first calling "cancel",
 
47
then the OnStopRequest method is *notinvoked, because it is assumed that
 
48
the listener/owner is already aware of the shutdown.)
 
49
 
 
50
 
 
51
nsIPipeListener
 
52
---------------
 
53
Implements a nsIStreamListener sink (thread-safe).
 
54
 
 
55
 
 
56
nsIIPCBuffer
 
57
------------
 
58
Extends nsIPipeListener. nsIIPCBuffer is an interface to a byte buffer.
 
59
In order to ensure data integrity, it uses a monitor.
 
60
 
 
61
 
 
62
nsIPipeChannel
 
63
--------------
 
64
Implements a nsIChannel interface. The nsIPipeChannel interface executes
 
65
a program in a new process and communicates with the process using pipes.
 
66
 
 
67
 
 
68
nsIPipeConsole
 
69
--------------
 
70
Another extension of nsIPipeListener.
 
71
nsIPipeConsole is an interface to a circular text console buffer
 
72
(i.e. to capture the results from a pipe).
 
73
 
 
74
 
 
75
nsIPipeFilterListener
 
76
---------------------
 
77
Implements nsIStreamListener; allows to filter the data of the stream.
 
78
 
 
79
 
 
80
nsIProcessInfo
 
81
--------------
 
82
 
 
83
Provides methods for obtaining information about the process.
 
84
Currently only getEnv() is available.
 
85