| 
									
										
										
										
											2021-08-12 21:03:24 +02:00
										 |  |  | // Copyright 2018 The Go Authors. All rights reserved. | 
					
						
							|  |  |  | // Use of this source code is governed by a BSD-style | 
					
						
							|  |  |  | // license that can be found in the LICENSE file. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package proto | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"google.golang.org/protobuf/internal/errors" | 
					
						
							|  |  |  | 	"google.golang.org/protobuf/reflect/protoreflect" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Message is the top-level interface that all messages must implement. | 
					
						
							|  |  |  | // It provides access to a reflective view of a message. | 
					
						
							|  |  |  | // Any implementation of this interface may be used with all functions in the | 
					
						
							|  |  |  | // protobuf module that accept a Message, except where otherwise specified. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // This is the v2 interface definition for protobuf messages. | 
					
						
							| 
									
										
										
										
											2024-03-11 10:12:06 +00:00
										 |  |  | // The v1 interface definition is [github.com/golang/protobuf/proto.Message]. | 
					
						
							| 
									
										
										
										
											2021-08-12 21:03:24 +02:00
										 |  |  | // | 
					
						
							| 
									
										
										
										
											2024-03-11 10:12:06 +00:00
										 |  |  | //   - To convert a v1 message to a v2 message, | 
					
						
							|  |  |  | //     use [google.golang.org/protobuf/protoadapt.MessageV2Of]. | 
					
						
							|  |  |  | //   - To convert a v2 message to a v1 message, | 
					
						
							|  |  |  | //     use [google.golang.org/protobuf/protoadapt.MessageV1Of]. | 
					
						
							| 
									
										
										
										
											2021-08-12 21:03:24 +02:00
										 |  |  | type Message = protoreflect.ProtoMessage | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-11 10:12:06 +00:00
										 |  |  | // Error matches all errors produced by packages in the protobuf module | 
					
						
							|  |  |  | // according to [errors.Is]. | 
					
						
							| 
									
										
										
										
											2021-08-12 21:03:24 +02:00
										 |  |  | // | 
					
						
							| 
									
										
										
										
											2024-03-11 10:12:06 +00:00
										 |  |  | // Example usage: | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | //	if errors.Is(err, proto.Error) { ... } | 
					
						
							| 
									
										
										
										
											2021-08-12 21:03:24 +02:00
										 |  |  | var Error error | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func init() { | 
					
						
							|  |  |  | 	Error = errors.Error | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // MessageName returns the full name of m. | 
					
						
							|  |  |  | // If m is nil, it returns an empty string. | 
					
						
							|  |  |  | func MessageName(m Message) protoreflect.FullName { | 
					
						
							|  |  |  | 	if m == nil { | 
					
						
							|  |  |  | 		return "" | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return m.ProtoReflect().Descriptor().FullName() | 
					
						
							|  |  |  | } |