summaryrefslogtreecommitdiffabout
path: root/pumpkin/XFer.h
blob: ffe7fc19739b51b12d352c82b8fc776ba3686dcb (plain)
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
59
60
61
62
63
64
65
66
67
68

#import <Foundation/Foundation.h>
#import "PumpKIN.h"
#include <netinet/in.h>
#import "TFTPPacket.h"

enum XFerState {
    xferStateNone = 0,
    xferStateConnecting,
    xferStateXfer,
    xferStateShutdown
};

@interface XFer : NSObject {
    struct sockaddr_in peer;
    PumpKIN *pumpkin;
    CFSocketRef sockie;
    CFRunLoopSourceRef runloopSource;
    NSFileHandle *theFile;
    uint16_t blockSize;
    uint16_t acked;
    unsigned long long xferSize;
    uint16_t xferBlocks;
    enum XFerState state;
    NSString *xferType;
    NSString *xferFilename;
    NSTimeInterval retryTimeout;
    NSTimeInterval giveupTimeout;
    TFTPPacket *lastPacket;
    NSTimer *retryTimer;
    NSTimer *giveupTimer;
    TFTPPacket *initialPacket;
    NSString *xferPrefix;

    NSString *localFile;

    NSMutableArray *queue;
}
@property (readonly) struct sockaddr_in *peer;
@property (readonly) TFTPPacket *initialPacket;
@property (readonly) NSString *xferFilename;
@property (readonly) NSString *localFile;
@property (readonly) NSString *xferPrefix;

- (id) init;
- (id) initWithPeer:(struct sockaddr_in *)sin andPacket:(TFTPPacket*)p;

- (BOOL) createSocket;
- (void) callbackWithType:(CFSocketCallBackType)t addr:(CFDataRef)a data:(const void *)d;
- (void) queuePacket:(TFTPPacket*)p;

- (void) eatTFTPPacket:(TFTPPacket*)p from:(struct sockaddr_in*)sin;

- (id) cellValueForColumn:(NSString*)ci;

- (void) updateView;
- (void) appear;
- (void) disappear;

- (BOOL) isPeer:(struct sockaddr_in*)sin;

- (void) abort;

- (void) goOnWithVerdict:(int)verdict;

- (BOOL) makeLocalFileName:(NSString*)xf;

@end