internal override bool WriteRequest(EmberWriter writer, IStreamedParameterCollection streamedParameters)
        {
            if (this.RetrievalState.Equals(RetrievalState.None))
            {
                var isEmpty = this.children.Count == 0;

                if (isEmpty)
                {
                    writer.WriteStartApplicationDefinedType(
                        GlowElementCollection.Element.OuterId, GlowQualifiedNode.InnerNumber);
                    writer.WriteValue(GlowQualifiedNode.Path.OuterId, this.NumberPath);
                    writer.WriteStartApplicationDefinedType(
                        GlowQualifiedNode.Children.OuterId, GlowElementCollection.InnerNumber);
                }

                var result = this.WriteCommandCollection(writer, streamedParameters);

                if (isEmpty)
                {
                    writer.WriteEndContainer();
                    writer.WriteEndContainer();
                }

                return(result);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 2
0
        internal sealed override bool WriteRequest(EmberWriter writer, IStreamedParameterCollection streamedParameters)
        {
            writer.WriteStartApplicationDefinedType(GlowGlobal.Root.OuterId, GlowRootElementCollection.InnerNumber);
            var result = this.WriteCommandCollection(writer, streamedParameters);

            writer.WriteEndContainer();
            return(result);
        }
Ejemplo n.º 3
0
        internal sealed override bool WriteRequest(EmberWriter writer, IStreamedParameterCollection streamedParameters)
        {
            if (this.RetrievalState.Equals(RetrievalState.None))
            {
                writer.WriteStartApplicationDefinedType(
                    GlowElementCollection.Element.OuterId, GlowQualifiedParameter.InnerNumber);
                writer.WriteValue(GlowQualifiedParameter.Path.OuterId, this.NumberPath);
                writer.WriteStartApplicationDefinedType(
                    GlowQualifiedParameter.Children.OuterId, GlowElementCollection.InnerNumber);
                this.WriteCommandCollection(writer, GlowCommandNumber.Subscribe, RetrievalState.Complete);
                writer.WriteEndContainer();
                writer.WriteEndContainer();
                streamedParameters.Add(this);
            }

            return(false);
        }
        internal bool WriteCommandCollection(EmberWriter writer, IStreamedParameterCollection streamedParameters)
        {
            if (this.children.Count == 0)
            {
                this.WriteCommandCollection(writer, GlowCommandNumber.GetDirectory, RetrievalState.RequestSent);
                return(true);
            }
            else
            {
                var result = false;

                foreach (var child in this.children.Values)
                {
                    // We want to avoid short-circuit logic, which is why we use | rather than ||.
                    result |= child.WriteRequest(writer, streamedParameters);
                }

                return(result);
            }
        }
Ejemplo n.º 5
0
 /// <summary>Writes the payload of a message that contains appropriate requests for all elements that require
 /// one.</summary>
 /// <returns><c>true</c> if a provider response is expected due to the request; otherwise <c>false</c>.
 /// </returns>
 /// <remarks>Recursively visits all children with a state equal to <see cref="Model.RetrievalState.None"/>, writes
 /// a getDirectory command for nodes that do not yet have children or a subscribe command for stream parameters
 /// and changes their state accordingly.</remarks>
 internal virtual bool WriteRequest(EmberWriter writer, IStreamedParameterCollection streamedParameters) =>
 false;