]> git.mxchange.org Git - quix0rs-apt-p2p.git/blob - transactions.py
Initial revision
[quix0rs-apt-p2p.git] / transactions.py
1 import messages
2 from dispatcher import Transaction
3
4 class TransactionFactory:
5     def __init__(self, id, dispatcher):
6         self.id = id
7         self.dispatcher = dispatcher
8         self.mf = messages.MessageFactory(self.id)
9                 
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)
14         t.setPayload(str)
15         t.setResponseTemplate(messages.PONG)
16         return t
17
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)
22         t.setPayload(str)
23         t.setResponseTemplate(messages.GOT_NODES)
24         return t
25
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)
30         t.setPayload(str)
31         t.setResponseTemplate(messages.STORED_VALUE)
32         return t
33
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)
38         t.setPayload(str)
39         t.setResponseTemplate(messages.GOT_NODES_OR_VALUES)
40         return t
41
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)
46         t.setPayload(str)
47         return t
48
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)
53         t.setPayload(str)
54         return t
55
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)
60         t.setPayload(str)
61         return t
62  
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)
67         t.setPayload(str)
68         return t
69
70
71 ###########