mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-04 06:02:26 -06:00 
			
		
		
		
	
		
			
	
	
		
			39 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			39 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package gtsmodel
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import "sync"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// StreamsForAccount is a wrapper for the multiple streams that one account can have running at the same time.
							 | 
						||
| 
								 | 
							
								// TODO: put a limit on this
							 | 
						||
| 
								 | 
							
								type StreamsForAccount struct {
							 | 
						||
| 
								 | 
							
									// The currently held streams for this account
							 | 
						||
| 
								 | 
							
									Streams []*Stream
							 | 
						||
| 
								 | 
							
									// Mutex to lock/unlock when modifying the slice of streams.
							 | 
						||
| 
								 | 
							
									sync.Mutex
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Stream represents one open stream for a client.
							 | 
						||
| 
								 | 
							
								type Stream struct {
							 | 
						||
| 
								 | 
							
									// ID of this stream, generated during creation.
							 | 
						||
| 
								 | 
							
									ID string
							 | 
						||
| 
								 | 
							
									// Type of this stream: user/public/etc
							 | 
						||
| 
								 | 
							
									Type string
							 | 
						||
| 
								 | 
							
									// Channel of messages for the client to read from
							 | 
						||
| 
								 | 
							
									Messages chan *Message
							 | 
						||
| 
								 | 
							
									// Channel to close when the client drops away
							 | 
						||
| 
								 | 
							
									Hangup chan interface{}
							 | 
						||
| 
								 | 
							
									// Only put messages in the stream when Connected
							 | 
						||
| 
								 | 
							
									Connected bool
							 | 
						||
| 
								 | 
							
									// Mutex to lock/unlock when inserting messages, hanging up, changing the connected state etc.
							 | 
						||
| 
								 | 
							
									sync.Mutex
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Message represents one streamed message.
							 | 
						||
| 
								 | 
							
								type Message struct {
							 | 
						||
| 
								 | 
							
									// All the stream types this message should be delivered to.
							 | 
						||
| 
								 | 
							
									Stream []string `json:"stream"`
							 | 
						||
| 
								 | 
							
									// The event type of the message (update/delete/notification etc)
							 | 
						||
| 
								 | 
							
									Event string `json:"event"`
							 | 
						||
| 
								 | 
							
									// The actual payload of the message. In case of an update or notification, this will be a JSON string.
							 | 
						||
| 
								 | 
							
									Payload string `json:"payload"`
							 | 
						||
| 
								 | 
							
								}
							 |