//private ProjectState State; //private Task WriteStateAsync() //{ // return TaskDone.Done; //} //private Task ClearStateAsync() //{ // return TaskDone.Done; //} public override async Task OnActivateAsync() { //this.State = new ProjectState(); await StatsHelper.RegisterActivation("ProjectCodeProviderGrain", this.GrainFactory); Logger.OrleansLogger = this.GetLogger(); Logger.LogInfo(this.GetLogger(), "ProjectGrain", "OnActivate", "Enter"); // Logger.LogWarning(this.GetLogger(), "ProjectGrain", "OnActivate", "Entering Project: {0}", this.GetPrimaryKeyString()); this.observers = new ObserverSubscriptionManager <IEntityGrainObserverNotifications>(); this.State.AssemblyName = this.GetPrimaryKeyString(); //Task.Run(async () => //await Task.Factory.StartNew(async () => //{ try { this.RaiseStateChangedEvent(EntityGrainStatus.Busy); if (!string.IsNullOrEmpty(this.State.ProjectPath)) { this.projectCodeProvider = await OrleansProjectCodeProvider.CreateFromProjectAsync(this.GrainFactory, this.State.ProjectPath); } else if (!string.IsNullOrEmpty(this.State.Source) && !String.IsNullOrEmpty(this.State.AssemblyName)) { this.projectCodeProvider = await OrleansProjectCodeProvider.CreateFromSourceAsync(this.GrainFactory, this.State.Source, this.State.AssemblyName); } else if (!string.IsNullOrEmpty(this.State.TestName) && !String.IsNullOrEmpty(this.State.AssemblyName)) { this.projectCodeProvider = await OrleansProjectCodeProvider.CreateFromTestAsync(this.GrainFactory, this.State.TestName, this.State.AssemblyName); } else if (this.State.AssemblyName.Equals("DUMMY")) { this.projectCodeProvider = new OrleansDummyProjectCodeProvider(this.GrainFactory); await this.WriteStateAsync(); } this.RaiseStateChangedEvent(EntityGrainStatus.Ready); } catch (Exception ex) { var inner = ex; while (inner is AggregateException) { inner = inner.InnerException; } Logger.LogError(this.GetLogger(), "ProjectGrain", "OnActivate", "Error:\n{0}\nInner:\n{1}", ex, inner); throw ex; } //}); Logger.LogInfo(this.GetLogger(), "ProjectGrain", "OnActivate", "Exit"); }
public async Task SetProjectFromTestAsync(string testName) { await StatsHelper.RegisterMsg("ProjectGrain::SetProjectFromTest", this.GrainFactory); Logger.LogVerbose(this.GetLogger(), "ProjectGrain", "SetProjectFromTest", "Enter"); this.State.TestName = testName; this.State.AssemblyName = TestConstants.ProjectAssemblyName; this.State.ProjectPath = null; this.State.Source = null; await this.WriteStateAsync(); //Task.Run(async () => //await Task.Factory.StartNew(async () => //{ try { this.RaiseStateChangedEvent(EntityGrainStatus.Busy); this.projectCodeProvider = await OrleansProjectCodeProvider.CreateFromTestAsync(this.GrainFactory, this.State.TestName, this.State.AssemblyName); this.RaiseStateChangedEvent(EntityGrainStatus.Ready); } catch (Exception ex) { var inner = ex; while (inner is AggregateException) { inner = inner.InnerException; } Logger.LogError(this.GetLogger(), "ProjectGrain", "SetProjectFromTest", "Error:\n{0}\nInner:\n{1}", ex, inner); throw ex; } //}); Logger.LogVerbose(this.GetLogger(), "ProjectGrain", "SetProjectFromTest", "Exit"); }