更新twisted似乎是处理未标记响应的方式,我发现的唯一一个例子似乎是迭代接收到的数据,并以某种方式收集对其命令的响应,但我不确定如何。。。在
我尝试实现rfc2087(http://tools.ietf.org/html/rfc2087)中定义的IMAP4配额命令。在
代码-ImapClient
class SimpleIMAP4Client(imap4.IMAP4Client):
"""
A client with callbacks for greeting messages from an IMAP server.
"""
greetDeferred = None
def serverGreeting(self, caps):
self.serverCapabilities = caps
if self.greetDeferred is not None:
d, self.greetDeferred = self.greetDeferred, None
d.callback(self)
def lineReceived(self, line):
print "<" + str(line)
return imap4.IMAP4Client.lineReceived(self, line)
def sendLine(self, line):
print ">" + str(line)
return imap4.IMAP4Client.sendLine(self, line)
代码QUOTAROOT实现
^{pr2}$输出
^{3}$所以我得到了数据,但结果并不包含,我想这是因为它们是未标记的响应?在
由于IMAP4协议将许多不同类型的信息混合在一起作为“未标记的响应”,您可能还需要更新IMAP4客户机实现中解析代码的其他部分。在
具体来说,看看
twisted.mail.imap4.Command
及其finish
方法。还要看一下twisted.mail.imap4.IMAP4Client._extraInfo
,这是作为unusedCallback
传递给Command.finish
的内容。在首先,您可以检查是否将对QUOTA命令的未标记响应发送到
_extraInfo
(然后删除(好吧,记录))。在如果是这样的话,我怀疑您想教
Command
识别对QUOTA命令的未标记的响应,以便它收集这些响应并将它们作为其Deferred
的结果的一部分发送。在如果不是这样,您可能需要深入研究
Command.finish
的逻辑,看看数据会在哪里结束。在您可能还想实际实现
Command.wantResponse
特性,它目前似乎只是部分形成的(即,许多客户机代码尝试将有趣的值发送到Command
中以初始化该属性,但据我所知,实际上没有任何内容使用该属性的值)。在相关问题 更多 >
编程相关推荐