
#import <Foundation/Foundation.h>
#import "ABWrapper.h"
#import "ABPostboxDelegate.h"
#import "ABRouterDelegate.h"
#import "ABEvent.h"
#import "SBJson.h"


@interface ABRouter : NSObject <ABPostboxDelegate> {
    @private
    id<ABRouterDelegate> delegate;
    NSString *_name;
    NSMutableDictionary *_components;
    SBJsonParser *_jsonParser;
    SBJsonWriter *_jsonWriter;
    long _nextId;
    BOOL verbose;
}

@property (assign) BOOL verbose;
@property (retain) id<ABRouterDelegate> delegate;

- (id)initWithName:(NSString*)name;
- (void) sendEvent:(NSString*)method to:(NSString*)to info:(NSDictionary*)info;

- (void) _registerComponent:(id<ABWrapper>)subprocess;
- (void) _subprocess:(id<ABWrapper>)subprocess gotStderrText:(NSString*)text;
- (void) _subprocessTerminated:(id<ABWrapper>)subprocess;
- (void) _processEventJson:(NSString*)json;
- (void) _processEvent:(NSDictionary*)event;
- (NSNumber*) _newId;

@end
