返回信息流☆─────────────────────────────────────☆
wks (cloverprince) 于 (Thu Nov 13 19:43:56 2008) 提到:
#!/usr/bin/python
# .....
# 其中 handler_map[fd]是一个对象,有on_in(), on_out(), on_priority(), on_error...这些方法。
event_list = self.poll.poll()
for fd,event in event_list:
if event & select.POLLIN != 0:
handler_map[fd].on_in()
if event & select.POLLPRI != 0:
handler_map[fd].on_priority()
if event & select.POLLOUT != 0:
handler_map[fd].on_out()
if event & select.POLLERR != 0:
handler_map[fd].on_error()
if event & select.POLLHUP != 0:
handler_map[fd].on_hangup()
if event & select.POLLNVAL != 0:
handler_map[fd].on_invalid()
☆─────────────────────────────────────☆
lanphon (灌水协会副主席|灌水帮少帮主 嗯) 于 (Thu Nov 13 20:12:11 2008) 提到:
看不懂的帮顶
【 在 wks (cloverprince) 的大作中提到: 】
: #!/usr/bin/python
: # .....
: # 其中 handler_map[fd]是一个对象,有on_in(), on_out(), on_priority(),
: on_error...这些方法。
: ...................
☆─────────────────────────────────────☆
wks (cloverprince) 于 (Thu Nov 13 20:25:06 2008) 提到:
这个简单点:
class WhatTheFxxk {
void a() {}
void b() {}
void c() {}
void d() {}
void e() {}
} wtf;
main() {
if (blahblahblah1) wtf.a();
if (blahblahblah2) wtf.b();
if (blahblahblah3) wtf.c();
if (blahblahblah4) wtf.d();
if (blahblahblah5) wtf.e();
return 0;
}
☆─────────────────────────────────────☆
UnrealT (UT|电磁股最高) 于 (Thu Nov 13 21:02:25 2008) 提到:
要事先定义映射关系
java的话可以反射,虽然效率低
c++用模板可能也可以做到
☆─────────────────────────────────────☆
coolfantasy (Cool) 于 (Thu Nov 13 21:34:24 2008) 提到:
key => value
☆─────────────────────────────────────☆
ericyosho (ericyosho) 于 (Fri Nov 14 08:20:04 2008) 提到:
这只能反射做吧。
map一下,然后eval呗?
☆─────────────────────────────────────☆
atian25 (天猪天狗|阿天) 于 (Fri Nov 14 14:17:47 2008) 提到:
if太多了不好,嗯. jdon教我们要全部改为策略模式,于是代码量又多了,绩效高了
☆─────────────────────────────────────☆
wks (cloverprince) 于 (Fri Nov 14 15:56:25 2008) 提到:
callmap = {
POLLIN: lambda x: x.on_in(),
POLLPRI: lambda x: x.on_pri(),
POLLOUT: lambda x: x.on_out(),
POLLERR: lambda x: x.on_err(),
POLLHUP: lambda x: x.on_hup(),
POLLNVAL: lambda x: x.on_nval(),
}
for event,fd in eventlist:
for mask in (POLLIN,POLLPRI,POLLOUT,POLLERR,POLLHUP,POLLNVAL):
if event&mask >0:
callmap[mask](obj[fd])
哈哈哈哈,map果然很黄,很暴力。
☆─────────────────────────────────────☆
windam (棒棒糖) 于 (Fri Nov 14 15:57:17 2008) 提到:
消息分派的代码不知道python有什么好的方法实现。
C++的做法都很麻烦……
不清醒ing……= =
p.s.周末有人吃腰子么……
☆─────────────────────────────────────☆
wks (cloverprince) 于 (Fri Nov 14 16:11:07 2008) 提到:
Python有更优雅的做法。参考simplexmlrpcserver的实现。
☆─────────────────────────────────────☆
coolwc (小包) 于 (Tue Nov 25 02:31:28 2008) 提到:
#define EVENT_1 0x001
#define EVENT_2 0X002
........
#define EVENT_MAX 0xFFF
unsigned int eventlist[EVENT_MAX]={&init, &todo1, &todo2, ........};
(*eventlist) (); //init function
(*eventlist[event_code-EVENT_INIT]) (); //todo function
这是一条镜像帖。来源:北邮人论坛 / soft-design / #34592同步于 2009/5/24
SoftDesign机器人发帖
[合集] [意大利面条代码向]谁来帮我改进一下这个代码
FadeToBlack
2009/5/24镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。