Ejemplo n.º 1
0
        public static async Task Run(Action <RemoteTaskCompletionSource, ISponsor> action, CancellationToken token)
        {
            var sponsor = new ClientSponsor();

            try {
                var taskHandle = new RemoteTaskCompletionSource(token);
                sponsor.Register(taskHandle);

                action(taskHandle, sponsor);
                await taskHandle.Task;
            }
            finally {
                sponsor.Close();
            }
        }
Ejemplo n.º 2
0
        public static async Task Run(Action <RemoteTaskCompletionSource> action, CancellationToken token = default(CancellationToken))
        {
            using (var taskHandle = new RemoteTaskCompletionSource()) {
                var _task = new WeakReference(taskHandle);
                token.Register(() => {
                    if (!_task.IsAlive)
                    {
                        return;
                    }
                    ((RemoteTaskCompletionSource)_task.Target).SetCancelled();
                });

                action(taskHandle);
                await taskHandle.Task;
            }
        }
Ejemplo n.º 3
0
 public async Task RunTaskAsync(string taskName, CancellationToken token = default(CancellationToken))
 {
     await RemoteTaskCompletionSource.Run(task => {
         Client.RunTaskAsync(taskName, task);
     }, token);
 }
Ejemplo n.º 4
0
 public async Task ReleaseAsync(CancellationToken token)
 {
     await RemoteTaskCompletionSource.Run(task => {
         Client.ReleaseAsync(task);
     }, token);
 }
Ejemplo n.º 5
0
 public async Task <string> PullApplicationPackageAsync(string id, string version)
 {
     return(await RemoteTaskCompletionSource <string> .Run((task, sponsor) => {
         Packages.PullApplicationPackage(id, version, task);
     }));
 }
Ejemplo n.º 6
0
 public async Task PushApplicationPackageAsync(string filename)
 {
     await RemoteTaskCompletionSource <object> .Run((task, sponsor) => {
         Packages.PushApplicationPackage(filename, task);
     });
 }
Ejemplo n.º 7
0
 public void RunBuildTask(IAgentBuildContext context, RemoteTaskCompletionSource completeEvent)
 {
     buildTaskRegistry.ExecuteTask(context, CancellationToken.None)
     .ContinueWith(completeEvent.FromTask);
 }
Ejemplo n.º 8
0
 public void RunDeployScript(IServerDeployContext context, RemoteTaskCompletionSource completeEvent)
 {
     deployScriptRegistry.ExecuteScript(context, CancellationToken.None)
     .ContinueWith(completeEvent.FromTask);
 }
Ejemplo n.º 9
0
 public async Task <string> PullProjectPackageAsync(string id, string version)
 {
     return(await RemoteTaskCompletionSource <string> .Run(task => {
         Packages.PullProjectPackage(id, version, task);
     }));
 }
Ejemplo n.º 10
0
 public async Task PushApplicationPackageAsync(string filename, CancellationToken token = default(CancellationToken))
 {
     await RemoteTaskCompletionSource.Run(task => {
         Packages.PushApplicationPackage(filename, task);
     }, token);
 }
Ejemplo n.º 11
0
 public async Task RunTaskAsync(string taskName, CancellationToken token)
 {
     await RemoteTaskCompletionSource.Run((task, sponsor) => {
         Client.RunTaskAsync(taskName, task);
     }, token);
 }
Ejemplo n.º 12
0
 public async Task BeginAsync(CancellationToken token)
 {
     await RemoteTaskCompletionSource.Run((task, sponsor) => {
         Client.Begin(task);
     }, token);
 }
Ejemplo n.º 13
0
 public void RunTaskAsync(string taskName, RemoteTaskCompletionSource taskHandle)
 {
     OnSessionRunTask?.Invoke(taskName, taskHandle);
 }
Ejemplo n.º 14
0
 public void ReleaseAsync(RemoteTaskCompletionSource taskHandle)
 {
     OnSessionRelease?.Invoke(taskHandle);
 }
Ejemplo n.º 15
0
 public void Begin(RemoteTaskCompletionSource taskHandle)
 {
     OnSessionBegin?.Invoke(taskHandle);
 }