Пример #1
0
        /// <summary>
        /// Creates info from a net request
        /// </summary>
        /// <param name="fromReq"></param>
        public AssetRequestInfo(TransferRequestPacket fromReq, IClientAPI userInfo)
        {
            _origin = RequestOrigin.SRC_NET;
            _netSrc = (NetSourceType)fromReq.TransferInfo.SourceType;

            if (fromReq.TransferInfo.SourceType == 2)
            {
                //direct asset request
                _requestedId = new UUID(fromReq.TransferInfo.Params, 0);
            }
            else if (fromReq.TransferInfo.SourceType == 3)
            {
                //inventory asset request
                _requestedId = new UUID(fromReq.TransferInfo.Params, 80);
            }
            else if (fromReq.TransferInfo.SourceType == 4)
            {
                //sim estate request
                //We have to just send the covenent in this case,
                // I've looked through the params, and the UUID
                // of the covenent isn't in there (Matt Beardmore)
                _requestedId = userInfo.Scene.RegionInfo.RegionSettings.Covenant;
            }

            _transferId = fromReq.TransferInfo.TransferID;
            _params     = fromReq.TransferInfo.Params;
        }
Пример #2
0
        /// <summary>
        /// Creates an event object from a node object.
        /// </summary>
        /// <param name="Node">Node added.</param>
        /// <param name="Language">Language</param>
        /// <param name="Caller">Original caller.</param>
        /// <param name="Sniffable">If the node is sniffable.</param>
        public static async Task <NodeAdded> FromNode(INode Node, Language Language, RequestOrigin Caller, bool Sniffable)
        {
            List <Parameter> Parameters = new List <Parameter>();

            foreach (Parameter P in await Node.GetDisplayableParametersAsync(Language, Caller))
            {
                Parameters.Add(P);
            }

            return(new NodeAdded()
            {
                Parameters = Parameters.ToArray(),
                NodeType = Node.GetType().FullName,
                Sniffable = Sniffable,
                DisplayName = await Node.GetTypeNameAsync(Language),
                HasChildren = Node.HasChildren,
                ChildrenOrdered = Node.ChildrenOrdered,
                IsReadable = Node.IsReadable,
                IsControllable = Node.IsControllable,
                HasCommands = Node.HasCommands,
                ParentId = Node.Parent?.NodeId ?? string.Empty,
                ParentPartition = Node.Parent?.Partition ?? string.Empty,
                Updated = DateTime.MinValue,
                State = Node.State,
                NodeId = Node.NodeId,
                Partition = Node.Partition,
                LogId = EmptyIfSame(Node.LogId, Node.NodeId),
                LocalId = EmptyIfSame(Node.LocalId, Node.NodeId),
                SourceId = Node.SourceId,
                Timestamp = DateTime.Now
            });
        }
Пример #3
0
        /// <summary>
        /// Tries to move the child node down.
        /// </summary>
        /// <param name="Child">Child node to move.</param>
        /// <param name="Caller">Information about caller.</param>
        /// <returns>If the child node was moved down.</returns>
        public virtual async Task <bool> MoveDownAsync(MeteringNode Child, RequestOrigin Caller)
        {
            if (!this.ChildrenOrdered || this.children == null)
            {
                return(false);
            }

            if (!await this.CanEditAsync(Caller) || !await Child.CanEditAsync(Caller))
            {
                return(false);
            }

            lock (this.children)
            {
                int c = this.children.Count;
                int i = this.children.IndexOf(Child);
                if (i < 0 || i + 1 >= c)
                {
                    return(false);
                }

                this.children.RemoveAt(i);
                this.children.Insert(i + 1, Child);
            }

            await MeteringTopology.NewEvent(new NodeMovedDown()
            {
                NodeId    = Child.NodeId,
                Partition = Child.Partition,
                SourceId  = Child.SourceId,
                Timestamp = DateTime.Now
            });

            return(true);
        }
Пример #4
0
		/// <summary>
		/// Gets messages logged on the node.
		/// </summary>
		/// <returns>Set of messages.</returns>
		public virtual async Task<IEnumerable<Message>> GetMessagesAsync(RequestOrigin Caller)
		{
			IEnumerable<MeteringMessage> Messages = await Database.Find<MeteringMessage>(
				new FilterFieldEqualTo("NodeId", this.objectId), "Timestamp");
			LinkedList<Message> Result = new LinkedList<Message>();

			foreach (MeteringMessage Msg in Messages)
				Result.AddLast(new Message(Msg.Created, Msg.Type, Msg.EventId, Msg.Body));  // TODO: Include Updated & Count also.

			return Result;
		}
Пример #5
0
        /// <summary>
        /// Gets messages logged on the node.
        /// </summary>
        /// <returns>Array of messages.</returns>
        public async Task <Message[]> GetMessageArrayAsync(RequestOrigin Caller)
        {
            List <Message> Result = new List <Message>();

            foreach (Message Msg in await this.GetMessagesAsync(Caller))
            {
                Result.Add(Msg);
            }

            return(Result.ToArray());
        }
Пример #6
0
        /// <summary>
        /// Tries to move the node down.
        /// </summary>
        /// <param name="Caller">Information about caller.</param>
        /// <returns>If the node was moved down.</returns>
        public virtual Task <bool> MoveDownAsync(RequestOrigin Caller)
        {
            MeteringNode Parent = this.Parent as MeteringNode;

            if (Parent == null)
            {
                return(Task.FromResult <bool>(false));
            }
            else
            {
                return(Parent.MoveDownAsync(this, Caller));
            }
        }
Пример #7
0
 /// <summary>
 /// Creates an event object from a node object.
 /// </summary>
 /// <param name="Node">Node added.</param>
 /// <param name="Language">Language</param>
 /// <param name="Caller">Original caller.</param>
 /// <param name="OldId">Old Node ID, if differrent from previous NodeId.</param>
 public static Task <NodeUpdated> FromNode(INode Node, Language Language, RequestOrigin Caller, string OldId)
 {
     return(FromNode(Node, Language, Caller, OldId, null));
 }
Пример #8
0
 public override Task <object> OnUnhandledReceive(RequestOrigin origin, object message)
 {
     origins.Add(new Tuple <string, bool>(origin.Behavior, origin.Timer));
     return(TaskResult.Done);
 }
Пример #9
0
 /// <summary>
 /// Creates an event object from a node object.
 /// </summary>
 /// <param name="Node">Node added.</param>
 /// <param name="Language">Language</param>
 /// <param name="Caller">Original caller.</param>
 public static Task <NodeUpdated> FromNode(INode Node, Language Language, RequestOrigin Caller)
 {
     return(FromNode(Node, Language, Caller, string.Empty));
 }
Пример #10
0
 public Task <bool> CanViewAsync(RequestOrigin Caller)
 {
     return(Task.FromResult <bool>(true));
 }
Пример #11
0
 public Task <bool> MoveDownAsync(RequestOrigin Caller)
 {
     return(Task.FromResult <bool>(false));
 }
Пример #12
0
        public async Task <IEnumerable <Parameter> > GetDisplayableParametersAsync(Language Language, RequestOrigin Caller)
        {
            LinkedList <Parameter> Parameters = new LinkedList <Parameter>();

            if (App.Instance.Output.HasValue)
            {
                Parameters.AddLast(new BooleanParameter("Output", await Language.GetStringAsync(typeof(MeteringTopology), 6, "Output"), App.Instance.Output.Value));
            }

            return(Parameters);
        }
Пример #13
0
        /// <summary>
        /// Gets displayable parameters.
        /// </summary>
        /// <param name="Language">Language to use.</param>
        /// <param name="Caller">Information about caller.</param>
        /// <returns>Set of displayable parameters.</returns>
        public async override Task <IEnumerable <Parameter> > GetDisplayableParametersAsync(Language Language, RequestOrigin Caller)
        {
            LinkedList <Parameter> Result = await base.GetDisplayableParametersAsync(Language, Caller) as LinkedList <Parameter>;

            Result.AddLast(new Int32Parameter("Port", await Language.GetStringAsync(typeof(IpHost), 10, "Port"), this.port));

            return(Result);
        }
Пример #14
0
 public override Task <object> OnUnhandledReceive(RequestOrigin origin, object message)
 {
     UnhandledMessage       = message;
     UnhandledMessageOrigin = origin;
     return(Task.FromResult((object)"test"));
 }
Пример #15
0
		/// <summary>
		/// Tries to move the node down.
		/// </summary>
		/// <param name="Caller">Information about caller.</param>
		/// <returns>If the node was moved down.</returns>
		public virtual Task<bool> MoveDownAsync(RequestOrigin Caller)
		{
			return Task.FromResult<bool>(false);
		}
Пример #16
0
		/// <summary>
		/// If the node can be added to by the caller.
		/// </summary>
		/// <param name="Caller">Information about caller.</param>
		/// <returns>If the node can be added to by the caller.</returns>
		public virtual Task<bool> CanDestroyAsync(RequestOrigin Caller)
		{
			return Task.FromResult<bool>(true);     // TODO: Check user privileges
		}
Пример #17
0
 public virtual Task <object> OnUnhandledReceive(RequestOrigin origin, object message) =>
 throw new UnhandledMessageException(this, message);
        /// <summary>
        /// Gets displayable parameters.
        /// </summary>
        /// <param name="Language">Language to use.</param>
        /// <param name="Caller">Information about caller.</param>
        /// <returns>Set of displayable parameters.</returns>
        public override async Task <IEnumerable <Parameter> > GetDisplayableParametersAsync(Language Language, RequestOrigin Caller)
        {
            LinkedList <Parameter> Result = await base.GetDisplayableParametersAsync(Language, Caller) as LinkedList <Parameter>;

            Result.AddLast(new BooleanParameter("Provisioned", await Language.GetStringAsync(typeof(MeteringTopology), 25, "Provisioned"), this.provisioned));

            if (this.provisioned)
            {
                Result.AddLast(new StringParameter("Owner", await Language.GetStringAsync(typeof(MeteringTopology), 26, "Owner"), this.owner));
                Result.AddLast(new BooleanParameter("Public", await Language.GetStringAsync(typeof(MeteringTopology), 27, "Public"), this.isPublic));
            }

            return(Result);
        }
Пример #19
0
        /// <summary>
        /// Gets displayable parameters.
        /// </summary>
        /// <param name="Language">Language to use.</param>
        /// <param name="Caller">Information about caller.</param>
        /// <returns>Set of displayable parameters.</returns>
        public virtual async Task <IEnumerable <Parameter> > GetDisplayableParametersAsync(Language Language, RequestOrigin Caller)
        {
            Namespace Namespace = await Language.GetNamespaceAsync(typeof(MeteringNode).Namespace);

            if (Namespace == null)
            {
                Namespace = await Language.CreateNamespaceAsync(typeof(MeteringNode).Namespace);
            }

            LinkedList <Parameter> Result = new LinkedList <Parameter>();
            string s;

            Result.AddLast(new StringParameter("NodeId", await Namespace.GetStringAsync(1, "Node ID"), this.nodeId));
            Result.AddLast(new StringParameter("Type", await Namespace.GetStringAsync(4, "Type"), await this.GetTypeNameAsync(Language)));

            if (this.parent != null)
            {
                Result.AddLast(new StringParameter("ParentId", await Namespace.GetStringAsync(2, "Parent ID"), this.parent.nodeId));
            }

            if (!this.childrenLoaded)
            {
                await this.LoadChildren();
            }

            if (this.children != null)
            {
                int i;

                lock (this.synchObject)
                {
                    i = this.children.Count;
                }

                Result.AddLast(new Int32Parameter("NrChildren", await Namespace.GetStringAsync(3, "#Children"), i));
            }

            switch (this.state)
            {
            case NodeState.Information:
                s = await Namespace.GetStringAsync(8, "Information");

                break;

            case NodeState.WarningUnsigned:
                s = await Namespace.GetStringAsync(9, "Unsigned Warning");

                break;

            case NodeState.WarningSigned:
                s = await Namespace.GetStringAsync(10, "Warning");

                break;

            case NodeState.ErrorUnsigned:
                s = await Namespace.GetStringAsync(11, "Unsigned Error");

                break;

            case NodeState.ErrorSigned:
                s = await Namespace.GetStringAsync(12, "Error");

                break;

            case NodeState.None:
            default:
                s = null;
                break;
            }

            if (!string.IsNullOrEmpty(s))
            {
                Result.AddLast(new StringParameter("State", await Namespace.GetStringAsync(5, "State"), s));
            }

            Result.AddLast(new DateTimeParameter("Created", await Namespace.GetStringAsync(6, "Created"), this.created));

            if (this.updated != DateTime.MinValue)
            {
                Result.AddLast(new DateTimeParameter("Updated", await Namespace.GetStringAsync(7, "Updated"), this.updated));
            }

            return(Result);
        }
Пример #20
0
        public override async Task <IEnumerable <Parameter> > GetDisplayableParametersAsync(Language Language, RequestOrigin Caller)
        {
            LinkedList <Parameter> Result = await base.GetDisplayableParametersAsync(Language, Caller) as LinkedList <Parameter>;

            Result.AddLast(new StringParameter("Pin", await Language.GetStringAsync(typeof(Module), 18, "Pin"), this.PinNrStr));

            return(Result);
        }
Пример #21
0
 public Task <IEnumerable <Message> > GetMessagesAsync(RequestOrigin Caller)
 {
     return(Task.FromResult <IEnumerable <Message> >(null));
 }
Пример #22
0
        public async Task <IEnumerable <Parameter> > GetDisplayableParametersAsync(Language Language, RequestOrigin Caller)
        {
            LinkedList <Parameter> Parameters = new LinkedList <Parameter>();

            if (App.Instance.Light.HasValue)
            {
                Parameters.AddLast(new DoubleParameter("Light", await Language.GetStringAsync(typeof(MeteringTopology), 2, "Light (%)"), App.Instance.Light.Value));
            }

            if (App.Instance.Motion.HasValue)
            {
                Parameters.AddLast(new BooleanParameter("Motion", await Language.GetStringAsync(typeof(MeteringTopology), 3, "Motion"), App.Instance.Motion.Value));
            }

            return(Parameters);
        }
Пример #23
0
 public Task <bool> CanEditAsync(RequestOrigin Caller)
 {
     return(Task.FromResult <bool>(false));
 }
Пример #24
0
        public async Task <IEnumerable <Parameter> > GetDisplayableParametersAsync(LinkedList <Parameter> Parameters,
                                                                                   Language Language, RequestOrigin _)
        {
            if (this.data != null)
            {
                Parameters.AddLast(new StringParameter("Type", await Language.GetStringAsync(typeof(MqttTopicNode), 25, "Type"),
                                                       await this.data.GetTypeName(Language)));
            }

            if (this.dataCount > 0)
            {
                Parameters.AddLast(new Int64Parameter("Data Count", await Language.GetStringAsync(typeof(MqttTopicNode), 26, "Data Count"),
                                                      this.dataCount));
            }

            return(Parameters);
        }
Пример #25
0
 /// <summary>
 /// If the data source is visible to the caller.
 /// </summary>
 /// <param name="Caller">Information about caller.</param>
 /// <returns>If the source is visible to the caller.</returns>
 public Task <bool> CanViewAsync(RequestOrigin Caller)
 {
     return(Task.FromResult <bool>(true));               // TODO: Check user privileges
 }
Пример #26
0
        /// <summary>
        /// Gets displayable parameters.
        /// </summary>
        /// <param name="Language">Language to use.</param>
        /// <param name="Caller">Information about caller.</param>
        /// <returns>Set of displayable parameters.</returns>
        public override async Task <IEnumerable <Parameter> > GetDisplayableParametersAsync(Language Language, RequestOrigin Caller)
        {
            LinkedList <Parameter> Result = await base.GetDisplayableParametersAsync(Language, Caller) as LinkedList <Parameter>;

            if (!string.IsNullOrEmpty(this.name))
            {
                Result.AddLast(new StringParameter("Name", await Language.GetStringAsync(typeof(MeteringTopology), 30, "Name"), this.name));
            }

            if (!string.IsNullOrEmpty(this.className))
            {
                Result.AddLast(new StringParameter("Class", await Language.GetStringAsync(typeof(MeteringTopology), 33, "Class"), this.className));
            }

            if (!string.IsNullOrEmpty(this.serialNumber))
            {
                Result.AddLast(new StringParameter("SerialNumber", await Language.GetStringAsync(typeof(MeteringTopology), 36, "S/N"), this.serialNumber));
            }

            if (!string.IsNullOrEmpty(this.meterNumber))
            {
                Result.AddLast(new StringParameter("MeterNumber", await Language.GetStringAsync(typeof(MeteringTopology), 39, "Meter Nr."), this.meterNumber));
            }

            if (!string.IsNullOrEmpty(this.meterLocation))
            {
                Result.AddLast(new StringParameter("MeterLocation", await Language.GetStringAsync(typeof(MeteringTopology), 42, "Meter Loc."), this.meterLocation));
            }

            if (!string.IsNullOrEmpty(this.manufacturerDomain))
            {
                Result.AddLast(new StringParameter("Manufacturer", await Language.GetStringAsync(typeof(MeteringTopology), 45, "Manufacturer"), this.manufacturerDomain));
            }

            if (!string.IsNullOrEmpty(this.model))
            {
                Result.AddLast(new StringParameter("Model", await Language.GetStringAsync(typeof(MeteringTopology), 48, "Model"), this.model));
            }

            if (this.version.HasValue)
            {
                Result.AddLast(new StringParameter("Version", await Language.GetStringAsync(typeof(MeteringTopology), 80, "Version"), this.version.ToString()));
            }

            if (!string.IsNullOrEmpty(this.country))
            {
                Result.AddLast(new StringParameter("Country", await Language.GetStringAsync(typeof(MeteringTopology), 54, "Country"), this.country));
            }

            if (!string.IsNullOrEmpty(this.region))
            {
                Result.AddLast(new StringParameter("Region", await Language.GetStringAsync(typeof(MeteringTopology), 57, "Region"), this.region));
            }

            if (!string.IsNullOrEmpty(this.city))
            {
                Result.AddLast(new StringParameter("City", await Language.GetStringAsync(typeof(MeteringTopology), 60, "City"), this.city));
            }

            if (!string.IsNullOrEmpty(this.area))
            {
                Result.AddLast(new StringParameter("Area", await Language.GetStringAsync(typeof(MeteringTopology), 63, "Area"), this.area));
            }

            string s = this.StreetAndNr;

            if (!string.IsNullOrEmpty(s))
            {
                Result.AddLast(new StringParameter("Street", await Language.GetStringAsync(typeof(MeteringTopology), 66, "Street"), s));
            }

            if (!string.IsNullOrEmpty(this.building))
            {
                Result.AddLast(new StringParameter("Building", await Language.GetStringAsync(typeof(MeteringTopology), 71, "Building"), this.building));
            }

            if (!string.IsNullOrEmpty(this.apartment))
            {
                Result.AddLast(new StringParameter("Apartment", await Language.GetStringAsync(typeof(MeteringTopology), 74, "Apartment"), this.apartment));
            }

            if (!string.IsNullOrEmpty(this.room))
            {
                Result.AddLast(new StringParameter("Room", await Language.GetStringAsync(typeof(MeteringTopology), 77, "Room"), this.room));
            }

            if (this.latitude.HasValue)
            {
                Result.AddLast(new StringParameter("Latitude", await Language.GetStringAsync(typeof(MeteringTopology), 88, "Latitude"), this.latitude.ToString()));
            }

            if (this.longitude.HasValue)
            {
                Result.AddLast(new StringParameter("Longitude", await Language.GetStringAsync(typeof(MeteringTopology), 89, "Longitude"), this.longitude.ToString()));
            }

            if (this.altitude.HasValue)
            {
                Result.AddLast(new StringParameter("Altitude", await Language.GetStringAsync(typeof(MeteringTopology), 90, "Altitude"), this.altitude.ToString()));
            }

            return(Result);
        }
Пример #27
0
        public override async Task <IEnumerable <Parameter> > GetDisplayableParametersAsync(Language Language, RequestOrigin Caller)
        {
            LinkedList <Parameter> Result = await base.GetDisplayableParametersAsync(Language, Caller) as LinkedList <Parameter>;

            Result.AddLast(new StringParameter("Mode", await Language.GetStringAsync(typeof(Controller), 23, "Mode"), this.mode.ToString()));

            return(Result);
        }
Пример #28
0
 /// <summary>
 /// Creates an event object from a node object.
 /// </summary>
 /// <param name="Node">Node added.</param>
 /// <param name="Language">Language</param>
 /// <param name="Caller">Original caller.</param>
 /// <param name="Sniffable">If the node is sniffable.</param>
 public static Task <NodeAdded> FromNode(INode Node, Language Language, RequestOrigin Caller, bool Sniffable)
 {
     return(FromNode(Node, Language, Caller, Sniffable, null));
 }
Пример #29
0
 /// <summary>
 /// Creates an event object from a node object.
 /// </summary>
 /// <param name="Node">Node added.</param>
 /// <param name="Language">Language</param>
 /// <param name="Caller">Original caller.</param>
 /// <param name="AdditionalParameters">Additional node parameters.</param>
 public static Task <NodeUpdated> FromNode(INode Node, Language Language, RequestOrigin Caller,
                                           params Parameter[] AdditionalParameters)
 {
     return(FromNode(Node, Language, Caller, string.Empty, AdditionalParameters));
 }
Пример #30
0
        /// <summary>
        /// Creates info from a net request
        /// </summary>
        /// <param name="fromReq"></param>
        public AssetRequestInfo(TransferRequestPacket fromReq, IClientAPI userInfo)
        {
            _origin = RequestOrigin.SRC_NET;
            _netSrc = (NetSourceType)fromReq.TransferInfo.SourceType;
            _netChannel = (NetChannelType)fromReq.TransferInfo.ChannelType;

            if (fromReq.TransferInfo.SourceType == 2)
            {
                //direct asset request
                _requestedId = new UUID(fromReq.TransferInfo.Params, 0);
            }
            else if (fromReq.TransferInfo.SourceType == 3)
            {
                //inventory asset request
                _requestedId = new UUID(fromReq.TransferInfo.Params, 80);
            }
            else if (fromReq.TransferInfo.SourceType == 4)
            {
                //sim estate request
                //We have to just send the covenent in this case,
                // I've looked through the params, and the UUID
                // of the covenent isn't in there (Matt Beardmore)
                _requestedId = userInfo.Scene.RegionInfo.RegionSettings.Covenant;
            }

            _transferId = fromReq.TransferInfo.TransferID;
            _params = fromReq.TransferInfo.Params;
        }
Пример #31
0
        /// <summary>
        /// Creates an event object from a node object.
        /// </summary>
        /// <param name="Node">Node added.</param>
        /// <param name="Language">Language</param>
        /// <param name="Caller">Original caller.</param>
        /// <param name="OldId">Old Node ID, if differrent from previous NodeId.</param>
        /// <param name="AdditionalParameters">Additional node parameters.</param>
        public static async Task <NodeUpdated> FromNode(INode Node, Language Language, RequestOrigin Caller, string OldId,
                                                        params Parameter[] AdditionalParameters)
        {
            List <Parameter> Parameters = new List <Parameter>();

            foreach (Parameter P in await Node.GetDisplayableParametersAsync(Language, Caller))
            {
                Parameters.Add(P);
            }

            if (!(AdditionalParameters is null))
            {
                foreach (Parameter P in AdditionalParameters)
                {
                    Parameters.Add(P);
                }
            }

            return(new NodeUpdated()
            {
                OldId = OldId,
                Parameters = Parameters.ToArray(),
                HasChildren = Node.HasChildren,
                ChildrenOrdered = Node.ChildrenOrdered,
                IsReadable = Node.IsReadable,
                IsControllable = Node.IsControllable,
                HasCommands = Node.HasCommands,
                ParentId = Node.Parent?.NodeId ?? string.Empty,
                ParentPartition = Node.Parent?.Partition ?? string.Empty,
                Updated = DateTime.Now,
                State = Node.State,
                NodeId = Node.NodeId,
                Partition = Node.Partition,
                LogId = NodeAdded.EmptyIfSame(Node.LogId, Node.NodeId),
                LocalId = NodeAdded.EmptyIfSame(Node.LocalId, Node.NodeId),
                SourceId = Node.SourceId,
                Timestamp = DateTime.Now
            });
        }
Пример #32
0
 /// <summary>
 /// Creates request info with the given origin
 /// </summary>
 /// <param name="origin"></param>
 public AssetRequestInfo(RequestOrigin origin)
 {
     _origin = origin;
 }