private bool DownloadComponentList(int maxNoServers, int timeout, ref ComponentInfo[] componentList) { string uri = ResponsiveServerDeterminator.GetResponsiveURI(ServerType.RelayLogs, maxNoServers, timeout, _user.GetMachineGUIDSuffix(), _generalData.Properties["primaryDomainName"], _generalData.Properties["secondaryDomainName"], "UserDataMarshaller.svc"); if (uri == "") { return(false); } uri += "/su"; UserDataMarshallerSUStreamerClient client = null; StreamErrorWrapper wrapper = null; VersionParameterMessage message = new VersionParameterMessage() { Version = String.Format("{0}.{1}", _generalData.SoftwareMajorVersionNumber, _generalData.SoftwareMinorVersionNumber), SystemPassPhrase = "password" }; try { client = new UserDataMarshallerSUStreamerClient(); client.Endpoint.Address = new System.ServiceModel.EndpointAddress(uri); wrapper = client.GetComponentList(message); } catch (Exception ex) { client.Dispose(); _log.WriteEntry("Could not get a list of updated components.", EventLogEntryType.Error); return(false); } if (wrapper.ErrorStatus == ErrorStatus.NoData) { _log.WriteEntry(wrapper.ErrorCode + " " + wrapper.Message, EventLogEntryType.Warning); return(false); } if (wrapper.ErrorStatus == ErrorStatus.Failure) { _log.WriteEntry(wrapper.ErrorCode + " " + wrapper.Message, EventLogEntryType.Error); return(false); } byte[] buffer = StreamToByteArray(wrapper.ReturnStream); if (wrapper.ReturnStream != null) { wrapper.ReturnStream.Dispose(); } string stringXmlObj = ByteArrayToString(buffer); componentList = (ComponentInfo[])Serializer.DeserializeFromString(typeof(ComponentInfo[]), stringXmlObj); return(true); }
public StreamErrorWrapper GetComponentList(VersionParameterMessage message) { StreamErrorWrapper streamErrorWrapper = new StreamErrorWrapper(); // close returned stream on completion OperationContext clientContext = OperationContext.Current; clientContext.OperationCompleted += new EventHandler(delegate(object sender, EventArgs args) { if (streamErrorWrapper.ReturnStream != null) { streamErrorWrapper.ReturnStream.Dispose(); } }); if (message.SystemPassPhrase != _systemPassPhrase) { streamErrorWrapper.ErrorCode = "ERR:001"; streamErrorWrapper.Message = "Authentication failure"; streamErrorWrapper.ErrorSeverity = ErrorSeverity.Retriable; streamErrorWrapper.ErrorStatus = ErrorStatus.Failure; streamErrorWrapper.ReturnStream = new MemoryStream(new byte[0]); return(streamErrorWrapper); } string appDataFullPath = _changesetPath + message.Version + "\\ss_component_list.dat"; if (!File.Exists(appDataFullPath)) { _applicationLog.Warn("Attempted access to " + appDataFullPath + ". File does not exist"); streamErrorWrapper.ErrorStatus = ErrorStatus.NoData; streamErrorWrapper.ErrorSeverity = ErrorSeverity.Retriable; streamErrorWrapper.ErrorCode = "WARN:001"; streamErrorWrapper.Message = "File does not exist"; streamErrorWrapper.ReturnStream = new MemoryStream(new byte[0]); // stream must not be null as it is the message body return(streamErrorWrapper); } TryReadFileWithReadLock(streamErrorWrapper, appDataFullPath); return(streamErrorWrapper); }
public StreamErrorWrapper GetComponentList(VersionParameterMessage message) { return(Channel.GetComponentList(message)); }