Exemple #1
0
    def connect_to(self, friend_name):
        """ connect friend: start a chat with 'friend' """
        # If chat already open, do nothing
        if friend_name in self.chats:
            return
        friend = self.friends.get(friend_name)
        if not friend:
            print("{0} is not a friend".format(friend_name))
        elif not friend_online(friend):
            print("{0} is not online".format(friend.name))
        else:
            # Set up pipes for messages and closing
            message_get_pipe, message_send_pipe = Pipe(False)
            close_get_pipe, close_send_pipe = Pipe(False)

            friend_address = Address(friend.ip, int(friend.port))
            self.pipes[friend.name] = (message_send_pipe, close_get_pipe)
            # Create chat
            chat = Process(target=start_chat,
                           kwargs={'host': self.host,
                                   'remote': friend_address,
                                   'friend': friend.name,
                                   'name': self.name,
                                   'state': self,
                                   'get_pipe': message_get_pipe,
                                   'close_pipe': close_send_pipe})
            self.chats[friend.name] = chat
            # Open chat
            chat.start()
Exemple #2
0
    def connect_to(self, friend_name):
        """ connect friend: start a chat with 'friend' """
        # If chat already open, do nothing
        if friend_name in self.chats:
            return
        friend = self.friends.get(friend_name)
        if not friend:
            print("{0} is not a friend".format(friend_name))
        elif not friend_online(friend):
            print("{0} is not online".format(friend.name))
        else:
            # Set up pipes for messages and closing
            message_get_pipe, message_send_pipe = Pipe(False)
            close_get_pipe, close_send_pipe = Pipe(False)

            friend_address = Address(friend.ip, int(friend.port))
            self.pipes[friend.name] = (message_send_pipe, close_get_pipe)
            # Create chat
            chat = Process(target=start_chat,
                           kwargs={
                               'host': self.host,
                               'remote': friend_address,
                               'friend': friend.name,
                               'name': self.name,
                               'state': self,
                               'get_pipe': message_get_pipe,
                               'close_pipe': close_send_pipe
                           })
            self.chats[friend.name] = chat
            # Open chat
            chat.start()
Exemple #3
0
 def show_online(self):
     """ online: show available friends """
     online_friends = [
         friend for friend in self.friends.keys()
         if friend_online(self.friends[friend])
     ]
     print("Online friends: ", end='')
     print(', '.join(online_friends))
Exemple #4
0
 def show_online(self):
     """ online: show available friends """
     online_friends = [friend for friend in self.friends.keys() if
                       friend_online(self.friends[friend])]
     print("Online friends: ", end='')
     print(', '.join(online_friends))