private IEnumerator <ITask> OnStartup() { rst4.Get get; yield return(_clockPort.Get(GetRequestType.Instance, out get)); rst4.ServiceTutorial4State state = get.ResponsePort; if (state == null) { LogError("Unable to Get state from ServiceTutorial4", (Fault)get.ResponsePort); } #endregion #region CODECLIP 01-4 else // if (state != null) { ServiceTutorial6State initState = new ServiceTutorial6State(); initState.InitialTicks = state.Ticks; PartnerType partner = FindPartner("Clock"); if (partner != null) { initState.Clock = partner.Service; } Replace replace = new Replace(); replace.Body = initState; _mainPort.Post(replace); } #endregion #region CODECLIP 01-5 rst4.Subscribe subscribe; yield return(_clockPort.Subscribe(_clockNotify, out subscribe)); Fault fault = subscribe.ResponsePort; if (fault != null) { LogError("Unable to subscribe to ServiceTutorial4", fault); } }
private IEnumerator <ITask> OnStartup() { #region CODECLIP 02-3 PartnerType remote = FindPartner("Remote"); ds.DirectoryPort remoteDir = DirectoryPort; if (remote != null && !string.IsNullOrEmpty(remote.Service)) { remoteDir = ServiceForwarder <ds.DirectoryPort>(remote.Service); } #endregion #region CODECLIP 02-4 cs.ConstructorPort remoteConstructor = ConstructorPort; ds.Query query = new ds.Query( new ds.QueryRequestType( new ServiceInfoType(cs.Contract.Identifier) ) ); remoteDir.Post(query); yield return((Choice)query.ResponsePort); ds.QueryResponseType queryRsp = query.ResponsePort; if (queryRsp != null) { remoteConstructor = ServiceForwarder <cs.ConstructorPort>(queryRsp.RecordList[0].Service); } #endregion #region CODECLIP 02-5 string clockService = null; cs.Create create = new cs.Create(new ServiceInfoType(rst4.Contract.Identifier)); remoteConstructor.Post(create); yield return((Choice)create.ResponsePort); CreateResponse createRsp = create.ResponsePort; if (createRsp != null) { clockService = createRsp.Service; } else { LogError((Fault)create.ResponsePort); yield break; } _clockPort = ServiceForwarder <rst4.ServiceTutorial4Operations>(clockService); #endregion rst4.Get get; yield return(_clockPort.Get(GetRequestType.Instance, out get)); rst4.ServiceTutorial4State state = get.ResponsePort; if (state != null) { ServiceTutorial7State initState = new ServiceTutorial7State(); PartnerType partner = FindPartner("Local"); if (partner != null) { initState.Clocks.Add(partner.Service); } initState.Clocks.Add(clockService); Replace replace = new Replace(); replace.Body = initState; _mainPort.Post(replace); } else { LogError("Unable to Get state from ServiceTutorial4", (Fault)get.ResponsePort); yield break; } rst4.Subscribe subscribe; yield return(_clockPort.Subscribe(_clockNotify, out subscribe)); if ((Fault)subscribe.ResponsePort != null) { LogError("Unable to subscribe to remote ServiceTutorial4", (Fault)subscribe.ResponsePort); } yield return(_localClockPort.Subscribe(_localClockNotify, out subscribe)); if ((Fault)subscribe.ResponsePort != null) { LogError("Unable to subscribe to local ServiceTutorial4", (Fault)subscribe.ResponsePort); } }