コード例 #1
0
ファイル: server.py プロジェクト: jsj2008/kdegames
def kajonggServer():
    """start the server"""
    from optparse import OptionParser
    parser = OptionParser()
    defaultPort = InternalParameters.defaultPort()
    parser.add_option('', '--port', dest='port',
        help=m18n('the server will listen on PORT (%d)' % defaultPort),
        type=int, default=defaultPort)
    parser.add_option('', '--socket', dest='socket',
        help=m18n('the server will listen on SOCKET'), default=None)
    parser.add_option('', '--db', dest='dbpath', help=m18n('name of the database'), default=None)
    parser.add_option('', '--local', dest='local', action='store_true',
        help=m18n('start a local game server'), default=False)
    parser.add_option('', '--continue', dest='continueServer', action='store_true',
        help=m18n('do not terminate local game server after last client disconnects'), default=False)
    parser.add_option('', '--debug', dest='debug',
        help=Debug.help())
    (options, args) = parser.parse_args()
    if args and ''.join(args):
        logWarning(m18n('unrecognized arguments:%1', ' '.join(args)))
        sys.exit(2)
    InternalParameters.continueServer |= options.continueServer
    if options.dbpath:
        InternalParameters.dbPath = os.path.expanduser(options.dbpath)
    if options.local:
        InternalParameters.socket = socketName()
    if options.socket:
        InternalParameters.socket = options.socket
    Debug.setOptions(options.debug)
    Query.dbhandle = initDb()
    realm = MJRealm()
    realm.server = MJServer()
    kajonggPortal = portal.Portal(realm, [DBPasswordChecker()])
    # pylint: disable=E1101
    # pylint thinks reactor is missing listen* and run
    loadPredefinedRulesets()
    try:
        if InternalParameters.socket:
            if os.name == 'nt':
                logInfo('local server listening on 127.0.0.1 port %d' % options.port)
                reactor.listenTCP(options.port, pb.PBServerFactory(kajonggPortal),
                    interface='127.0.0.1')
            else:
                logInfo('local server listening on UNIX socket %s' % InternalParameters.socket)
                reactor.listenUNIX(InternalParameters.socket, pb.PBServerFactory(kajonggPortal))
        else:
            logInfo('server listening on port %d' % options.port)
            reactor.listenTCP(options.port, pb.PBServerFactory(kajonggPortal))
    except error.CannotListenError, errObj:
        logWarning(errObj)
コード例 #2
0
ファイル: kajonggtest.py プロジェクト: zero804/kajongg
def main():
    """parse options, play, evaluate results"""
    global OPTIONS  # pylint: disable=global-statement

    # we want only english in the logs because i18n and friends
    # behave differently in kde and kde
    os.environ['LANG'] = 'en_US.UTF-8'
    (OPTIONS, args) = parse_options()
    OPTIONS.csv = os.path.expanduser(
        os.path.join('~', '.kajongg', 'kajongg.csv'))
    if not os.path.exists(os.path.dirname(OPTIONS.csv)):
        os.makedirs(os.path.dirname(OPTIONS.csv))

    removeInvalidCommits(OPTIONS.csv)

    improve_options()

    evaluate(readGames(OPTIONS.csv))

    errorMessage = Debug.setOptions(','.join(OPTIONS.debug))
    if errorMessage:
        print(errorMessage)
        sys.exit(2)

    if args and ''.join(args):
        print('unrecognized arguments:', ' '.join(args))
        sys.exit(2)

    print()

    if OPTIONS.count:
        doJobs()
        if OPTIONS.csv:
            evaluate(readGames(OPTIONS.csv))
コード例 #3
0
ファイル: kajongg.py プロジェクト: ospalh/kajongg-fork
def parseOptions():
    """parse command line options and save the values"""
    args = KCmdLineArgs.parsedArgs()
    Internal.app = APP
    Options.playOpen |= args.isSet('playopen')
    Options.showRulesets|= args.isSet('rulesets')
    Options.rulesetName = str(args.getOption('ruleset'))
    if args.isSet('host'):
        Options.host = str(args.getOption('host'))
    if args.isSet('player'):
        Options.player = str(args.getOption('player'))
    if args.isSet('ai'):
        Options.AI = str(args.getOption('ai'))
    if args.isSet('csv'):
        Options.csv = str(args.getOption('csv'))
    if args.isSet('socket'):
        Options.socket = str(args.getOption('socket'))
    SingleshotOptions.game = str(args.getOption('game'))
    Options.gui |= args.isSet('gui')
    if args.isSet('table'):
        SingleshotOptions.table = int(args.getOption('table'))
    if args.isSet('join'):
        SingleshotOptions.join = int(args.getOption('join'))
    Options.demo |= args.isSet('demo')
    Options.demo |= not Options.gui
    Internal.autoPlay = Options.demo
    msg = Debug.setOptions(str(args.getOption('debug')))
    if msg:
        print msg
        sys.exit(2)
    from query import initDb
    if not initDb():
        raise SystemExit('Cannot initialize database')
    initRulesets()
    Options.fixed = True # may not be changed anymore
コード例 #4
0
def parseArgs():
    """as the name says"""
    from optparse import OptionParser
    parser = OptionParser()
    defaultPort = Internal.defaultPort
    parser.add_option('',
                      '--port',
                      dest='port',
                      help=i18n('the server will listen on PORT (%d)' %
                                defaultPort),
                      type=int,
                      default=defaultPort)
    parser.add_option('',
                      '--socket',
                      dest='socket',
                      help=i18n('the server will listen on SOCKET'),
                      default=None)
    parser.add_option('',
                      '--db',
                      dest='dbpath',
                      help=i18n('name of the database'),
                      default=None)
    parser.add_option(
        '',
        '--continue',
        dest='continueServer',
        action='store_true',
        help=i18n(
            'do not terminate local game server after last client disconnects'
        ),
        default=False)
    parser.add_option('', '--debug', dest='debug', help=Debug.help())
    (options, args) = parser.parse_args()
    if args and ''.join(args):
        logWarning(i18n('unrecognized arguments:%1', ' '.join(args)))
        sys.exit(2)
    Options.continueServer |= options.continueServer
    if options.dbpath:
        Options.dbPath = os.path.expanduser(options.dbpath)
    if options.socket:
        Options.socket = options.socket
    Debug.setOptions(options.debug)
    Options.fixed = True  # may not be changed anymore
    del parser  # makes Debug.gc quieter
    return options
コード例 #5
0
def main():
    """parse options, play, evaluate results"""
    print

    (options, args) = parse_options()

    options = improve_options(options)

    errorMessage = Debug.setOptions(options.debug)
    if errorMessage:
        print errorMessage
        sys.exit(2)

    if args and ''.join(args):
        print 'unrecognized arguments:', ' '.join(args)
        sys.exit(2)

    evaluate(readGames(options.csv))

    if not options.count and not options.fill:
        sys.exit(0)

    if not options.aiVariants:
        options.aiVariants = 'Default'

    serverProcesses = startServers(options)
    try:
        if options.fill:
            jobs = proposeGames(readGames(options.csv), options.aiVariants)
            doJobs(jobs, options, serverProcesses)

        if options.count:
            if options.game:
                games = list(
                    range(int(options.game), options.game + options.count))
            else:
                games = list(
                    int(random.random() * 10**9) for _ in range(options.count))
            jobs = []
            allAis = options.aiVariants.split(',')
            for game in games:
                jobs.extend([(x, game) for x in allAis])
            doJobs(jobs, options, serverProcesses)
    finally:
        stopServers(serverProcesses)

    evaluate(readGames(options.csv))
コード例 #6
0
ファイル: kajonggtest.py プロジェクト: jsj2008/kdegames
def main():
    """parse options, play, evaluate results"""
    print

    (options, args) = parse_options()

    options = improve_options(options)

    errorMessage = Debug.setOptions(options.debug)
    if errorMessage:
        print errorMessage
        sys.exit(2)

    if args and ''.join(args):
        print 'unrecognized arguments:', ' '.join(args)
        sys.exit(2)

    evaluate(readGames(options.csv))

    if not options.count and not options.fill:
        sys.exit(0)

    if not options.aiVariants:
        options.aiVariants = 'Default'

    serverProcesses = startServers(options)
    try:
        if options.fill:
            jobs = proposeGames(readGames(options.csv), options.aiVariants)
            doJobs(jobs, options, serverProcesses)

        if options.count:
            if options.game:
                games = list(range(int(options.game), options.game+options.count))
            else:
                games = list(int(random.random() * 10**9) for _ in range(options.count))
            jobs = []
            allAis = options.aiVariants.split(',')
            for game in games:
                jobs.extend([(x, game) for x in allAis])
            doJobs(jobs, options, serverProcesses)
    finally:
        stopServers(serverProcesses)

    evaluate(readGames(options.csv))
コード例 #7
0
ファイル: kajongg.py プロジェクト: KDE/kajongg
def parseOptions():
    """parse command line options and save the values"""
    args = KCmdLineArgs.parsedArgs()
    Internal.app = APP
    Options.playOpen |= args.isSet("playopen")
    Options.showRulesets |= args.isSet("rulesets")
    Options.rulesetName = str(args.getOption("ruleset"))
    if args.isSet("host"):
        Options.host = str(args.getOption("host"))
    if args.isSet("player"):
        Options.player = unicodeString(args.getOption("player"))
    if args.isSet("rounds"):
        Options.rounds = int(args.getOption("rounds"))
    if args.isSet("ai"):
        Options.AI = str(args.getOption("ai"))
    if args.isSet("csv"):
        Options.csv = str(args.getOption("csv"))
    if args.isSet("socket"):
        Options.socket = str(args.getOption("socket"))
    if args.isSet("port"):
        Options.port = str(args.getOption("port"))
    SingleshotOptions.game = str(args.getOption("game"))
    Options.gui |= args.isSet("gui")
    if args.isSet("table"):
        SingleshotOptions.table = int(args.getOption("table"))
    if args.isSet("join"):
        SingleshotOptions.join = int(args.getOption("join"))
    Options.demo |= args.isSet("demo")
    Options.demo |= not Options.gui
    Internal.autoPlay = Options.demo
    msg = Debug.setOptions(str(args.getOption("debug")))
    if msg:
        Internal.logger.debug(msg)
        logging.shutdown()
        sys.exit(2)
    from query import initDb

    if not initDb():
        raise SystemExit("Cannot initialize database")
    initRulesets()
    Options.fixed = True  # may not be changed anymore