2 from dispatcher import Transaction
4 class TransactionFactory:
5 def __init__(self, id, dispatcher):
7 self.dispatcher = dispatcher
8 self.mf = messages.MessageFactory(self.id)
10 def Ping(self, node, response, default):
11 """ create a ping transaction """
12 t = Transaction(self.dispatcher, node, response, default)
13 str = self.mf.encodePing(t.id)
15 t.setResponseTemplate(messages.PONG)
18 def FindNode(self, target, key, response, default):
19 """ find node query """
20 t = Transaction(self.dispatcher, target, response, default)
21 str = self.mf.encodeFindNode(t.id, key)
23 t.setResponseTemplate(messages.GOT_NODES)
26 def StoreValue(self, target, key, value, response, default):
27 """ find node query """
28 t = Transaction(self.dispatcher, target, response, default)
29 str = self.mf.encodeStoreValue(t.id, key, value)
31 t.setResponseTemplate(messages.STORED_VALUE)
34 def GetValue(self, target, key, response, default):
35 """ find value query, response is GOT_VALUES or GOT_NODES! """
36 t = Transaction(self.dispatcher, target, response, default)
37 str = self.mf.encodeGetValue(t.id, key)
39 t.setResponseTemplate(messages.GOT_NODES_OR_VALUES)
42 def Pong(self, ping_t):
43 """ create a pong response to ping transaction """
44 t = Transaction(self.dispatcher, ping_t.target, None, None, ping_t.id)
45 str = self.mf.encodePong(t.id)
49 def GotNodes(self, findNode_t, nodes):
50 """ respond with gotNodes """
51 t = Transaction(self.dispatcher, findNode_t.target, None, None, findNode_t.id)
52 str = self.mf.encodeGotNodes(t.id, nodes)
56 def GotValues(self, findNode_t, values):
57 """ respond with gotNodes """
58 t = Transaction(self.dispatcher, findNode_t.target, None, None, findNode_t.id)
59 str = self.mf.encodeGotValues(t.id, values)
63 def StoredValue(self, tr):
64 """ store value response, really just a pong """
65 t = Transaction(self.dispatcher, tr.target, None, None, id = tr.id)
66 str = self.mf.encodeStoredValue(t.id)