github.com/google/fleetspeak@v0.1.15-0.20240426164851-4f31f62c1aea/frr_python/frr_client.py (about)

     1  """FRR Fleetspeak client
     2  
     3  Receives TrafficRequestData messages from server service and responses with
     4  TrafficResponseData
     5  """
     6  
     7  from absl import app
     8  from fleetspeak.client_connector.connector import FleetspeakConnection
     9  from fleetspeak.src.common.proto.fleetspeak.common_pb2 import Message
    10  from fleetspeak.src.inttesting.frr.proto.fleetspeak_frr.frr_pb2 import TrafficRequestData
    11  from fleetspeak.src.inttesting.frr.proto.fleetspeak_frr.frr_pb2 import TrafficResponseData
    12  
    13  
    14  def main(argv):
    15    del argv  # Unused.
    16  
    17    connection = FleetspeakConnection(version="0.0.1")
    18    while True:
    19      request, _ = connection.Recv()
    20      if request.message_type != "TrafficRequest":
    21        continue
    22  
    23      request_data = TrafficRequestData()
    24      request.data.Unpack(request_data)
    25  
    26      response_data = TrafficResponseData(
    27          master_id=request_data.master_id,
    28          request_id=request_data.request_id,
    29          response_index=0,
    30          data=b"client response",
    31          fin=True,
    32      )
    33  
    34      response = Message()
    35      response.destination.service_name = request.source.service_name
    36      response.data.Pack(response_data)
    37      response.message_type = "TrafficResponse"
    38  
    39      connection.Send(response)
    40  
    41  
    42  if __name__ == "__main__":
    43    app.run(main)