496c72e02280f0cc3059bdfae9f7291d0a0ccf7c
[ric-plt/xapp-frame-py.git] / examples / pong_xapp.py
1 """
2 Test xapp 2 that works with 1
3 """
4 # ==================================================================================
5 #       Copyright (c) 2020 Nokia
6 #       Copyright (c) 2020 AT&T Intellectual Property.
7 #
8 #   Licensed under the Apache License, Version 2.0 (the "License");
9 #   you may not use this file except in compliance with the License.
10 #   You may obtain a copy of the License at
11 #
12 #          http://www.apache.org/licenses/LICENSE-2.0
13 #
14 #   Unless required by applicable law or agreed to in writing, software
15 #   distributed under the License is distributed on an "AS IS" BASIS,
16 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 #   See the License for the specific language governing permissions and
18 #   limitations under the License.
19 # ==================================================================================
20 import json
21 from ricxappframe.xapp_frame import RMRXapp
22
23
24 # Note, this is an OOP pattern for this that I find slightly more natural
25 # The problem is we want the client xapp to be able to call methods defined in the RMRXapp
26 # Another exactly equivelent way would have been to use Closures like
27 # def consume(summary, sbuf):
28 #    xapp.rts()
29 # xapp = RMRXapp(consume)
30 # However, the subclass looks slightly more natural. Open to the alternative.
31
32
33 class MyXapp(RMRXapp):
34     def consume(self, summary, sbuf):
35         """callbnack called for each new message"""
36         print(summary)
37         jpay = json.loads(summary["payload"])
38         self.rmr_rts(sbuf, new_payload=json.dumps({"ACK": jpay["test_send"]}).encode(), new_mtype=60001, retries=100)
39         self.rmr_free(sbuf)
40
41
42 xapp = MyXapp(use_fake_sdl=True)
43 xapp.run()