Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
 }