Compare commits
	
		
			2 Commits
		
	
	
		
			4ba28c6ed3
			...
			8c3ee80b21
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8c3ee80b21 | |||
| 3a165a595b | 
							
								
								
									
										24
									
								
								xC-proto
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								xC-proto
									
									
									
									
									
								
							| @ -8,11 +8,12 @@ struct CommandMessage { | |||||||
| 	u32 command_seq; | 	u32 command_seq; | ||||||
| 	union CommandData switch (enum Command { | 	union CommandData switch (enum Command { | ||||||
| 		HELLO, | 		HELLO, | ||||||
| 		PING, |  | ||||||
| 		ACTIVE, | 		ACTIVE, | ||||||
| 		BUFFER_COMPLETE, |  | ||||||
| 		BUFFER_INPUT, | 		BUFFER_INPUT, | ||||||
| 		BUFFER_ACTIVATE, | 		BUFFER_ACTIVATE, | ||||||
|  | 		PING_RESPONSE, | ||||||
|  | 		PING, | ||||||
|  | 		BUFFER_COMPLETE, | ||||||
| 		BUFFER_LOG, | 		BUFFER_LOG, | ||||||
| 	} command) { | 	} command) { | ||||||
| 	case HELLO: | 	case HELLO: | ||||||
| @ -20,19 +21,24 @@ struct CommandMessage { | |||||||
| 		// If the version check succeeds, the client will receive | 		// If the version check succeeds, the client will receive | ||||||
| 		// an initial stream of BUFFER_UPDATE, BUFFER_LINE, | 		// an initial stream of BUFFER_UPDATE, BUFFER_LINE, | ||||||
| 		// and finally a BUFFER_ACTIVATE message. | 		// and finally a BUFFER_ACTIVATE message. | ||||||
| 	case PING: |  | ||||||
| 		void; |  | ||||||
| 	case ACTIVE: | 	case ACTIVE: | ||||||
| 		void; | 		void; | ||||||
| 	case BUFFER_COMPLETE: |  | ||||||
| 		string buffer_name; |  | ||||||
| 		string text; |  | ||||||
| 		u32 position; |  | ||||||
| 	case BUFFER_INPUT: | 	case BUFFER_INPUT: | ||||||
| 		string buffer_name; | 		string buffer_name; | ||||||
| 		string text; | 		string text; | ||||||
| 	case BUFFER_ACTIVATE: | 	case BUFFER_ACTIVATE: | ||||||
| 		string buffer_name; | 		string buffer_name; | ||||||
|  | 	case PING_RESPONSE: | ||||||
|  | 		u32 event_seq; | ||||||
|  | 
 | ||||||
|  | 	// Only these commands may produce Event.RESPONSE, as below, | ||||||
|  | 	// but any command may produce an error. | ||||||
|  | 	case PING: | ||||||
|  | 		void; | ||||||
|  | 	case BUFFER_COMPLETE: | ||||||
|  | 		string buffer_name; | ||||||
|  | 		string text; | ||||||
|  | 		u32 position; | ||||||
| 	case BUFFER_LOG: | 	case BUFFER_LOG: | ||||||
| 		string buffer_name; | 		string buffer_name; | ||||||
| 	} data; | 	} data; | ||||||
| @ -129,6 +135,8 @@ struct EventMessage { | |||||||
| 	case RESPONSE: | 	case RESPONSE: | ||||||
| 		u32 command_seq; | 		u32 command_seq; | ||||||
| 		union ResponseData switch (Command command) { | 		union ResponseData switch (Command command) { | ||||||
|  | 		case PING: | ||||||
|  | 			void; | ||||||
| 		case BUFFER_COMPLETE: | 		case BUFFER_COMPLETE: | ||||||
| 			u32 start; | 			u32 start; | ||||||
| 			string completions<>; | 			string completions<>; | ||||||
|  | |||||||
							
								
								
									
										24
									
								
								xC.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								xC.c
									
									
									
									
									
								
							| @ -3189,6 +3189,16 @@ relay_prepare_error (struct app_context *ctx, uint32_t seq, const char *message) | |||||||
| 	e->error = str_from_cstr (message); | 	e->error = str_from_cstr (message); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static struct relay_event_data_response * | ||||||
|  | relay_prepare_response (struct app_context *ctx, uint32_t seq) | ||||||
|  | { | ||||||
|  | 	struct relay_event_message *m = relay_prepare (ctx); | ||||||
|  | 	struct relay_event_data_response *e = &m->data.response; | ||||||
|  | 	e->event = RELAY_EVENT_RESPONSE; | ||||||
|  | 	e->command_seq = seq; | ||||||
|  | 	return e; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // --- Terminal output ---------------------------------------------------------
 | // --- Terminal output ---------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
| /// Default colour pair
 | /// Default colour pair
 | ||||||
| @ -15267,12 +15277,8 @@ client_process_buffer_complete (struct client *c, uint32_t seq, | |||||||
| 		goto out_internal; | 		goto out_internal; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	struct relay_event_data_response *e = | 	struct relay_event_data_response *e = relay_prepare_response (c->ctx, seq); | ||||||
| 		&relay_prepare (c->ctx)->data.response; |  | ||||||
| 	e->event = RELAY_EVENT_RESPONSE; |  | ||||||
| 	e->command_seq = seq; |  | ||||||
| 	e->data.command = RELAY_COMMAND_BUFFER_COMPLETE; | 	e->data.command = RELAY_COMMAND_BUFFER_COMPLETE; | ||||||
| 
 |  | ||||||
| 	struct relay_response_data_buffer_complete *resp = | 	struct relay_response_data_buffer_complete *resp = | ||||||
| 		&e->data.buffer_complete; | 		&e->data.buffer_complete; | ||||||
| 	resp->start = start; | 	resp->start = start; | ||||||
| @ -15291,10 +15297,7 @@ static void | |||||||
| client_process_buffer_log | client_process_buffer_log | ||||||
| 	(struct client *c, uint32_t seq, struct buffer *buffer) | 	(struct client *c, uint32_t seq, struct buffer *buffer) | ||||||
| { | { | ||||||
| 	struct relay_event_data_response *e = | 	struct relay_event_data_response *e = relay_prepare_response (c->ctx, seq); | ||||||
| 		&relay_prepare (c->ctx)->data.response; |  | ||||||
| 	e->event = RELAY_EVENT_RESPONSE; |  | ||||||
| 	e->command_seq = seq; |  | ||||||
| 	e->data.command = RELAY_COMMAND_BUFFER_LOG; | 	e->data.command = RELAY_COMMAND_BUFFER_LOG; | ||||||
| 
 | 
 | ||||||
| 	char *path = buffer_get_log_path (buffer); | 	char *path = buffer_get_log_path (buffer); | ||||||
| @ -15357,7 +15360,8 @@ client_process_message (struct client *c, | |||||||
| 		client_resync (c); | 		client_resync (c); | ||||||
| 		break; | 		break; | ||||||
| 	case RELAY_COMMAND_PING: | 	case RELAY_COMMAND_PING: | ||||||
| 		relay_prepare_ping (c->ctx); | 		relay_prepare_response (c->ctx, m->command_seq) | ||||||
|  | 			->data.command = RELAY_COMMAND_PING; | ||||||
| 		relay_send (c); | 		relay_send (c); | ||||||
| 		break; | 		break; | ||||||
| 	case RELAY_COMMAND_ACTIVE: | 	case RELAY_COMMAND_ACTIVE: | ||||||
|  | |||||||
| @ -85,7 +85,8 @@ class RelayRpc extends EventTarget { | |||||||
| 			if (typeof e.event !== 'string') | 			if (typeof e.event !== 'string') | ||||||
| 				throw "Invalid event tag" | 				throw "Invalid event tag" | ||||||
| 
 | 
 | ||||||
| 			this.dispatchEvent(new CustomEvent(e.event, {detail: e})) | 			this.dispatchEvent(new CustomEvent( | ||||||
|  | 				e.event, {detail: {eventSeq: message.eventSeq, ...e}})) | ||||||
| 
 | 
 | ||||||
| 			// Minor abstraction layering violation.
 | 			// Minor abstraction layering violation.
 | ||||||
| 			m.redraw() | 			m.redraw() | ||||||
| @ -153,6 +154,10 @@ rpc.addEventListener('close', event => { | |||||||
| 	m.redraw() | 	m.redraw() | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
|  | rpc.addEventListener('Ping', event => { | ||||||
|  | 	rpc.send({command: 'PingResponse', eventSeq: event.detail.eventSeq}) | ||||||
|  | }) | ||||||
|  | 
 | ||||||
| rpc.addEventListener('BufferUpdate', event => { | rpc.addEventListener('BufferUpdate', event => { | ||||||
| 	let e = event.detail, b = buffers.get(e.bufferName) | 	let e = event.detail, b = buffers.get(e.bufferName) | ||||||
| 	if (b === undefined) { | 	if (b === undefined) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user