def watchdog(address): return zmq_util.router_share_async(WatchdogExport(), address)
cashier = Cashier(session, accountant, bitcoinrpc, compropago, cold_wallet_period=cold_wallet_period, sendmail=sendmail, minimum_confirmations=minimum_confirmations, alerts=alerts_proxy, bitgo=bitgo, bitgo_private_key_file=bitgo_private_key_file, testnet=config.getboolean("cashier", "testnet"), ) administrator_export = AdministratorExport(cashier) accountant_export = AccountantExport(cashier) webserver_export = WebserverExport(cashier) watchdog(config.get("watchdog", "cashier")) router_share_async(administrator_export, config.get("cashier", "administrator_export")) pull_share_async(accountant_export, config.get("cashier", "accountant_export")) router_share_async(webserver_export, config.get("cashier", "webserver_export")) public_server = Resource() public_server.putChild('compropago', CompropagoHook(cashier)) private_server = Resource() private_server.putChild('bitcoin', BitcoinNotify(cashier)) if config.getboolean("webserver", "ssl"): key = config.get("webserver", "ssl_key") cert = config.get("webserver", "ssl_cert") cert_chain = config.get("webserver", "ssl_cert_chain")
ticker = args[0] try: contract = session.query(models.Contract).filter_by(ticker=ticker).one() except Exception, e: session.rollback() log.err("Cannot determine ticker id. %s" % e) log.err() raise e engine = Engine() administrator_export = AdministratorExport(engine) accountant_port = config.getint("engine", "accountant_base_port") + contract.id administrator_port = config.getint("engine", "administrator_base_port") + contract.id router_share_async(administrator_export, "tcp://127.0.0.1:%d" % administrator_port) logger = LoggingListener(engine, contract) accountant = accountant.AccountantProxy("push", config.get("accountant", "engine_export"), config.getint("accountant", "engine_export_base_port")) accountant_notifier = AccountantNotifier(engine, accountant, contract) webserver = push_proxy_async(config.get("webserver", "engine_export")) webserver_notifier = WebserverNotifier(engine, webserver, contract) watchdog(config.get("watchdog", "engine") % (config.getint("watchdog", "engine_base_port") + contract.id)) forwarder = connect_publisher(config.get("safe_price_forwarder", "zmq_frontend_address"))
compropago, cold_wallet_period=cold_wallet_period, sendmail=sendmail, minimum_confirmations=minimum_confirmations, alerts=alerts_proxy, bitgo=bitgo, bitgo_private_key_file=bitgo_private_key_file, testnet=config.getboolean("cashier", "testnet"), ) administrator_export = AdministratorExport(cashier) accountant_export = AccountantExport(cashier) webserver_export = WebserverExport(cashier) watchdog(config.get("watchdog", "cashier")) router_share_async(administrator_export, config.get("cashier", "administrator_export")) pull_share_async(accountant_export, config.get("cashier", "accountant_export")) router_share_async(webserver_export, config.get("cashier", "webserver_export")) public_server = Resource() public_server.putChild('compropago', CompropagoHook(cashier)) private_server = Resource() private_server.putChild('bitcoin', BitcoinNotify(cashier)) if config.getboolean("webserver", "ssl"): key = config.get("webserver", "ssl_key") cert = config.get("webserver", "ssl_cert") cert_chain = config.get("webserver", "ssl_cert_chain") contextFactory = util.ChainedOpenSSLContextFactory(key, cert_chain)
quantity, direction, note=None, timestamp=None): if timestamp is None: timestamp = util.dt_to_timestamp(datetime.datetime.utcnow()) return { "username": username, "contract": contract, "quantity": quantity, "direction": direction, "note": note, "type": type, "timestamp": timestamp } if __name__ == "__main__": fo = log.startLogging(sys.stdout) fo.formatTime = lambda x: datetime.datetime.fromtimestamp(x).strftime( "%Y-%m-%d %H:%M:%S.%f") engine = database.make_engine() timeout = config.getint("ledger", "timeout") ledger = Ledger(engine, timeout) accountant_export = AccountantExport(ledger) watchdog(config.get("watchdog", "ledger")) router_share_async(accountant_export, config.get("ledger", "accountant_export")) reactor.run()
class AccountantExport(ComponentExport): def __init__(self, ledger): self.ledger = ledger ComponentExport.__init__(self, ledger) @export @schema("rpc/ledger.json#post") def post(self, *postings): return self.ledger.post(list(postings)) def create_posting(type, username, contract, quantity, direction, note=None, timestamp=None): if timestamp is None: timestamp = util.dt_to_timestamp(datetime.datetime.utcnow()) return {"username":username, "contract":contract, "quantity":quantity, "direction":direction, "note": note, "type": type, "timestamp": timestamp} if __name__ == "__main__": fo = log.startLogging(sys.stdout) fo.formatTime = lambda x: datetime.datetime.fromtimestamp(x).strftime("%Y-%m-%d %H:%M:%S.%f") engine = database.make_engine() timeout = config.getint("ledger", "timeout") ledger = Ledger(engine, timeout) accountant_export = AccountantExport(ledger) watchdog(config.get("watchdog", "ledger")) router_share_async(accountant_export, config.get("ledger", "accountant_export")) reactor.run()