public void EndTask(string nodeName, EndTaskArg arg, NodeCommunicatorCallBack <EndTaskArg> callback)
        {
            this.SendRequest("endtask", this.GetCallbackUri(nodeName, "taskcompleted"), nodeName, async(content, ex) =>
            {
                Exception readEx = null;

                try
                {
                    if (content != null && ex == null)
                    {
                        arg.TaskInfo = await content.ReadAsAsync <ComputeClusterTaskInformation>();
                    }
                }
                catch (Exception e)
                {
                    this.Tracer.TraceError("Exception while read the task info {0}", e);

                    readEx = e;
                }

                if (ex != null && readEx != null)
                {
                    ex = new AggregateException(ex, readEx);
                }
                else
                {
                    ex = ex ?? readEx;
                }

                callback(nodeName, arg, ex);
            }, arg);
        }
 public void StartTask(string nodeName, StartTaskArg arg, ProcessStartInfo startInfo, NodeCommunicatorCallBack <StartTaskArg> callback)
 {
     this.SendRequest("starttask", this.GetCallbackUri(nodeName, "taskcompleted"), nodeName, async(content, ex) =>
     {
         await Task.Yield();
         callback(nodeName, arg, ex);
     }, Tuple.Create(arg, startInfo));
 }
        public void StartJobAndTaskExtendedData(string nodeName, StartJobAndTaskArg arg, string userName, string password, string extendedData, ProcessStartInfo startInfo, NodeCommunicatorCallBack <StartJobAndTaskArg> callback)
        {
            string privateKey = null, publicKey = null;

            if (extendedData != null)
            {
                try
                {
                    XDocument xDoc = XDocument.Parse(extendedData);

                    var privateKeyNode = xDoc.Descendants("PrivateKey").FirstOrDefault();
                    var publicKeyNode  = xDoc.Descendants("PublicKey").FirstOrDefault();
                    if (privateKeyNode != null)
                    {
                        privateKey = privateKeyNode.Value;
                    }

                    if (publicKeyNode != null)
                    {
                        publicKey = publicKeyNode.Value;
                    }
                }
                catch (Exception ex)
                {
                    this.Tracer.TraceWarning("Error parsing extended data {0}, ex {1}", extendedData, ex);
                }
            }

            if (IsAdmin(userName, password))
            {
                startInfo.EnvironmentVariables["CCP_ISADMIN"] = "1";
            }

            this.SendRequest("startjobandtask", this.GetCallbackUri(nodeName, "taskcompleted"), nodeName, async(content, ex) =>
            {
                await Task.Yield();
                callback(nodeName, arg, ex);
            }, Tuple.Create(arg, startInfo, userName, password, privateKey, publicKey));
        }
 public void StartJobAndTaskSoftCardCred(string nodeName, StartJobAndTaskArg arg, string userName, string password, byte[] certificate, ProcessStartInfo startInfo, NodeCommunicatorCallBack <StartJobAndTaskArg> callback)
 {
     this.SendRequest("startjobandtask", this.GetCallbackUri(nodeName, "taskcompleted"), nodeName, async(content, ex) =>
     {
         await Task.Yield();
         callback(nodeName, arg, ex);
     }, Tuple.Create(arg, startInfo, userName, password, certificate));
 }
        public void StartJobAndTask(string nodeName, StartJobAndTaskArg arg, string userName, string password, ProcessStartInfo startInfo, NodeCommunicatorCallBack <StartJobAndTaskArg> callback)
        {
            if (IsAdmin(userName, password))
            {
                startInfo.EnvironmentVariables["CCP_ISADMIN"] = "1";
            }

            this.SendRequest("startjobandtask", this.GetCallbackUri(nodeName, "taskcompleted"), nodeName, async(content, ex) =>
            {
                await Task.Yield();
                callback(nodeName, arg, ex);
            }, Tuple.Create(arg, startInfo, userName, password));
        }