 373d70efb2
			
		
	
	373d70efb2
	
	
	
		
			
			Create protocol.{c,h} and provide functions which future servers and
clients can use to determine which protocol to use or is being used.
Also introduce the 'GIT_PROTOCOL' environment variable which will be
used to communicate a colon separated list of keys with optional values
to a server.  Unknown keys and values must be tolerated.  This mechanism
is used to communicate which version of the wire protocol a client would
like to use with a server.
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef PROTOCOL_H
 | |
| #define PROTOCOL_H
 | |
| 
 | |
| enum protocol_version {
 | |
| 	protocol_unknown_version = -1,
 | |
| 	protocol_v0 = 0,
 | |
| 	protocol_v1 = 1,
 | |
| };
 | |
| 
 | |
| /*
 | |
|  * Used by a client to determine which protocol version to request be used when
 | |
|  * communicating with a server, reflecting the configured value of the
 | |
|  * 'protocol.version' config.  If unconfigured, a value of 'protocol_v0' is
 | |
|  * returned.
 | |
|  */
 | |
| extern enum protocol_version get_protocol_version_config(void);
 | |
| 
 | |
| /*
 | |
|  * Used by a server to determine which protocol version should be used based on
 | |
|  * a client's request, communicated via the 'GIT_PROTOCOL' environment variable
 | |
|  * by setting appropriate values for the key 'version'.  If a client doesn't
 | |
|  * request a particular protocol version, a default of 'protocol_v0' will be
 | |
|  * used.
 | |
|  */
 | |
| extern enum protocol_version determine_protocol_version_server(void);
 | |
| 
 | |
| /*
 | |
|  * Used by a client to determine which protocol version the server is speaking
 | |
|  * based on the server's initial response.
 | |
|  */
 | |
| extern enum protocol_version determine_protocol_version_client(const char *server_response);
 | |
| 
 | |
| #endif /* PROTOCOL_H */
 |