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