follow the protocol

main
Florent Daigniere 2 years ago
parent 2e467092a2
commit 076d67b513

@ -33,6 +33,8 @@ class DictProtocol(asyncio.Protocol):
self.dict = None
# Dictionary of active transaction lists per transaction id
self.transactions = {}
# Dictionary of user per transaction id
self.transactions_user = {}
super(DictProtocol, self).__init__()
def connection_made(self, transport):
@ -83,7 +85,7 @@ class DictProtocol(asyncio.Protocol):
key_type, key = key.decode("utf8").split("/", 1)
try:
result = await self.dict.get(
key, ns=(self.user if key_type == "priv" else None)
key, ns=((user if user else self.user) if key_type == "priv" else None)
)
if type(result) is str:
response = result.encode("utf8")
@ -99,6 +101,7 @@ class DictProtocol(asyncio.Protocol):
""" Process a dict begin message
"""
self.transactions[transaction_id] = {}
self.transactions_user[transaction_id] = user if user else self.user
def process_set(self, transaction_id, key, value):
""" Process a dict set message
@ -116,10 +119,11 @@ class DictProtocol(asyncio.Protocol):
key_type, key = key.decode("utf8").split("/", 1)
result = await self.dict.set(
key, json.loads(value),
ns=(self.user if key_type == "priv" else None)
ns=(self.transactions_user[transaction_id] if key_type == "priv" else None)
)
# Remove stored transaction
del self.transactions[transaction_id]
del self.transactions_user[transaction_id]
return self.reply(b"O", transaction_id)
def reply(self, command, *args):

Loading…
Cancel
Save