forked from gnachman/iTerm2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathiTermMultiServerMessageBuilder.m
55 lines (45 loc) · 1.24 KB
/
iTermMultiServerMessageBuilder.m
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
//
// iTermMultiServerMessageBuilder.m
// iTerm2SharedARC
//
// Created by George Nachman on 4/16/20.
//
#import "iTermMultiServerMessageBuilder.h"
#import "DebugLogging.h"
@implementation iTermMultiServerMessageBuilder {
NSMutableData *_accumulator;
NSNumber *_fileDescriptor;
iTermMultiServerMessage *_message;
}
- (instancetype)init {
self = [super init];
if (self) {
_accumulator = [NSMutableData data];
}
return self;
}
- (void)dealloc {
if (!_message && _fileDescriptor && _fileDescriptor.intValue >= 0) {
DLog(@"Close file descriptor %d in message that was never decoded", _fileDescriptor.intValue);
close(_fileDescriptor.intValue);
}
}
- (void)appendBytes:(void *)bytes length:(NSInteger)length {
[_accumulator appendBytes:bytes
length:length];
}
- (void)setFileDescriptor:(int)fileDescriptor {
_fileDescriptor = @(fileDescriptor);
}
- (NSInteger)length {
return _accumulator.length;
}
- (iTermMultiServerMessage *)message {
if (_message) {
return _message;
}
_message = [[iTermMultiServerMessage alloc] initWithData:_accumulator
fileDescriptor:_fileDescriptor];
return _message;
}
@end