39 lines
1.2 KiB
Plaintext
39 lines
1.2 KiB
Plaintext
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Microsoft Research Singularity
|
||
|
//
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//
|
||
|
// Note: Contract used by SMTP Agents to talk to the mail store.
|
||
|
//
|
||
|
|
||
|
using Microsoft.Singularity.Channels;
|
||
|
using Microsoft.Singularity.Directory;
|
||
|
using Microsoft.Singularity.Endpoint;
|
||
|
|
||
|
using Microsoft.Singularity.Extending;
|
||
|
|
||
|
namespace Microsoft.Singularity.Email.Contracts
|
||
|
{
|
||
|
public contract MailStoreContract : ExtensionContract //ServiceContract
|
||
|
{
|
||
|
public const string ModuleName = "/service/mailstore";
|
||
|
|
||
|
out message MailStoreReady();
|
||
|
|
||
|
in message GetAddressList();
|
||
|
out message GetAck(char[]! in ExHeap addresses);
|
||
|
|
||
|
in message SaveMessage(char[]! in ExHeap accounts,
|
||
|
byte[]! in ExHeap buffer);
|
||
|
out message SaveAck();
|
||
|
out message SaveNak(int error);
|
||
|
|
||
|
override state Start : MailStoreReady! -> ReadyState;
|
||
|
state ReadyState : one {
|
||
|
SaveMessage? -> (SaveAck! or SaveNak!) -> ReadyState;
|
||
|
GetAddressList? -> (GetAck!) -> ReadyState;
|
||
|
}
|
||
|
}
|
||
|
}
|