コード例 #1
0
ファイル: admin.py プロジェクト: valley51/Firefly-1
def sreload():
    """
    """
    log.msg('reload')
    if GlobalObject().reloadmodule:
        reload(GlobalObject().reloadmodule)
    return True
コード例 #2
0
ファイル: admin.py プロジェクト: valley51/Firefly-1
def serverStop():
    """
    """
    log.msg('stop')
    if GlobalObject().stophandler:
        GlobalObject().stophandler()
    reactor.callLater(0.5, reactor.stop)
    return True
コード例 #3
0
ファイル: server.py プロジェクト: luckypoem/FireflyDaemon
 def stopBefore(self):
     """
     停止之前
     :return:
     """
     log.msg('[%s] server is stopped ...' % self.servername)
     if GlobalObject().stophandler:
         GlobalObject().stophandler()
     signal.alarm(1)
コード例 #4
0
ファイル: handle.py プロジェクト: chenee/firefly_study
 def render(self,request):
     username = request.args['username'][0]
     oprea_str = request.args['opera_str'][0]
     usermodedata = register_admin.getObjData(username)#register_admin,注册表的mmode管理器,getObjData(username),通过主键获取的对应的数据,dict型
     if not usermodedata:
         return "Account does not exist!!!"
     pid = usermodedata.get('characterId')#角色id
     if not pid:
         return "Role does not exist!!!"#角色不存在,创建了账号没有创建人物
     gate_node = GlobalObject().remote.get('gate')
     gate_node.callRemote("opera_player",pid,oprea_str)
     return "Success"
コード例 #5
0
ファイル: server.py プロジェクト: zzl133/firefly_study
    def config(self,config,dbconfig = None,memconfig = None,masterconf=None):
        """配置服务器
        """
        remoteportlist = config.get('remoteport',[])#remote节点配置列表
        servername = config.get('name')#服务器名称
        logpath = config.get('log')#日志
        hasdb = config.get('db')#数据库连接
        hasmem = config.get('mem')#memcached连接
        app = config.get('app')#入口模块名称
        mreload = config.get('reload')#重新加载模块名称
        self.servername = servername


        if masterconf:
            masterport = masterconf.get('rootport')
            addr = ('localhost', masterport)
            leafnode = leafNode(servername)
            serviceControl.initControl(leafnode.getServiceChannel())

            leafnode.connect(addr)
            GlobalObject().leafNode = leafnode


        for cnf in remoteportlist:
            rname = cnf.get('rootname')
            rport = cnf.get('rootport')
            self.remote[rname] = leafNode(servername)
            addr = ('localhost',rport)
            self.remote[rname].connect(addr)

        GlobalObject().remote = self.remote

        if hasdb and dbconfig:
            log.msg(str(dbconfig))
            dbpool.initPool(**dbconfig)

        if hasmem and memconfig:
            urls = memconfig.get('urls')
            hostname = str(memconfig.get('hostname'))
            mclient.connect(urls, hostname)

        if logpath:
            log.addObserver(loogoo(logpath))#日志处理
        log.startLogging(sys.stdout)

        if app:
            reactor.callLater(0.1, __import__, app)

        if mreload:
            GlobalObject().reloadmodule = __import__(mreload)
コード例 #6
0
 def render(self, request):
     username = request.args['username'][0]
     oprea_str = request.args['opera_str'][0]
     usermodedata = register_admin.getObjData(
         username
     )  #register_admin,注册表的mmode管理器,getObjData(username),通过主键获取的对应的数据,dict型
     if not usermodedata:
         return "Account does not exist!!!"
     pid = usermodedata.get('characterId')  #角色id
     if not pid:
         return "Role does not exist!!!"  #角色不存在,创建了账号没有创建人物
     gate_node = GlobalObject().remote.get('gate')
     gate_node.callRemote("opera_player", pid, oprea_str)
     return "Success"
コード例 #7
0
ファイル: netapp.py プロジェクト: zzl133/firefly_study
def Forwarding_0(keyname, _conn, data):
    """消息转发,将客户端发送的消息请求转发给gateserver分配处理
    """
    dd = GlobalObject().remote['gate'].callRemote("forwarding", keyname,
                                                  _conn.transport.sessionno,
                                                  data)
    return dd
コード例 #8
0
    def config(self, config, dbconfig=None, memconfig=None, masterconf=None):
        """配置服务器
        """

        servername = config.get('name')  #服务器名称
        logpath = config.get('log')  #日志
        hasdb = config.get('db')  #数据库连接
        hasmem = config.get('mem')  #memcached连接

        app = config.get('app')  #入口模块名称

        self.servername = servername

        if masterconf:
            masterport = masterconf.get('rootport')
            addr = ('localhost', masterport)
            self.leafNode = leafNode(servername)
            self.leafNode.connect(addr)
            GlobalObject().leafNode = self.leafNode

        if hasdb and dbconfig:
            log.msg(str(dbconfig))
            dbpool.initPool(**dbconfig)

        if hasmem and memconfig:
            urls = memconfig.get('urls')
            hostname = str(memconfig.get('hostname'))
            mclient.connect(urls, hostname)

        if logpath:
            log.addObserver(loogoo(logpath))  #日志处理
        log.startLogging(sys.stdout)

        if app:
            reactor.callLater(0.1, __import__, app)
コード例 #9
0
 def render(self, request):
     """
     """
     for child in GlobalObject().root.childsmanager._childs.values():
         d = child.callbackChild('sreload')
         d.addCallback(ErrorBack)
     return "reload"
コード例 #10
0
ファイル: rservices.py プロジェクト: zzl133/firefly_study
def forwarding(key,dynamicId,data):
    """
    """
    if key in GlobalObject().localservice._targets:
        return GlobalObject().localservice.callTarget(key,dynamicId,data)
    else:
        user = UsersManager().getUserByDynamicId(dynamicId)
        if not user:
            return
        oldvcharacter = VCharacterManager().getVCharacterByClientId(dynamicId)
        if not oldvcharacter:
            return
        if oldvcharacter.getLocked():#判断角色对象是否被锁定
            return
        node = VCharacterManager().getNodeByClientId(dynamicId)
        return GlobalObject().root.callChild(node, key, dynamicId, data)
コード例 #11
0
def remote_connect(rname, rhost):
    """
    连接远程节点
    :param rname:
    :param rhost:
    :return:
    """
    GlobalObject().remote_connect(rname, rhost)
コード例 #12
0
 def render(self, request):
     """
     """
     for child in GlobalObject().root.childsmanager._childs.values():
         d = child.callbackChild('serverStop')
         d.addCallback(ErrorBack)
     reactor.callLater(0.5,reactor.stop)
     return "stop"
コード例 #13
0
def remote_connect(rname, rhost):
    """
    连接远程节点
    :param rname:
    :param rhost:
    :return:
    """
    # logger.debug("rname:%s, rhost:%s", rname, rhost)
    GlobalObject().remote_connect(rname, rhost)
コード例 #14
0
ファイル: rservices.py プロジェクト: zzl133/firefly_study
def SavePlayerInfoInDB(dynamicId):
    """将玩家信息写入数据库
       node: 用于判定是 game1,game2,。。。。。这些节点
       magic number: 2 --> "maybe save to db"
    """
    vcharacter = VCharacterManager().getVCharacterByClientId(dynamicId)
    nodeid = vcharacter.getNode()
    d = GlobalObject().root.callChild(nodeid,2,dynamicId)
    return d
コード例 #15
0
ファイル: rservices.py プロジェクト: zzl133/firefly_study
def opera_player(pid,oprea_str):
    """
    #vcharacter是虚拟角色,VCharacterManager()虚拟角色管理器,{角色id:虚拟角色实例}
    """
    vcharacter = VCharacterManager().getVCharacterByCharacterId(pid)
    if not vcharacter:
        node = "game1"
    else:
        node = vcharacter.getNode()
    GlobalObject().root.callChild(node,99,pid,oprea_str)
コード例 #16
0
    def config(self, config, dbconfig=None, memconfig=None, masterconf=None):
        """配置服务器
        """
        netport = config.get('netport')  #客户端连接
        gatelist = config.get('remoteport', [])  #remote节点配置列表
        servername = config.get('name')  #服务器名称
        logpath = config.get('log')  #日志
        app = config.get('app')  #入口模块名称
        self.servername = servername

        if masterconf:
            masterport = masterconf.get('rootport')
            addr = ('localhost', masterport)
            leafnode = leafNode(servername)
            serviceControl.initControl(leafnode.getServiceChannel())
            leafnode.connect(addr)
            GlobalObject().leafNode = leafnode

        if netport:
            self.netfactory = LiberateFactory()
            netservice = services.CommandService("netservice")
            self.netfactory.addServiceChannel(netservice)
            reactor.listenTCP(netport, self.netfactory)
            GlobalObject().netfactory = self.netfactory

        for cnf in gatelist:
            rname = cnf.get('rootname')
            rport = cnf.get('rootport')
            self.gates[rname] = leafNode(servername)
            addr = ('localhost', rport)
            self.gates[rname].connect(addr)

        GlobalObject().remote = self.gates

        if logpath:
            log.addObserver(loogoo(logpath))  #日志处理
        log.startLogging(sys.stdout)

        if app:
            reactor.callLater(0.1, __import__, app)
コード例 #17
0
    def config(self, config, dbconfig=None, memconfig=None, masterconf=None):
        """配置服务器
        """
        rootport = config.get('rootport')  #root节点配置
        servername = config.get('name')  #服务器名称
        logpath = config.get('log')  #日志
        hasdb = config.get('db')  #数据库连接
        hasmem = config.get('mem')  #memcached连接
        app = config.get('app')  #入口模块名称
        self.servername = servername

        if masterconf:
            masterport = masterconf.get('rootport')
            addr = ('localhost', masterport)
            leafnode = leafNode(servername)
            serviceControl.initControl(leafnode.getServiceChannel())
            leafnode.connect(addr)
            GlobalObject().leafNode = leafnode

        if rootport:
            self.root = PBRoot("rootservice")
            reactor.listenTCP(rootport, BilateralFactory(self.root))
            GlobalObject().root = self.root

        if hasdb and dbconfig:
            log.msg(str(dbconfig))
            dbpool.initPool(**dbconfig)

        if hasmem and memconfig:
            urls = memconfig.get('urls')
            hostname = str(memconfig.get('hostname'))
            mclient.connect(urls, hostname)

        if logpath:
            log.addObserver(loogoo(logpath))  #日志处理
        log.startLogging(sys.stdout)

        if app:
            reactor.callLater(0.1, __import__, app)
コード例 #18
0
 def __startWeb(self):
     GlobalObject().webroot = webapp.initWeb()
     reactor.listenTCP(self.webport, DelaySite(GlobalObject().webroot))
コード例 #19
0
 def __startRoot(self):
     GlobalObject().root = PBRoot("rootservice")
     reactor.listenTCP(self.rootport, BilateralFactory(GlobalObject().root))
コード例 #20
0
ファイル: server.py プロジェクト: luckypoem/FireflyDaemon
    def set_config(self):
        """
        初始化节点服务配置
        :return:
        """
        config = Config().config
        ser_cfg = config.get("servers", {}).get(self.servername)
        if not ser_cfg:
            raise ValueError
        mem_cfg = config.get("cache")
        master_cfg = config.get("master")
        db_cfg = config.get("db")

        GlobalObject().json_config = ser_cfg
        netport = ser_cfg.get('netport')  # 客户端连接
        webport = ser_cfg.get('webport')  # http连接
        rootport = ser_cfg.get('rootport')  # root节点配置
        wsport = ser_cfg.get("wsport")  # WebSocket端口
        self.remoteportlist = ser_cfg.get('remoteport', [])  # remote节点配置列表
        logpath = ser_cfg.get('log')  # 日志
        hasdb = ser_cfg.get('db')  # 数据库连接
        hasmem = ser_cfg.get('mem')  # memcached连接
        app = ser_cfg.get('app')  # 入口模块名称
        cpuid = ser_cfg.get('cpu')  # 绑定cpu
        mreload = ser_cfg.get('reload')  # 重新加载模块名称

        if master_cfg:
            masterport = master_cfg.get('rootport')
            masterhost = master_cfg.get('roothost')
            self.master_remote = RemoteObject(self.servername)
            addr = ('localhost',
                    masterport) if not masterhost else (masterhost, masterport)
            self.master_remote.connect(addr)
            GlobalObject().masterremote = self.master_remote

        if netport:
            self.netfactory = LiberateFactory()
            netservice = services.CommandService("netservice")
            self.netfactory.addServiceChannel(netservice)
            reactor.listenTCP(netport, self.netfactory)

        if webport:
            self.webroot = vhost.NameVirtualHost()
            GlobalObject().webroot = self.webroot
            reactor.listenTCP(webport, DelaySite(self.webroot))

        if rootport:
            self.root = PBRoot()
            rootservice = services.Service("rootservice")
            self.root.addServiceChannel(rootservice)
            reactor.listenTCP(rootport, BilateralFactory(self.root))

        if wsport:
            self.ws = WsFactory(wsport)
            wsservice = services.CommandService("wsservice")
            self.ws.addServiceChannel(wsservice)
            reactor.listenTCP(wsport, self.ws)

        for cnf in self.remoteportlist:
            rname = cnf.get('rootname')
            self.remote[rname] = RemoteObject(self.servername)

        if hasdb and db_cfg:
            log.msg(str(db_cfg))
            dbpool.initPool(**db_cfg)

        if hasmem and mem_cfg:
            urls = mem_cfg.get('urls')
            hostname = str(mem_cfg.get('hostname'))
            mclient.connect(urls, hostname)

        if logpath:
            log.addObserver(loogoo(logpath))  #日志处理
        log.startLogging(sys.stdout)

        if cpuid:
            affinity.set_process_affinity_mask(os.getpid(), cpuid)

        GlobalObject().config(netfactory=self.netfactory,
                              root=self.root,
                              remote=self.remote)
        GlobalObject().server = self

        if app:
            __import__(app)
        if mreload:
            _path_list = mreload.split(".")
            GlobalObject().reloadmodule = __import__(mreload,
                                                     fromlist=_path_list[:1])
        GlobalObject().remote_connect = self.remote_connect
        import admin
コード例 #21
0
def callWhenConnLost(conn):
    dynamicId = conn.transport.sessionno
    GlobalObject().remote['gate'].callRemote("netconnlost",dynamicId)
コード例 #22
0
 def __init__(self, parent=None):
     super().__init__(parent)
     GlobalObject().addEventListener("hello", self.foo)
     self._label = QtWidgets.QLabel()
     lay = QtWidgets.QVBoxLayout(self)
     lay.addWidget(self._label)
コード例 #23
0
 def on_clicked(self):
     GlobalObject().dispatchEvent("hello")
コード例 #24
0
ファイル: gatenodeapp.py プロジェクト: zzl133/firefly_study
def pushObject(topicID,msg,sendList):
    GlobalObject().netfactory.pushObject(topicID, msg, sendList)
コード例 #25
0
ファイル: rservices.py プロジェクト: zzl133/firefly_study
def pushObject(topicID, msg, sendList):
    """
    """
    GlobalObject().root.callChild("net", "pushObject", topicID, msg, sendList)
コード例 #26
0
#coding:utf8
"""
Created on 2013-8-14

@author: lan (www.9miao.com)
"""
from globalobject import GlobalObject
from services import CommandService

remoteservice = CommandService("gateremote")
GlobalObject().remote["gate"].setServiceChannel(remoteservice)


def remoteserviceHandle(target):
    """
    """
    remoteservice.mapTarget(target)
コード例 #27
0
ファイル: initconfig.py プロジェクト: LeonZhouH/firefly_study
#coding:utf8
"""
Created on 2013-8-14

@author: lan (www.9miao.com)
"""
from dataloader import load_config_data,registe_madmin
from globalobject import GlobalObject
from app.game.core.PlayersManager import PlayersManager
from twisted.python import log

def doWhenStop():
    """服务器关闭前的处理
    """
    for player in PlayersManager()._players.values():
        try:
            player.updatePlayerDBInfo()
            PlayersManager().dropPlayer(player)
        except Exception as ex:
            log.err(ex)

GlobalObject().stophandler = doWhenStop

def loadModule():
    """
    """
    load_config_data()
    registe_madmin()
    from gatenodeapp import *

コード例 #28
0
#coding:utf8
"""
Created on 2013-8-13

@author: lan (www.9miao.com)
"""
from globalobject import GlobalObject
from dbfront import initconfig

GlobalObject().stophandler = initconfig.doWhenStop

initconfig.loadModule()
コード例 #29
0
ファイル: admin.py プロジェクト: valley51/Firefly-1
def remote_connect(rname, rhost):
    """
    """
    GlobalObject().remote_connect(rname, rhost)
コード例 #30
0
ファイル: server.py プロジェクト: Do3956/firefly
    def config(self,
               config,
               servername=None,
               dbconfig=None,
               memconfig=None,
               masterconf=None):
        '''配置服务器
        '''
        GlobalObject().json_config = config
        netport = config.get('netport')  #客户端连接
        webport = config.get('webport')  #http连接
        rootport = config.get('rootport')  #root节点配置
        self.remoteportlist = config.get('remoteport', [])  #remote节点配置列表
        if not servername:
            servername = config.get('name')  #服务器名称
        logpath = config.get('log')  #日志
        hasdb = config.get('db')  #数据库连接
        hasmem = config.get('mem')  #memcached连接
        app = config.get('app')  #入口模块名称
        cpuid = config.get('cpu')  #绑定cpu
        mreload = config.get('reload')  #重新加载模块名称
        self.servername = servername
        if masterconf:
            masterport = masterconf.get('rootport')
            masterhost = masterconf.get('roothost')
            self.master_remote = RemoteObject(servername, "master")
            addr = ('localhost',
                    masterport) if not masterhost else (masterhost, masterport)
            self.master_remote.connect(addr)
            GlobalObject().masterremote = self.master_remote

        if netport:
            self.netfactory = LiberateFactory()
            netservice = services.CommandService("netservice")
            self.netfactory.addServiceChannel(netservice)
            reactor.listenTCP(netport, self.netfactory)

        if webport:
            self.webroot = vhost.NameVirtualHost()
            GlobalObject().webroot = self.webroot
            reactor.listenTCP(webport, DelaySite(self.webroot))

        if rootport:
            self.root = PBRoot()
            rootservice = services.Service("rootservice")
            self.root.addServiceChannel(rootservice)
            reactor.listenTCP(rootport, BilateralFactory(self.root))

        for cnf in self.remoteportlist:
            rname = cnf.get('rootname')
            self.remote[rname] = RemoteObject(self.servername, rname)

        if hasdb and dbconfig:
            log.msg(str(dbconfig))
            dbpool.initPool(**dbconfig)

        if hasmem and memconfig:
            urls = memconfig.get('urls')
            hostname = str(memconfig.get('hostname'))
            mclient.connect(urls, hostname)

        if logpath:
            log.addObserver(loogoo(logpath))  #日志处理
        log.startLogging(sys.stdout)

        if cpuid:
            affinity.set_process_affinity_mask(os.getpid(), cpuid)
        GlobalObject().config(netfactory=self.netfactory,
                              root=self.root,
                              remote=self.remote)
        if app:
            __import__(app)
        if mreload:
            _path_list = mreload.split(".")
            GlobalObject().reloadmodule = __import__(mreload,
                                                     fromlist=_path_list[:1])
        GlobalObject().remote_connect = self.remote_connect
        import admin
コード例 #31
0
ファイル: netapp.py プロジェクト: zzl133/firefly_study
def initNetApp():
    netservice = NetCommandService("loginService")
    netservice.mapTarget(Forwarding_0)
    GlobalObject().netfactory.addServiceChannel(netservice)