def create_message( self, agent_jid: str, performative: str, conversation_id: str, content_object ) -> Message: msg = Message() msg.to = agent_jid msg.sender = self.agent_id msg.set_metadata(CONVERSATION, conversation_id) msg.set_metadata(PERFORMATIVE, performative) msg.body = MessageCodification.pickle_object(content_object) logger.info( "{}: message to send to: {} | dialogue_id: {}".format( self.name, msg.to, msg.get_metadata(CONVERSATION) ) ) return msg
async def connectWithPeer(self, myFile): print( "############### Conecting with peer with the file ###############" ) name = input("Peer Name: ") msg = Message(to=name + "@jabber.at") msg.set_metadata("job", "connectFiles") msg.set_metadata("title", myFile) await self.send(msg) msg = await self.receive(timeout=TIMEOUT) if msg: print() print("Recived answer") fileAsked = msg.get_metadata("file") print("Files:") print(fileAsked) print()
async def askFileFromDirectory(self): print("############### Ask file ###############") msg = Message(to=DirectoryAddress) msg.set_metadata("job", "askFile") title = input("title: ") msg.set_metadata("title", title) await self.send(msg) msg = await self.receive(timeout=TIMEOUT) if msg: print() print("Received list of peers") listOfPeers = json.loads(msg.get_metadata("list")) print("list:") for peer in listOfPeers: print("+ {}".format(peer)) await self.connectWithPeer(title) print("TODO: Get file from peer and inform directory") print()
async def searchFilesInDirectory(self): print("############### Search file(s) by name ###############") msg = Message(to=DirectoryAddress) msg.set_metadata("job", "searchFiles") search = input("search by: ") msg.set_metadata("search", search) await self.send(msg) msg = await self.receive(timeout=TIMEOUT) if msg: print() print("Received list of files") listOfFiles = json.loads(msg.get_metadata("files")) print("Files matching your search:") for file in listOfFiles: print(f"+ {file}") print() # self.askFileFromDirectory() print()
def get_message_type(msg: Message): sender_name = msg.get_metadata("sender") for agent_type in AgentType: if agent_type.value == sender_name: return agent_type