mirror of
				https://github.com/django/daphne.git
				synced 2025-11-04 01:27:33 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from __future__ import unicode_literals
 | 
						|
import copy
 | 
						|
 | 
						|
from .channel import Channel
 | 
						|
 | 
						|
 | 
						|
class Message(object):
 | 
						|
    """
 | 
						|
    Represents a message sent over a Channel.
 | 
						|
 | 
						|
    The message content is a dict called .content, while
 | 
						|
    reply_channel is an optional extra attribute representing a channel
 | 
						|
    to use to reply to this message's end user, if that makes sense.
 | 
						|
    """
 | 
						|
 | 
						|
    def __init__(self, content, channel_name, channel_layer):
 | 
						|
        self.content = content
 | 
						|
        self.channel = Channel(
 | 
						|
            channel_name,
 | 
						|
            channel_layer=channel_layer,
 | 
						|
        )
 | 
						|
        self.channel_layer = channel_layer
 | 
						|
        if content.get("reply_channel", None):
 | 
						|
            self.reply_channel = Channel(
 | 
						|
                content["reply_channel"],
 | 
						|
                channel_layer=self.channel_layer,
 | 
						|
            )
 | 
						|
        else:
 | 
						|
            self.reply_channel = None
 | 
						|
 | 
						|
    def __getitem__(self, key):
 | 
						|
        return self.content[key]
 | 
						|
 | 
						|
    def __setitem__(self, key, value):
 | 
						|
        self.content[key] = value
 | 
						|
 | 
						|
    def __contains__(self, key):
 | 
						|
        return key in self.content
 | 
						|
 | 
						|
    def keys(self):
 | 
						|
        return self.content.keys()
 | 
						|
 | 
						|
    def values(self):
 | 
						|
        return self.content.values()
 | 
						|
 | 
						|
    def items(self):
 | 
						|
        return self.content.items()
 | 
						|
 | 
						|
    def get(self, key, default=None):
 | 
						|
        return self.content.get(key, default)
 | 
						|
 | 
						|
    def copy(self):
 | 
						|
        """
 | 
						|
        Returns a safely content-mutable copy of this Message.
 | 
						|
        """
 | 
						|
        return self.__class__(
 | 
						|
            copy.deepcopy(self.content),
 | 
						|
            self.channel.name,
 | 
						|
            self.channel_layer,
 | 
						|
        )
 |