Code Monkey home page Code Monkey logo

meson-py's Introduction

MesonPY

Backend Side (Py)

from MesonPy.BackendApplication import BackendApplication
from MesonPy import Constants

import controllers
import services.local as localServices
import services.shared as sharedServices

if __name__ == '__main__':
    # Init the backend application service
    app = BackendApplication(id='[APP ID]', server_secret='XXXX', client_secret='YYYY')

    # The RPC is a low-level service that will serve function to clients.
    # rpcService = app.getSharedService('com.rpc')

    # By using __session__ as a karg, the application will automatically inject the session
    # of the client who's calling the method
    # rpcService.register('hello', lambda __session__: print('hello from {}'.format(__session__.id)))
    # rpcService.register('add2', lambda x, y: x + y)

    # The service injector will inject local services to each instance,
    # and give access to shared services across the application
    serviceInjector = app.getSharedService(Constants.SERVICE_SERVICE_INJECTOR)

    # Define our to-be-injected local services, each local service get its instance context
    logger.info('Searching for local services in {}'.format(localServices.__name__))
    serviceInjector.addLocalServiceClasses(
        localServices
    )
    # Define our shared services, each shared service get its application context
    logger.info('Searching for shared services in {}'.format(sharedServices.__name__))
    serviceInjector.addSharedServiceClasses(
        sharedServices
    )
    # Load controllers
    # Controllers are built on top of RPC services to provide more
    # functionality and more context persistency accross the application.
    # Sessions are wrapped within instance contexts. Each instance context holds its local
    # memory pool, its local services and have access to a shared memory pool and services.
    logger.info('Searching for controllers in {}'.format(controllers.__name__))
    app.loadControllers(controllers)

    # Serve our application
    app.run()

controllers/FooController.py

import asyncio

class FooController:
    @asyncio.coroutine
    def actionBar(self, instanceContext):
    	instanceContext.emit('hello.world')
	localService = instanceContext.getLocalService('services.local.MyLocalService')
        var = localService.HelloWorld()
	return var

services/local/MyLocalService.py

class MyLocalService:
    def __init__(self, instanceContext):
        self.instanceContext = instanceContext
	self.instanceContext.on('hello.world', self.log)
    def HelloWorld(self):
    	return 'Hello world!'
    def log(self):
    	print('Event!')

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.