imip-agent

Annotated docs/wiki/OutgoingMessages

1053:068aa85f0c45
2016-02-08 Paul Boddie Made the retraction operation a complete transaction. Tidied up the locking and unlocking function application.
paul@933 1
= Outgoing Messages =
paul@933 2
paul@934 3
When messages are sent by a mail client, imip-agent employs an outgoing
paul@934 4
message rule in the MTA to provide a handler to inspect any calendar-related
paul@934 5
content and to update its records.
paul@933 6
paul@971 7
{{{#!graphviz
paul@971 8
//format=svg
paul@971 9
//transform=notugly
paul@971 10
digraph outgoing {
paul@1006 11
  node [shape=box,fontsize="13.0",fontname="Helvetica",tooltip="Outgoing messages"];
paul@971 12
  edge [tooltip="Outgoing messages"];
paul@971 13
  rankdir=LR;
paul@971 14
paul@971 15
  mail [label="Outgoing mail",shape=folder,style=filled,fillcolor=cyan];
paul@971 16
paul@971 17
  subgraph {
paul@971 18
    rank=same;
paul@971 19
    outgoingrouter [label="Outgoing router"];
paul@988 20
  }
paul@988 21
paul@988 22
  subgraph {
paul@988 23
    rank=same;
paul@988 24
    outgoinghandler [label="Outgoing handler",style=filled,fillcolor=gold];
paul@988 25
    scheduling [label="Scheduling",shape=ellipse,style=filled,fillcolor=gold];
paul@988 26
    freebusy [label="Free/busy",shape=folder,style=filled,fillcolor=gold];
paul@988 27
    manager [label="imip-manager",style=filled,fillcolor=gold];
paul@988 28
  }
paul@988 29
paul@988 30
  client [label="Mail clients"];
paul@988 31
paul@988 32
  client -> mail;
paul@988 33
  mail -> outgoingrouter -> outgoinghandler -> scheduling -> freebusy -> manager;
paul@988 34
}
paul@988 35
}}}
paul@988 36
paul@988 37
The management interface does not use this outgoing message rule because it
paul@988 38
sends messages from the general calendar address (for example,
paul@988 39
`calendar@example.com`), and there is no trivial way of deducing the identity
paul@988 40
of the real sender. Instead, the manager explicitly sends suitably-modified
paul@988 41
messages to the address of the user operating the interface to achieve the
paul@988 42
same effect as the outgoing message rule, as well as to notify any mail
paul@988 43
clients that would normally be managing calendar events on behalf of the user.
paul@988 44
paul@988 45
{{{#!graphviz
paul@988 46
//format=svg
paul@988 47
//transform=notugly
paul@988 48
digraph manager_outgoing {
paul@1006 49
  node [shape=box,fontsize="13.0",fontname="Helvetica",tooltip="Outgoing messages from the manager"];
paul@988 50
  edge [tooltip="Outgoing messages from the manager"];
paul@988 51
  rankdir=LR;
paul@988 52
paul@988 53
  mail [label="Outgoing mail",shape=folder,style=filled,fillcolor=cyan];
paul@988 54
paul@988 55
  subgraph {
paul@988 56
    rank=same;
paul@971 57
    personrouter [label="Person router"];
paul@971 58
  }
paul@971 59
paul@971 60
  subgraph {
paul@971 61
    rank=same;
paul@971 62
    personhandler [label="Person handler",style=filled,fillcolor=gold];
paul@971 63
    scheduling [label="Scheduling",shape=ellipse,style=filled,fillcolor=gold];
paul@971 64
    freebusy [label="Free/busy",shape=folder,style=filled,fillcolor=gold];
paul@971 65
    manager [label="imip-manager",style=filled,fillcolor=gold];
paul@971 66
  }
paul@971 67
paul@971 68
  webserver [label="Web server\n(Apache, ...)",tooltip="Web server"];
paul@971 69
paul@988 70
  browser [label="Web browsers"];
paul@971 71
paul@988 72
  browser -> webserver -> manager -> mail -> personrouter ->
paul@988 73
  personhandler -> scheduling -> freebusy -> manager;
paul@971 74
}
paul@971 75
}}}
paul@971 76
paul@933 77
== Events ==
paul@933 78
paul@933 79
{{{#!table
paul@934 80
'''Method''' || '''Effect on Objects''' || '''Effect on Free/Busy'''
paul@934 81
|| '''Effect on Request Queue'''
paul@933 82
==
paul@934 83
`CANCEL`
paul@934 84
|| Remove selected attendees or an entire event
paul@934 85
|| Remove record if entire event is cancelled
paul@934 86
||<rowspan="4"> Remove any queue entry
paul@933 87
==
paul@934 88
`PUBLISH`
paul@934 89
||<rowspan="2"> Add or update object, removing specific recurrences of
paul@934 90
             .. recurring events
paul@934 91
||<rowspan="2"> Add record for the event, removing records for specific
paul@934 92
             .. recurrences of an event
paul@933 93
==
paul@933 94
`REQUEST`
paul@933 95
==
paul@934 96
`REPLY`
paul@934 97
|| Merge attendee participation information
paul@934 98
|| Update records for the event, preserving specific recurrence records when
paul@934 99
.. changing a recurring event
paul@933 100
}}}
paul@933 101
paul@934 102
The effect of the outgoing handler is to ensure that the user's free/busy
paul@934 103
status reflects the consequences of their stated attendance of events, and for
paul@934 104
the object records to reflect the most recent state of each event.
paul@933 105
paul@933 106
== Other Object Types ==
paul@933 107
paul@934 108
Other object types are not handled. Free/busy information, if exchanged, is
paul@934 109
not obtained by the handler to replace its own records.