68 lines
1.8 KiB
Plaintext
68 lines
1.8 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Microsoft Research Singularity
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
|
|
using Microsoft.Singularity.Channels;
|
|
using Microsoft.Singularity.Endpoint;
|
|
using Microsoft.Singularity.V1.Services;
|
|
|
|
using System;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Threading;
|
|
|
|
using Microsoft.Singularity.Extending;
|
|
|
|
namespace Bartok.Contracts
|
|
{
|
|
public enum RequestKind {
|
|
GetPhaseName = 1,
|
|
ProcessFunction = 2,
|
|
Terminate = 3,
|
|
};
|
|
|
|
public contract CompilerPhaseContract : ExtensionContract
|
|
{
|
|
in message InitPhaseReq(byte[]! in ExHeap buffer);
|
|
out message InitPhaseRsp(byte[]! in ExHeap buffer);
|
|
|
|
#if USE_SWITCH_RECEIVE
|
|
in message GetPhaseNameReq();
|
|
out message GetPhaseNameRsp(char[]! in ExHeap name);
|
|
|
|
in message ProcessFunctionReq(byte[]! in ExHeap buffer);
|
|
out message ProcessFunctionRsp(byte[]! in ExHeap buffer);
|
|
|
|
in message TermPhaseReq();
|
|
out message TermPhaseRsp();
|
|
#else
|
|
in message Request(int which, byte[]! in ExHeap buffer);
|
|
out message Response(byte[]! in ExHeap buffer);
|
|
#endif
|
|
|
|
out message ReadyToInit();
|
|
|
|
override state Start : one {
|
|
ReadyToInit! -> PreInit;
|
|
}
|
|
|
|
state PreInit : one {
|
|
InitPhaseReq? -> InitPhaseRsp! -> Running;
|
|
}
|
|
|
|
state Running : one {
|
|
#if USE_SWITCH_RECEIVE
|
|
GetPhaseNameReq? -> GetPhaseNameRsp! -> Running;
|
|
ProcessFunctionReq? -> ProcessFunctionRsp! -> Running;
|
|
TermPhaseReq? -> TermPhaseRsp! -> End;
|
|
#else
|
|
Request? -> Response! -> Running;
|
|
#endif
|
|
}
|
|
|
|
state End: ;
|
|
}
|
|
}
|