Source code for pacman.model.resources.reverse_iptag_resource
# Copyright (c) 2016 The University of Manchester
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from typing import Optional
class ReverseIPtagResource(object):
"""
Represents the ability to talk to a SpiNNaker machine by sending UDP
packets to it during execution.
"""
__slots__ = (
# The target port of the tag or None if this is to be assigned
# elsewhere
"_port",
# The SDP port number to be used when constructing SDP packets from
# the received UDP packets for this tag
"_sdp_port",
# A fixed tag ID to assign, or None if any tag is OK
"_tag")
def __init__(self, port: Optional[int] = None, sdp_port: int = 1,
tag: Optional[int] = None):
"""
:param port: The UDP port to listen to on the board for this tag
or `None` for a default
:type port: int or None
:param int sdp_port:
The SDP port number to be used when constructing SDP packets from
the received UDP packets for this tag
:param tag: A fixed tag ID to assign, or `None` if any tag is OK
:type tag: int or None
"""
self._port = port
self._sdp_port = sdp_port
self._tag = tag
@property
def port(self) -> Optional[int]:
"""
The port of the tag.
:rtype: int
"""
return self._port
@property
def sdp_port(self) -> int:
"""
The SDP port to use when constructing the SDP message from the
received UDP message.
:rtype: int
"""
return self._sdp_port
@property
def tag(self) -> Optional[int]:
"""
The tag required, or `None` if any tag is OK.
:rtype: int or None
"""
return self._tag
[docs]
def get_value(self):
"""
:return: The description of the reverse IP tag.
:rtype: list(int, int, int)
"""
return [self._port, self._sdp_port, self._tag]
def __repr__(self):
return (f"ReverseIPTagResource(port={self._port}, "
f"sdp_port={self._sdp_port}, tag={self._tag})")
def __eq__(self, other):
if not isinstance(other, ReverseIPtagResource):
return False
return (self._port == other._port and
self._sdp_port == other._sdp_port and
self._tag == other._tag)
def __hash__(self):
return hash((self._port, self._sdp_port, self._tag))
def __ne__(self, other):
return not self.__eq__(other)