dbentrust

dbentrust/dbpool.py

Created on 2013-5-8

@author: lan (www.9miao.com)

class dbentrust.dbpool.DBPool

数据库连接池

initPool(**kw)

根据连接配置初始化连接池配置信息.

>>> aa = {'host':"localhost",'user':'root','passwd':'111','db':'test','port':3306,'charset':'utf8'}
>>> dbpool.initPool(**aa)

dbentrust/madminanager.py

Created on 2013-5-22

@author: lan (www.9miao.com)

class dbentrust.madminanager.MAdminManager

一个单例管理器。作为所有madmin的管理者

checkAdmins()

遍历所有的madmin,与数据库进行同步。

>>>MAdminManager().checkAdmins()

dropAdmin(adminname)

移除一个madmin对象.

>>> MAdminManager().dropAdmin(madmin)
getAdmin(adminname)

根据madmin的名字获取madmin对象

>>> madmin = MAdminManager().getAdmin('tb_registe')
registe(admin)

注册一个madmin对象到管理中.

>>> madmin = MAdmin('tb_registe','characterId',incrkey='id')
>>> MAdminManager().registe(madmin)

dbentrust/memclient.py

Created on 2013-7-10 memcached client @author: lan (www.9miao.com)

class dbentrust.memclient.MemClient(timeout=0)

memcached 连接类,对通过它存储到memcached中的key,定义了新的key的生成规则,避免key的冲突。

@param _hostname: str 这个连接的命名空间。新生成的key的规则会是 _hostname:key。

@param _urls: []list memcached的连接的配置

@param connection: memcached的连接实例。

>>> mclient = MemClient()
connect(urls, hostname)

memcached 建立连接,配置连接信息

>>> mclient.connect(['127.0.0.1:11211'], "test")
delete(key)
delete_multi(keys)
flush_all()
get(key)
get_multi(keys)
incr(key, delta)
produceKey(keyname)

重新生成新的key,规则是 _hostname:key

>>> mclient.produceKey('name')
test:name
set(keyname, value)
set_multi(mapping)
exception dbentrust.memclient.MemConnError

memcached 连接错误

dbentrust/memobject.py

Created on 2012-7-10 memcached 关系对象

通过key键的名称前缀来建立

各个key-value 直接的关系

@author: lan (www.9miao.com)

class dbentrust.memobject.MemObject(name, mc)

memcached 关系对象,可以将一个对象的属性值记录到memcached中。

>>> class Mcharacter(MemObject):
>>>    def __init__(self,pid,name,mc):
>>>        MemObject.__init__(self, name, mc)
>>>        self.id = pid
>>>        self.level = 0
>>>        self.profession = 0
>>>        self.nickname = u''
>>>        self.guanqia = 1000
>>> mcharacter = Mcharacter(1,'character:1',mclient)
>>> mcharacter.name='lan'
>>> mcharacter.insert()
>>> mcharacter.get('nickname')
lan
get(key)

获取对象值

get_multi(keys)

一次获取多个key的值 @param keys: list(str) key的列表

incr(key, delta)

自增

insert()

插入对象记录

lock()

锁定对象

locked()

检测对象是否被锁定

mdelete()

删除memcache中的数据

produceKey(keyname)

重新生成key

release()

释放锁

update(key, values)

修改对象的值

update_multi(mapping)

同时修改多个key值

dbentrust/memobject.py

Created on 2012-7-10 memcached 关系对象

通过key键的名称前缀来建立

各个key-value 直接的关系

@author: lan (www.9miao.com)

class dbentrust.memobject.MemObject(name, mc)

memcached 关系对象,可以将一个对象的属性值记录到memcached中。

>>> class Mcharacter(MemObject):
>>>    def __init__(self,pid,name,mc):
>>>        MemObject.__init__(self, name, mc)
>>>        self.id = pid
>>>        self.level = 0
>>>        self.profession = 0
>>>        self.nickname = u''
>>>        self.guanqia = 1000
>>> mcharacter = Mcharacter(1,'character:1',mclient)
>>> mcharacter.name='lan'
>>> mcharacter.insert()
>>> mcharacter.get('nickname')
lan
get(key)

获取对象值

get_multi(keys)

一次获取多个key的值 @param keys: list(str) key的列表

incr(key, delta)

自增

insert()

插入对象记录

lock()

锁定对象

locked()

检测对象是否被锁定

mdelete()

删除memcache中的数据

produceKey(keyname)

重新生成key

release()

释放锁

update(key, values)

修改对象的值

update_multi(mapping)

同时修改多个key值

dbentrust/mmode.py

Created on 2013-5-8

@author: lan (www.9miao.com)

class dbentrust.mmode.MAdmin(name, pk, timeout=1800, **kw)

MMode对象管理,同一个MAdmin管理同一类的MMode,对应的是数据库中的某一种表

checkAll()

同步内存中的数据到对应的数据表中。

>>> m = madmin.checkAll()
deleteAllFk()

删除所有的外键

deleteMode(pk)

根据主键删除内存中的某条记录信息, 这里只是修改内存中的记录状态_state为删除状态.

>>> m = madmin.deleteMode(1)
getAllPkByFk(fk)

根据外键获取主键列表

getObj(pk)

根据主键,可以获得mmode对象的实例.

>>> m = madmin.getObj(1)
getObjData(pk)

根据主键,可以获得mmode对象的实例的数据.

>>> m = madmin.getObjData(1)
getObjList(pklist)

根据主键列表获取mmode对象的列表.

>>> m = madmin.getObjList([1,2,3,4,5])
insert()

将MAdmin配置的信息写入memcached中保存。 当在其他的进程中实例化相同的配置的MAdmin,可以使得数据同步。

load()

读取数据到数据库中

madmininfo

作为一个特性属性。可以获取这个madmin的相关信息

new(data)

创建一个新的对象

class dbentrust.mmode.MFKMode(name, pklist=[])

外键内存数据模型

class dbentrust.mmode.MMode(name, pk, data={})

内存数据模型,最终对应到的是表中的一条记录

IsEffective()

检测对象是否有效

checkSync(timeout=1800)

检测同步

delete()

删除对象

mdelete()

清理对象

syncDB()

同步到数据库

exception dbentrust.mmode.PKValueError(data)

dbentrust/util.py

Created on 2013-5-8

@author: lan (www.9miao.com)

dbentrust.util.DeleteFromDB(tablename, props)

从数据库中删除

dbentrust.util.EachQueryProps(props)

遍历字段列表生成sql语句

dbentrust.util.FormatCondition(props)

生成查询条件字符串

dbentrust.util.FormatUpdateStr(props)

生成更新语句

dbentrust.util.GetOneRecordInfo(tablename, props)

获取单条数据的信息

dbentrust.util.GetRecordList(tablename, pkname, pklist)
dbentrust.util.GetTableIncrValue(tablename)
dbentrust.util.InsertIntoDB(tablename, data)

写入数据库

dbentrust.util.ReadDataFromDB(tablename)
dbentrust.util.UpdateWithDict(tablename, props, prere)

更新记录

dbentrust.util.forEachQueryProps(sqlstr, props)

遍历所要查询属性,以生成sql语句

dbentrust.util.forEachUpdateProps(tablename, props, prere)

遍历所要修改的属性,以生成sql语句

dbentrust.util.getAllPkByFkInDB(tablename, pkname, props)

根据所有的外键获取主键ID

distributed

distributed/child.py

Created on 2013-8-14

@author: lan (www.9miao.com)

class distributed.child.Child(cid, name)

子节点对象

callbackChild(*args, **kw)

回调子节点的接口

return a Defered Object (recvdata)

callbackChildForResult(*args, **kw)

回调子节点的接口

return a Defered Object (recvdata)

callbackChildNotForResult(*args, **kw)

回调子节点的接口

return a Defered Object (recvdata)

getName()

获取子节点的名称

setTransport(transport)

设置子节点的通道

distributed/manager.py

Created on 2013-8-14

@author: lan (www.9miao.com)

class distributed.manager.ChildsManager

子节点管理器

addChild(child)

添加一个child节点

@param child: Child object

callChild(childId, *args, **kw)

调用子节点的接口

@param childId: int 子节点的id

callChildByName(childname, *args, **kw)

调用子节点的接口

@param childname: str 子节点的名称

callChildByNameNotForResult(childname, *args, **kw)

调用子节点的接口

@param childId: int 子节点的id

callChildNotForResult(childId, *args, **kw)

调用子节点的接口

@param childId: int 子节点的id

dropChild(child)

删除一个child 节点

@param child: Child Object

dropChildByID(childId)

删除一个child 节点

@param childId: Child ID

getChildBYSessionId(session_id)

根据sessionID获取child节点信息

getChildById(childId)

根据节点的ID获取节点实例

getChildByName(childname)

根据节点的名称获取节点实例

distributed/node.py

Created on 2013-8-14

@author: lan (www.9miao.com)

class distributed.node.RemoteObject(name, timeout=600)

远程调用对象

addServiceChannel(service)

设置引用对象

callRemote(commandId, *args, **kw)

默认远程调用,等待结果放回

callRemoteForResult(commandId, *args, **kw)

远程调用,并等待结果放回

callRemoteNotForResult(commandId, *args, **kw)

远程调用,不需要结果放回

connect(addr)

初始化远程调用对象

getName()

获取节点的名称

reconnect(addr=())

重新连接

setName(name)

设置节点的名称

takeProxy()

像远程服务端发送代理通道对象

distributed/reference.py

Created on 2013-8-14

@author: lan (www.9miao.com)

class distributed.reference.ProxyReference

代理通道

addService(service)

添加一条服务通道

remote_callChild(command, *arg, **kw)

代理发送数据

distributed/root.py

Created on 2013-8-14 分布式根节点 @author: lan (www.9miao.com)

class distributed.root.PBRoot(dnsmanager=<distributed.manager.ChildsManager object at 0x000000000507D3C8>)

PB 协议

addServiceChannel(service)

添加服务通道 @param service: Service Object(In bilateral.services)

callChild(key, *args, **kw)

调用子节点的接口 @param childId: int 子节点的id return Defered Object

callChildByName(childname, *args, **kw)

调用子节点的接口 @param childId: int 子节点的id return Defered Object

doChildConnect(name, transport)

当node节点连接时的处理

doChildLostConnect(childId)

当node节点连接时的处理

dropChild(*args, **kw)

删除子节点记录

dropChildByID(childId)

删除子节点记录

dropChildSessionId(session_id)

删除子节点记录

remote_callTarget(command, *args, **kw)

远程调用方法 @param commandId: int 指令号 @param data: str 调用参数

remote_takeProxy(name, transport)

设置代理通道 @param name: 根节点的名称

netconnect

netconnect/connection.py

Created on 2014-2-23

@author: lan (www.9miao.com)

class netconnect.connection.Connection(_conn)
loseConnection()

断开与客户端的连接

safeToWriteData(topicID, msg)

发送消息

netconnect/datapack.py

Created on 2014-2-23

@author: lan (www.9miao.com)

exception netconnect.datapack.DataPackError

An error occurred binding to an interface

class netconnect.datapack.DataPackProtoc(HEAD_0=0, HEAD_1=0, HEAD_2=0, HEAD_3=0, protoVersion=0, serverVersion=0)

数据包协议

getHeadlength()

获取数据包的长度

pack(response, command)

打包数据包

unpack(dpack)

解包

netconnect/manager.py

Created on 2014-2-23 连接管理器 @author: lan (www.9miao.com)

class netconnect.manager.ConnectionManager

连接管理器 @param _connections: dict {connID:conn Object}管理的所有连接

addConnection(conn)

加入一条连接 @param _conn: Conn object

dropConnectionByID(connID)

更加连接的id删除连接实例 @param connID: int 连接的id

getConnectionByID(connID)

根据ID获取一条连接 @param connID: int 连接的id

getNowConnCnt()

获取当前连接数量

loseConnection(connID)

根据连接ID主动端口与客户端的连接

pushObject(topicID, msg, sendList)

主动推送消息

netconnect/protoc.py

Created on 2014-2-23 登陆服务器协议 @author: lan (www.9miao.com)

class netconnect.protoc.LiberateFactory(dataprotocl=<gfirefly.netconnect.datapack.DataPackProtoc instance at 0x0000000005191D48>)

协议工厂

addServiceChannel(service)

添加服务通道

doConnectionLost(conn)

连接断开时的处理

doConnectionMade(conn)

当连接建立时的处理

doDataReceived(conn, commandID, data)

数据到达时的处理

loseConnection(connID)

主动端口与客户端的连接

produceResult(command, response)

产生客户端需要的最终结果 @param response: str 分布式客户端获取的结果

protocol

alias of LiberateProtocol

pushObject(topicID, msg, sendList)

服务端向客户端推消息 @param topicID: int 消息的主题id号 @param msg: 消息的类容,protobuf结构类型 @param sendList: 推向的目标列表(客户端id 列表)

setDataProtocl(dataprotocl)
class netconnect.protoc.LiberateProtocol(transport, factory)

协议

connectionLost(reason)

连接断开处理

connectionMade()

连接建立处理

dataReceived(data)

数据到达处理 @param data: str 客户端传送过来的数据

safeToWriteData(data, command)

线程安全的向客户端发送数据 @param data: str 要向客户端写的数据

server

server/admin.py

server/globalobject.py

Created on 2013-8-2

@author: lan (www.9miao.com)

class server.globalobject.GlobalObject

单例,存放了服务中的netfactory,root节点,所有的remote节点的句柄。

config(netfactory=None, root=None, remote=None, db=None)

配置存放的对象实例

server.globalobject.masterserviceHandle(target)

供master调用的接口描述符

server.globalobject.netserviceHandle(target)

供客户端连接调用的接口描述符

class server.globalobject.remoteserviceHandle(remotename)

作为remote节点,供某个root节点调用的接口描述符

server.globalobject.rootserviceHandle(target)

作为root节点,供remote节点调用的接口描述符

class server.globalobject.webserviceHandle(url, **kw)

这是一个修饰符对象,修饰http接口的连接地址。

server/logobj.py

Created on 2013-8-6

@author: lan (www.9miao.com)

class server.logobj.loogoo(logpath)

日志处理

server/server.py

Created on 2013-8-2

@author: lan (www.9miao.com)

class server.server.FFServer

抽象出的一个服务进程

config(config, servername=None, dbconfig=None, memconfig=None, masterconf=None)

配置服务器

remote_connect(rname, rhost)

进行rpc的连接

start()

启动服务器

server.server.serverStop()

停止服务进程

master

master/master.py

Created on 2013-8-2

@author: lan (www.9miao.com)

class master.master.Master
config(configpath, mainpath)
masterapp()
start()

master/rootapp.py

master/webapp.py