forked from rsms/kod
-
Notifications
You must be signed in to change notification settings - Fork 0
/
kod_helper.h
58 lines (48 loc) · 1.76 KB
/
kod_helper.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// Copyright (c) 2010-2011, Rasmus Andersson. All rights reserved.
// Use of this source code is governed by a MIT-style license that can be
// found in the LICENSE file.
#import "KMachServiceProtocol.h"
@interface KCLIProgram : NSObject {
NSRunningApplication *kodApp_;
id<KMachServiceProtocol> kodService_;
NSURL *kodAppURL_;
// variables allocated as an effect of parsing cli arguments
NSMutableArray *URLsToOpen_;
NSMutableDictionary *asyncWaitQueue_;
BOOL forceReadStdin_; // true if a "-" is passed in argv
int optNoWaitOpen_; // 1 if -n or --nowait-open
int optWaitForDocumentClose; // 1 if -w or --wait
}
@property(readonly) NSRunningApplication *kodApp;
@property(readonly) id<KMachServiceProtocol> kodService;
// Bootstrapping
- (void)printUsageAndExit:(int)exitStatus;
- (void)parseOptionsOfLength:(int)argc argv:(char**)argv;
- (BOOL)findKodAppAndStartIfNeeded:(BOOL)asyncLaunch;
- (BOOL)connectToKod:(NSError**)outError timeout:(NSTimeInterval)timeout;
// Helper to create a new invocation with the receiver as its target
- (NSInvocation*)invocationForHandler:(SEL)handler;
/*!
* Async action queue
*
* A callback has the following prototype:
*
* void(^)([NSError*[, id arg1[, id arg2 ...[, id arg6]...]]])
*
* Examples:
*
* [kodService_ performSomeAsyncAction:foo callback:[self registerCallback:
* ^(NSError *err, NSString *someArg, id anotherArg){
* DLOG("callback executed. err: %@, someArg: %@", err, someArg);
* }]];
*
*/
- (NSInvocation*)registerCallback:(id)callback;
- (id)enqueueAsyncActionWithCallback:(id)callback;
- (id)dequeueAsyncAction:(id)key;
- (void)cancelAsyncAction:(id)key;
// Executing actions
- (void)takeAppropriateAction;
// Block until all pending actions have completed
- (void)waitUntilDone;
@end