endurox.tprun

endurox.tprun(server: object, args: List[str]) None

Run Enduro/X ATMI server process. This transfer the control to ATMI server main loop.

ATMI Server
    import endurox as e

    class Server:

        def tpsvrinit(self, args):
            e.userlog('Server start')
            e.tpadvertise('SERVICE1', 'SERVICE1', self.SERVICE1)
            e.tpadvertise('SERVICE2', 'SERVICE2', self.SERVICE2)
            return 0

        # Optional used for Multi-threaded servers
        # configured by <mindispatchthreads> setting.
        def tpsvrthrinit(self, argv):
            e.userlog('Thread started')
            return 0

        # Optional used for Multi-threaded servers
        # configured by <mindispatchthreads> setting.
        def tpsvrthrdone(self):
            e.userlog('Thread done')

        def tpsvrdone(self):
            e.userlog('Server shutdown')

        # ATMI Service:
        def SERVICE1(self, args):
            return e.tpreturn(e.TPSUCCESS, 0, args.data)

        def SERVICE2(self, args):
            return e.tpreturn(e.TPSUCCESS, 0, args.data)

    if __name__ == '__main__':
        e.tprun(Server(), sys.argv)

At Server.tpsvrinit() server shall perform initialization, advertises, event subscriptions, configure pollers, etc. At Server.tpsvrdone() shutdown cleanups shall be performed.

In case if ATMI service code failed, caller receives TPESVCERR error, the error is logged to ulog and ATMI servers main loop continues until shutdown is received (e.g. xadmin stop -y).

For more details see tpsvrinit(3), tpsvrdone(3), tpservice(3), tpsvrthrinit(3), tpsvrthrdone(3) C API calls.