Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/07/10 10:22:27 (14 years ago)
Author:
cneumuel
Message:
  • created HiveClient which shows an overview over all submitted HiveExperiments
  • its possible to download all submitted HiveExperiments including results
  • Experiments are now sent as a whole to the Hive and the Hive-Slaves take care of creating child-jobs (if necessary). The parent job is then paused and will be reactivated when all child-jobs are finished
  • WcfService-Clients are now consistently managed by WcfServicePool which allows to use IDisposable-Pattern and always keeps exactly one proxy-object until all callers disposed them.
  • created ProgressView which is able to lock a View and display progress of an action. It also allows to simulate progress if no progress-information is available so that users don't get too nervous while waiting.
Location:
branches/3.3-Hive/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3
Files:
19 added
2 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • branches/3.3-Hive/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/GetJobCompletedEventArgs.cs

    r4305 r4368  
    2121using System;
    2222
    23 namespace HeuristicLab.Hive.Slave.Communication.SlaveService {
     23namespace HeuristicLab.Hive.Slave.Communication.SlaveFacade {
    2424  public partial class GetJobCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
    2525
  • branches/3.3-Hive/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/HeuristicLab.Hive.Slave.Communication-3.3.csproj

    r4343 r4368  
    7676  </PropertyGroup>
    7777  <ItemGroup>
     78    <Reference Include="HeuristicLab.Collections-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
    7879    <Reference Include="HeuristicLab.Common-3.3">
    7980      <HintPath>C:\Program Files\HeuristicLab 3.3\HeuristicLab.Common-3.3.dll</HintPath>
     
    112113    <Compile Include="Properties\AssemblyInfo.cs" />
    113114    <Compile Include="GetJobCompletedEventArgs.cs" />
    114     <Compile Include="Service References\SlaveService\Reference.cs">
    115       <AutoGen>True</AutoGen>
    116       <DesignTime>True</DesignTime>
    117       <DependentUpon>Reference.svcmap</DependentUpon>
    118     </Compile>
    119115    <Compile Include="Properties\Settings.Designer.cs">
    120116      <AutoGen>True</AutoGen>
     
    122118      <DependentUpon>Settings.settings</DependentUpon>
    123119    </Compile>
    124     <Compile Include="SlaveServiceCache.cs" />
     120    <Compile Include="Service References\SlaveFacade\Reference.cs">
     121      <AutoGen>True</AutoGen>
     122      <DesignTime>True</DesignTime>
     123      <DependentUpon>Reference.svcmap</DependentUpon>
     124    </Compile>
     125    <Compile Include="ServiceLocator.cs" />
    125126    <Compile Include="WcfService.cs" />
    126127  </ItemGroup>
     
    130131    <None Include="Properties\AssemblyInfo.frame" />
    131132    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.BusinessObjects.JobDto.datasource" />
     133    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.BusinessObjects.JobResult.datasource" />
     134    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.BusinessObjects.SerializedJob.datasource" />
    132135    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.ResponseObjects.Response.datasource" />
    133136    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.ResponseObjects.ResponseCalendar.datasource" />
     
    135138    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.ResponseObjects.ResponseResultReceived.datasource" />
    136139    <None Include="Properties\DataSources\HeuristicLab.PluginInfrastructure.CachedHivePluginInfoDto.datasource" />
    137     <None Include="Service References\SlaveService\SlaveFacade.wsdl" />
    138     <None Include="Service References\SlaveService\SlaveService.wsdl" />
    139     <None Include="Service References\SlaveService\SlaveService.xsd">
    140       <SubType>Designer</SubType>
    141     </None>
    142     <None Include="Service References\SlaveService\SlaveService1.xsd">
    143       <SubType>Designer</SubType>
    144     </None>
    145     <None Include="Service References\SlaveService\SlaveService2.xsd">
    146       <SubType>Designer</SubType>
    147     </None>
    148     <None Include="Service References\SlaveService\SlaveService3.xsd">
    149       <SubType>Designer</SubType>
    150     </None>
    151     <None Include="Service References\SlaveService\SlaveService4.xsd">
    152       <SubType>Designer</SubType>
    153     </None>
    154     <None Include="Service References\SlaveService\SlaveService5.xsd">
    155       <SubType>Designer</SubType>
    156     </None>
    157     <None Include="Service References\SlaveService\SlaveService6.xsd">
    158       <SubType>Designer</SubType>
    159     </None>
    160     <None Include="Service References\SlaveService\SlaveService7.xsd">
    161       <SubType>Designer</SubType>
    162     </None>
    163     <None Include="Service References\SlaveService\SlaveService8.xsd">
    164       <SubType>Designer</SubType>
    165     </None>
    166     <None Include="Service References\SlaveService\SlaveService9.xsd">
    167       <SubType>Designer</SubType>
    168     </None>
    169140    <None Include="Properties\Settings.settings">
    170141      <Generator>SettingsSingleFileGenerator</Generator>
    171142      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
    172143    </None>
     144    <None Include="Service References\SlaveFacade\Arrays.xsd">
     145      <SubType>Designer</SubType>
     146    </None>
     147    <None Include="Service References\SlaveFacade\HeuristicLab.DataAccess.xsd">
     148      <SubType>Designer</SubType>
     149    </None>
     150    <None Include="Service References\SlaveFacade\HeuristicLab.Hive.Contracts.BusinessObjects.xsd">
     151      <SubType>Designer</SubType>
     152    </None>
     153    <None Include="Service References\SlaveFacade\HeuristicLab.Hive.Contracts.ResponseObjects.xsd">
     154      <SubType>Designer</SubType>
     155    </None>
     156    <None Include="Service References\SlaveFacade\HeuristicLab.Hive.Contracts.xsd">
     157      <SubType>Designer</SubType>
     158    </None>
     159    <None Include="Service References\SlaveFacade\HeuristicLab.PluginInfrastructure.xsd">
     160      <SubType>Designer</SubType>
     161    </None>
     162    <None Include="Service References\SlaveFacade\Message.xsd">
     163      <SubType>Designer</SubType>
     164    </None>
     165    <None Include="Service References\SlaveFacade\service.wsdl" />
     166    <None Include="Service References\SlaveFacade\service.xsd">
     167      <SubType>Designer</SubType>
     168    </None>
     169    <None Include="Service References\SlaveFacade\service1.xsd">
     170      <SubType>Designer</SubType>
     171    </None>
     172    <None Include="Service References\SlaveFacade\System.xsd">
     173      <SubType>Designer</SubType>
     174    </None>
    173175  </ItemGroup>
    174176  <ItemGroup>
     
    176178      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
    177179      <Name>HeuristicLab.Hive.Contracts-3.3</Name>
     180    </ProjectReference>
     181    <ProjectReference Include="..\..\HeuristicLab.Hive.JobBase\3.3\HeuristicLab.Hive.JobBase-3.3.csproj">
     182      <Project>{21187322-52DD-4243-80A4-A85F0263E63B}</Project>
     183      <Name>HeuristicLab.Hive.JobBase-3.3</Name>
    178184    </ProjectReference>
    179185    <ProjectReference Include="..\..\HeuristicLab.Hive.Slave.Common\3.3\HeuristicLab.Hive.Slave.Common-3.3.csproj">
     
    186192  </ItemGroup>
    187193  <ItemGroup>
    188     <WCFMetadataStorage Include="Service References\SlaveService\" />
    189   </ItemGroup>
    190   <ItemGroup>
    191     <None Include="Service References\SlaveService\SlaveService.disco" />
    192   </ItemGroup>
    193   <ItemGroup>
    194     <None Include="Service References\SlaveService\configuration91.svcinfo" />
    195   </ItemGroup>
    196   <ItemGroup>
    197     <None Include="Service References\SlaveService\configuration.svcinfo" />
    198   </ItemGroup>
    199   <ItemGroup>
    200     <None Include="Service References\SlaveService\Reference.svcmap">
     194    <WCFMetadataStorage Include="Service References\SlaveFacade\" />
     195  </ItemGroup>
     196  <ItemGroup>
     197    <None Include="Service References\SlaveFacade\configuration91.svcinfo" />
     198  </ItemGroup>
     199  <ItemGroup>
     200    <None Include="Service References\SlaveFacade\configuration.svcinfo" />
     201  </ItemGroup>
     202  <ItemGroup>
     203    <None Include="Service References\SlaveFacade\Reference.svcmap">
    201204      <Generator>WCF Proxy Generator</Generator>
    202205      <LastGenOutput>Reference.cs</LastGenOutput>
  • branches/3.3-Hive/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/HeuristicLabHiveSlaveCommunicationPlugin.cs

    r4253 r4368  
    3636  [PluginDependency("HeuristicLab.Hive.Slave.Common", "3.3")]
    3737  [PluginDependency("HeuristicLab.Hive.Contracts", "3.3")]
     38  [PluginDependency("HeuristicLab.Hive.JobBase", "3.3")]
    3839  [PluginDependency("HeuristicLab.Tracing", "3.3")]
    3940  public class HeuristicLabHiveSlaveCommunicationPlugin : PluginBase {
  • branches/3.3-Hive/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/WcfService.cs

    r4343 r4368  
    2222using System;
    2323using System.Collections.Generic;
    24 using System.Linq;
    25 using System.Text;
    26 using System.ServiceModel;
    27 using HeuristicLab.Hive.Contracts.Interfaces;
    28 using HeuristicLab.Hive.Slave.Common;
    29 using HeuristicLab.PluginInfrastructure;
    3024using System.IO;
    3125using System.Runtime.Serialization.Formatters.Binary;
    32 using HeuristicLab.Tracing;
     26using System.ServiceModel;
    3327using HeuristicLab.Hive.Contracts;
    3428using HeuristicLab.Hive.Contracts.BusinessObjects;
    35 using HeuristicLab.Hive.Slave.Communication.SlaveService;
    3629using HeuristicLab.Hive.Contracts.ResponseObjects;
    37 using HeuristicLab.Hive.Slave.Communication.Properties;
     30using HeuristicLab.Hive.Slave.Common;
     31using HeuristicLab.Hive.Slave.Communication.SlaveFacade;
     32using HeuristicLab.PluginInfrastructure;
     33using HeuristicLab.Tracing;
    3834
    3935namespace HeuristicLab.Hive.Slave.Communication {
     
    7874    public event EventHandler Connected;
    7975
    80     SlaveServiceCache servicePool;
    81 
    8276    /// <summary>
    8377    /// Constructor
     
    9286    /// </summary>
    9387    public void Connect() {
    94       servicePool = new SlaveServiceCache(ServerIp);
    95       using (DisposableSlaveFacadeClient client = servicePool.GetStreamedSlaveFacade()) {
     88      ServiceLocator.Instance.HostAddress = ServerIp;
     89      ServiceLocator.Instance.SlaveFacadePool.ExceptionOccured += new EventHandler<HeuristicLab.Common.EventArgs<Exception>>(ClientFacadePool_ExceptionOccured);
     90      ServiceLocator.Instance.StreamedSlaveFacadePool.ExceptionOccured += new EventHandler<HeuristicLab.Common.EventArgs<Exception>>(ClientFacadePool_ExceptionOccured);
     91      using (Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService()) {
    9692        try {
    9793          Logger.Debug("Starting the Connection Process");
     
    114110        }
    115111      }
     112    }
     113
     114    void ClientFacadePool_ExceptionOccured(object sender, HeuristicLab.Common.EventArgs<Exception> e) {
     115      Logger.Error("An exception occured in the WCF-Communication: " + e.Value.ToString());
    116116    }
    117117
     
    138138    /// </summary>
    139139    public void Login(SlaveDto slaveInfo) {
    140       using (DisposableSlaveFacadeClient client = servicePool.GetSlaveFacade()) {
     140      using (Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.SlaveFacadePool.GetService()) {
    141141        try {
    142142          if (ConnState == NetworkEnum.WcfConnState.Connected) {
    143143            Logger.Debug("STARTED: Login Sync");
    144             Response res = client.Login(slaveInfo);
     144            Response res = service.Obj.Login(slaveInfo);
    145145            if (res.StatusMessage != ResponseStatus.Ok) {
    146146              Logger.Error("FAILED: Login Failed! " + res.StatusMessage);
     
    165165    public void GetJobAsync(Guid guid) {
    166166      if (LoggedIn) {
    167         DisposableSlaveFacadeClient client = servicePool.GetStreamedSlaveFacade();
     167        Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService();
    168168        Logger.Debug("STARTED: Fetching of Jobs from Server for Slave");
    169         client.BeginGetStreamedJob(guid, (ar => {
     169        service.Obj.BeginGetStreamedJob(guid, (ar => {
    170170          if (ar.IsCompleted) {
    171171            Stream stream = null;
     
    173173            try {
    174174              Logger.Debug("ENDED: Fetching of Jobs from Server for Slave");
    175               stream = client.EndGetStreamedJob(ar);
     175              stream = service.Obj.EndGetStreamedJob(ar);
    176176
    177177              //first deserialize the response
     
    203203                memStream.Dispose();
    204204
    205               servicePool.ReleaseSlaveClient(client);
     205              service.Dispose();
    206206            }
    207207          } else
     
    220220    public void GetFinishedJobResultAsync(Guid clientId, Guid jobId, byte[] result, double percentage, Exception exception, bool finished) {
    221221      if (LoggedIn) {
    222         DisposableSlaveFacadeClient client = servicePool.GetStreamedSlaveFacade();
     222        Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService();
    223223        Logger.Debug("STARTED: Sending back the finished job results");
    224224        Logger.Debug("Building stream");
     
    226226        Logger.Debug("Builded stream");
    227227        Logger.Debug("Making the call");
    228 
    229         client.BeginStoreFinishedJobResultStreamed(stream, (ar => {
     228       
     229        service.Obj.BeginStoreFinishedJobResultStreamed(stream, (ar => {
    230230          try {
    231231            Logger.Debug("Finished storing the job");
     
    234234
    235235            if (ar.IsCompleted) {
    236               var res = client.EndStoreFinishedJobResultStreamed(ar);
     236              var res = service.Obj.EndStoreFinishedJobResultStreamed(ar);
    237237              StoreFinishedJobResultCompletedEventArgs args = new StoreFinishedJobResultCompletedEventArgs(new object[] { res }, null, false, null);
    238238              Logger.Debug("calling the Finished Job Event");
     
    244244          }
    245245          finally {
    246             servicePool.ReleaseSlaveClient(client);
     246            service.Dispose();
    247247          }
    248248        }), null);
     
    256256    public void ProcessSnapshotAsync(Guid clientId, Guid jobId, byte[] result, double percentage, Exception exception, bool finished) {
    257257      if (LoggedIn) {
    258         DisposableSlaveFacadeClient client = servicePool.GetStreamedSlaveFacade();
     258        Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService();
    259259
    260260        Stream stream = GetStreamedJobResult(clientId, jobId, result, percentage, exception);
    261         client.BeginProcessSnapshotStreamed(stream, (ar => {
     261        service.Obj.BeginProcessSnapshotStreamed(stream, (ar => {
    262262          try {
    263263            if (stream != null)
     
    265265
    266266            if (ar.IsCompleted) {
    267               var res = client.EndStoreFinishedJobResultStreamed(ar);
     267              var res = service.Obj.EndStoreFinishedJobResultStreamed(ar);
    268268              ProcessSnapshotCompletedEventArgs args = new ProcessSnapshotCompletedEventArgs(new object[] { res }, null, false, null);
    269269              ProcessSnapshotCompleted(this, args);
     
    273273          }
    274274          finally {
    275             servicePool.ReleaseSlaveClient(client);
     275            service.Dispose();
    276276          }
    277277        }), null);
     
    289289    public void ProcessHeartBeatSync(HeartBeatData hbd) {
    290290      if (LoggedIn) {
    291         using (DisposableSlaveFacadeClient client = servicePool.GetStreamedSlaveFacade()) {
     291        using (Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService()) {
    292292          Logger.Debug("STARTING: sending heartbeat");
    293           var res = client.ProcessHeartBeat(hbd);
     293          var res = service.Obj.ProcessHeartBeat(hbd);
    294294
    295295          if (res.StatusMessage == ResponseStatus.Ok) {
    296296            ProcessHeartBeatCompleted(this, new ProcessHeartBeatCompletedEventArgs(new object[] { res }, null, false, null));
    297297            Logger.Debug("ENDED: sending heartbeats");
     298          } else if (res.StatusMessage == ResponseStatus.ProcessHeartBeat_UserNotLoggedIn) {
     299            LoggedIn = false;
    298300          } else {
    299301            Logger.Error("FAILED: sending heartbeats: " + res.StatusMessage.ToString());
     
    311313      JobResult jobResult = new JobResult();
    312314      jobResult.SlaveId = clientId;
    313       jobResult.JobId = jobId;
     315      jobResult.Id = jobId;
    314316      jobResult.Percentage = percentage;
    315317      jobResult.Exception = exception != null ? exception.Message : "";
     
    328330
    329331    public ResponseResultReceived StoreFinishedJobResultsSync(Guid clientId, Guid jobId, byte[] result, double percentage, Exception exception, bool finished) {
    330       using (DisposableSlaveFacadeClient client = servicePool.GetStreamedSlaveFacade()) {
    331         ResponseResultReceived res = client.StoreFinishedJobResultStreamed(GetStreamedJobResult(clientId, jobId, result, percentage, exception));
     332      using (Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService()) {
     333        ResponseResultReceived res = service.Obj.StoreFinishedJobResultStreamed(GetStreamedJobResult(clientId, jobId, result, percentage, exception));
    332334        return res;
    333335      }
     
    337339      try {
    338340        Logger.Debug("STARTING: Sync call: IsJobStillNeeded");
    339         using (DisposableSlaveFacadeClient client = servicePool.GetStreamedSlaveFacade()) {
    340           Response res = client.IsJobStillNeeded(jobId);
     341        using (Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService()) {
     342          Response res = service.Obj.IsJobStillNeeded(jobId);
    341343          Logger.Debug("ENDED: Sync call: IsJobStillNeeded");
    342344          return res;
     
    351353    public ResponseResultReceived ProcessSnapshotSync(Guid clientId, Guid jobId, byte[] result, double percentage, Exception exception) {
    352354      try {
    353         using (DisposableSlaveFacadeClient client = servicePool.GetStreamedSlaveFacade()) {
    354           return client.ProcessSnapshotStreamed(GetStreamedJobResult(clientId, jobId, result, percentage, exception));
     355        using (Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService()) {
     356          return service.Obj.ProcessSnapshotStreamed(GetStreamedJobResult(clientId, jobId, result, percentage, exception));
    355357        }
    356358      }
     
    363365    public IEnumerable<CachedHivePluginInfoDto> RequestPlugins(List<HivePluginInfoDto> requestedPlugins) {
    364366      try {
    365         using (DisposableSlaveFacadeClient client = servicePool.GetStreamedSlaveFacade()) {
     367        using (Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService()) {
    366368          Logger.Debug("STARTED: Requesting Plugins for Job");
    367369          Logger.Debug("STARTED: Getting the stream");
    368           Stream stream = client.GetStreamedPlugins(requestedPlugins.ToArray());
     370          Stream stream = service.Obj.GetStreamedPlugins(requestedPlugins.ToArray());
    369371          Logger.Debug("ENDED: Getting the stream");
    370372          BinaryFormatter formatter = new BinaryFormatter();
     
    386388      try {
    387389        Logger.Debug("STARTED: Logout");
    388         using (DisposableSlaveFacadeClient client = servicePool.GetStreamedSlaveFacade()) {
    389           client.Logout(guid);
     390        using (Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService()) {
     391          service.Obj.Logout(guid);
    390392        }
    391393        Logger.Debug("ENDED: Logout");
     
    399401      try {
    400402        Logger.Debug("STARTED: Syncing Calendars");
    401         using (DisposableSlaveFacadeClient client = servicePool.GetStreamedSlaveFacade()) {
    402           ResponseCalendar cal = client.GetCalendar(clientId);
     403        using (Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService()) {
     404          ResponseCalendar cal = service.Obj.GetCalendar(clientId);
    403405          Logger.Debug("ENDED: Syncing Calendars");
    404406          return cal;
     
    414416      try {
    415417        Logger.Debug("STARTED: Setting Calendar status to: " + state);
    416         using (DisposableSlaveFacadeClient client = servicePool.GetStreamedSlaveFacade()) {
    417           Response resp = client.SetCalendarStatus(clientId, state);
     418        using (Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService()) {
     419          Response resp = service.Obj.SetCalendarStatus(clientId, state);
    418420          Logger.Debug("ENDED: Setting Calendar status to: " + state);
    419421          return resp;
     
    425427      }
    426428    }
     429
     430    public ResponseObject<JobDto> AddChildJob(Guid parentJobId, SerializedJob serializedJob) {
     431      try {
     432        Logger.Debug("STARTED: Add Child Job for parent: " + parentJobId);
     433        using (Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService()) {
     434          ResponseObject<JobDto> response = service.Obj.AddChildJob(parentJobId, serializedJob);
     435          Logger.Debug("ENDED: Add Child Job for parent: " + parentJobId);
     436          return response;
     437        }
     438      }
     439      catch (Exception e) {
     440        HandleNetworkError(e);
     441        return null;
     442      }
     443    }
     444
     445    public ResponseObject<JobDto> PauseJob(SerializedJob serializedJob) {
     446      try {
     447        Logger.Debug("STARTED: Pausing job: " + serializedJob.JobInfo.Id);
     448        using (Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService()) {
     449          ResponseObject<JobDto> response = service.Obj.PauseJob(serializedJob);
     450          Logger.Debug("ENDED: Pausing job: " + serializedJob.JobInfo.Id);
     451          return response;
     452        }
     453      }
     454      catch (Exception e) {
     455        HandleNetworkError(e);
     456        return null;
     457      }
     458    }
     459
     460    public ResponseObject<SerializedJobList> GetChildJobs(Guid parentJob) {
     461      try {
     462        Logger.Debug("STARTED: GetChildJobs job: " + parentJob);
     463        using (Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService()) {
     464          SerializedJobList serializedJobs = new SerializedJobList();
     465          JobResult[] results = service.Obj.GetChildJobResults(new Guid?(parentJob), false, false);
     466          foreach (JobResult result in results) {
     467            serializedJobs.Add(service.Obj.GetLastSerializedResult(result.Id));
     468          }
     469
     470          Logger.Debug("ENDED: GetChildJobs job: " + parentJob);
     471          return new ResponseObject<SerializedJobList>() {
     472            Obj = serializedJobs
     473          };
     474        }
     475      }
     476      catch (Exception e) {
     477        HandleNetworkError(e);
     478        return null;
     479      }
     480    }
    427481  }
    428482}
  • branches/3.3-Hive/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/app.config

    r4342 r4368  
    2828          receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false"
    2929          transactionFlow="false" hostNameComparisonMode="StrongWildcard"
    30           maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text"
     30          maxBufferPoolSize="524288" maxReceivedMessageSize="104857600" messageEncoding="Text"
    3131          textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
    3232          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
     
    4545    <client>
    4646      <endpoint address="http://localhost:9000/SlaveService" binding="wsHttpBinding" behaviorConfiguration="SlaveServiceBehaviour"
    47         bindingConfiguration="SlaveHttpEndpoint" contract="SlaveService.ISlaveFacade"
     47        bindingConfiguration="SlaveHttpEndpoint" contract="SlaveFacade.ISlaveFacade"
    4848        name="SlaveHttpEndpoint">
    4949        <identity>
     
    5353      <endpoint address="net.tcp://localhost:9001/SlaveServiceStreamed" behaviorConfiguration="SlaveServiceBehaviour"
    5454        binding="netTcpBinding" bindingConfiguration="SlaveTcpStreamedEndpoint"
    55         contract="SlaveService.ISlaveFacade" name="SlaveTcpStreamedEndpoint">
     55        contract="SlaveFacade.ISlaveFacade" name="SlaveTcpStreamedEndpoint">
    5656        <identity>
    5757          <dns value="localhost" />
Note: See TracChangeset for help on using the changeset viewer.