blob: e063fbdf619ef70b6ce23e297de84a5cf82e0fc0 [file] [log] [blame]
//
// MQTTEncoder.h
// MQtt Client
//
// Copyright (c) 2011, 2013, 2lemetry LLC
//
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Eclipse Distribution License v. 1.0 which accompanies this distribution.
// The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
// and the Eclipse Distribution License is available at
// http://www.eclipse.org/org/documents/edl-v10.php.
//
// Contributors:
// Kyle Roche - initial API and implementation and/or initial documentation
//
#import <Foundation/Foundation.h>
#import "MQTTMessage.h"
@interface MQTTEncoder : NSObject <NSStreamDelegate> {
NSInteger status;
NSOutputStream* stream;
NSRunLoop* runLoop;
NSString* runLoopMode;
NSMutableData* buffer;
NSInteger byteIndex;
id delegate;
}
typedef enum {
MQTTEncoderEventReady,
MQTTEncoderEventErrorOccurred
} MQTTEncoderEvent;
typedef enum {
MQTTEncoderStatusInitializing,
MQTTEncoderStatusReady,
MQTTEncoderStatusSending,
MQTTEncoderStatusEndEncountered,
MQTTEncoderStatusError
} MQTTEncoderStatus;
- (id)initWithStream:(NSOutputStream*)aStream
runLoop:(NSRunLoop*)aRunLoop
runLoopMode:(NSString*)aMode;
- (void)setDelegate:(id)aDelegate;
- (void)open;
- (void)close;
- (MQTTEncoderStatus)status;
- (void)stream:(NSStream*)sender handleEvent:(NSStreamEvent)eventCode;
- (void)encodeMessage:(MQTTMessage*)msg;
@end
@interface NSObject (MQTTEncoderDelegate)
- (void)encoder:(MQTTEncoder*)sender handleEvent:(MQTTEncoderEvent)eventCode;
@end