mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			135 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C
		
	
		
		
			
		
	
	
			135 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C
		
	
| 
								 
											12 years ago
										 
									 | 
							
								// Copyright 2008 Cyrus Najmabadi
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Licensed under the Apache License, Version 2.0 (the "License");
							 | 
						||
| 
								 | 
							
								// you may not use this file except in compliance with the License.
							 | 
						||
| 
								 | 
							
								// You may obtain a copy of the License at
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								//     http://www.apache.org/licenses/LICENSE-2.0
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Unless required by applicable law or agreed to in writing, software
							 | 
						||
| 
								 | 
							
								// distributed under the License is distributed on an "AS IS" BASIS,
							 | 
						||
| 
								 | 
							
								// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
							 | 
						||
| 
								 | 
							
								// See the License for the specific language governing permissions and
							 | 
						||
| 
								 | 
							
								// limitations under the License.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@protocol PBMessage;
							 | 
						||
| 
								 | 
							
								@protocol PBMessage_Builder;
							 | 
						||
| 
								 | 
							
								@class PBUnknownFieldSet;
							 | 
						||
| 
								 | 
							
								@class PBCodedInputStream;
							 | 
						||
| 
								 | 
							
								@class PBExtensionRegistry;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Abstract interface implemented by Protocol Message builders.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								@protocol PBMessage_Builder<NSObject>
							 | 
						||
| 
								 | 
							
								/** Resets all fields to their default values. */
							 | 
						||
| 
								 | 
							
								- (id<PBMessage_Builder>) clear;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Construct the final message.  Once this is called, the Builder is no
							 | 
						||
| 
								 | 
							
								 * longer valid, and calling any other method may throw a
							 | 
						||
| 
								 | 
							
								 * NullPointerException.  If you need to continue working with the builder
							 | 
						||
| 
								 | 
							
								 * after calling {@code build()}, {@code clone()} it first.
							 | 
						||
| 
								 | 
							
								 * @throws UninitializedMessageException The message is missing one or more
							 | 
						||
| 
								 | 
							
								 *         required fields (i.e. {@link #isInitialized()} returns false).
							 | 
						||
| 
								 | 
							
								 *         Use {@link #buildPartial()} to bypass this check.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								- (id<PBMessage>) build;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Like {@link #build()}, but does not throw an exception if the message
							 | 
						||
| 
								 | 
							
								 * is missing required fields.  Instead, a partial message is returned.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								- (id<PBMessage>) buildPartial;
							 | 
						||
| 
								 | 
							
								- (id<PBMessage_Builder>) clone;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Returns true if all required fields in the message and all embedded
							 | 
						||
| 
								 | 
							
								 * messages are set, false otherwise.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								- (BOOL) isInitialized;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Get the message's type's default instance.
							 | 
						||
| 
								 | 
							
								 * See {@link Message#getDefaultInstanceForType()}.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								- (id<PBMessage>) defaultInstance;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (PBUnknownFieldSet*) unknownFields;
							 | 
						||
| 
								 | 
							
								- (id<PBMessage_Builder>) setUnknownFields:(PBUnknownFieldSet*) unknownFields;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Merge some unknown fields into the {@link UnknownFieldSet} for this
							 | 
						||
| 
								 | 
							
								 * message.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								- (id<PBMessage_Builder>) mergeUnknownFields:(PBUnknownFieldSet*) unknownFields;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Parses a message of this type from the input and merges it with this
							 | 
						||
| 
								 | 
							
								 * message, as if using {@link Builder#mergeFrom(Message)}.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * <p>Warning:  This does not verify that all required fields are present in
							 | 
						||
| 
								 | 
							
								 * the input message.  If you call {@link #build()} without setting all
							 | 
						||
| 
								 | 
							
								 * required fields, it will throw an {@link UninitializedMessageException},
							 | 
						||
| 
								 | 
							
								 * which is a {@code RuntimeException} and thus might not be caught.  There
							 | 
						||
| 
								 | 
							
								 * are a few good ways to deal with this:
							 | 
						||
| 
								 | 
							
								 * <ul>
							 | 
						||
| 
								 | 
							
								 *   <li>Call {@link #isInitialized()} to verify that all required fields
							 | 
						||
| 
								 | 
							
								 *       are set before building.
							 | 
						||
| 
								 | 
							
								 *   <li>Parse the message separately using one of the static
							 | 
						||
| 
								 | 
							
								 *       {@code parseFrom} methods, then use {@link #mergeFrom(Message)}
							 | 
						||
| 
								 | 
							
								 *       to merge it with this one.  {@code parseFrom} will throw an
							 | 
						||
| 
								 | 
							
								 *       {@link InvalidProtocolBufferException} (an {@code IOException})
							 | 
						||
| 
								 | 
							
								 *       if some required fields are missing.
							 | 
						||
| 
								 | 
							
								 *   <li>Use {@code buildPartial()} to build, which ignores missing
							 | 
						||
| 
								 | 
							
								 *       required fields.
							 | 
						||
| 
								 | 
							
								 * </ul>
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * <p>Note:  The caller should call
							 | 
						||
| 
								 | 
							
								 * {@link CodedInputStream#checkLastTagWas(int)} after calling this to
							 | 
						||
| 
								 | 
							
								 * verify that the last tag seen was the appropriate end-group tag,
							 | 
						||
| 
								 | 
							
								 * or zero for EOF.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								- (id<PBMessage_Builder>) mergeFromCodedInputStream:(PBCodedInputStream*) input;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Like {@link Builder#mergeFrom(CodedInputStream)}, but also
							 | 
						||
| 
								 | 
							
								 * parses extensions.  The extensions that you want to be able to parse
							 | 
						||
| 
								 | 
							
								 * must be registered in {@code extensionRegistry}.  Extensions not in
							 | 
						||
| 
								 | 
							
								 * the registry will be treated as unknown fields.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								- (id<PBMessage_Builder>) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Parse {@code data} as a message of this type and merge it with the
							 | 
						||
| 
								 | 
							
								 * message being built.  This is just a small wrapper around
							 | 
						||
| 
								 | 
							
								 * {@link #mergeFrom(CodedInputStream)}.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								- (id<PBMessage_Builder>) mergeFromData:(NSData*) data;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Parse {@code data} as a message of this type and merge it with the
							 | 
						||
| 
								 | 
							
								 * message being built.  This is just a small wrapper around
							 | 
						||
| 
								 | 
							
								 * {@link #mergeFrom(CodedInputStream,ExtensionRegistry)}.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								- (id<PBMessage_Builder>) mergeFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Parse a message of this type from {@code input} and merge it with the
							 | 
						||
| 
								 | 
							
								 * message being built.  This is just a small wrapper around
							 | 
						||
| 
								 | 
							
								 * {@link #mergeFrom(CodedInputStream)}.  Note that this method always
							 | 
						||
| 
								 | 
							
								 * reads the <i>entire</i> input (unless it throws an exception).  If you
							 | 
						||
| 
								 | 
							
								 * want it to stop earlier, you will need to wrap your input in some
							 | 
						||
| 
								 | 
							
								 * wrapper stream that limits reading.  Despite usually reading the entire
							 | 
						||
| 
								 | 
							
								 * input, this does not close the stream.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								- (id<PBMessage_Builder>) mergeFromInputStream:(NSInputStream*) input;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Parse a message of this type from {@code input} and merge it with the
							 | 
						||
| 
								 | 
							
								 * message being built.  This is just a small wrapper around
							 | 
						||
| 
								 | 
							
								 * {@link #mergeFrom(CodedInputStream,ExtensionRegistry)}.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								- (id<PBMessage_Builder>) mergeFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
							 | 
						||
| 
								 | 
							
								@end
							 |