annotate SNV/SNVMix2_source/SNVMix2-v0.12.1-rc1/samtools-0.1.6/knetfile.h @ 0:74f5ea818cea

Uploaded
author ryanmorin
date Wed, 12 Oct 2011 19:50:38 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
1 #ifndef KNETFILE_H
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
2 #define KNETFILE_H
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
3
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
4 #include <stdint.h>
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
5 #include <fcntl.h>
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
6
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
7 #ifndef _WIN32
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
8 #define netread(fd, ptr, len) read(fd, ptr, len)
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
9 #define netwrite(fd, ptr, len) write(fd, ptr, len)
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
10 #define netclose(fd) close(fd)
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
11 #else
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
12 #include <winsock.h>
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
13 #define netread(fd, ptr, len) recv(fd, ptr, len, 0)
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
14 #define netwrite(fd, ptr, len) send(fd, ptr, len, 0)
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
15 #define netclose(fd) closesocket(fd)
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
16 #endif
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
17
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
18 // FIXME: currently I/O is unbuffered
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
19
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
20 #define KNF_TYPE_LOCAL 1
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
21 #define KNF_TYPE_FTP 2
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
22 #define KNF_TYPE_HTTP 3
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
23
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
24 typedef struct knetFile_s {
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
25 int type, fd;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
26 int64_t offset;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
27 char *host, *port;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
28
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
29 // the following are for FTP only
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
30 int ctrl_fd, pasv_ip[4], pasv_port, max_response, no_reconnect, is_ready;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
31 char *response, *retr;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
32 int64_t seek_offset; // for lazy seek
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
33
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
34 // the following are for HTTP only
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
35 char *path, *http_host;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
36 } knetFile;
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
37
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
38 #define knet_tell(fp) ((fp)->offset)
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
39 #define knet_fileno(fp) ((fp)->fd)
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
40
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
41 #ifdef __cplusplus
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
42 extern "C" {
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
43 #endif
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
44
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
45 #ifdef _WIN32
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
46 int knet_win32_init();
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
47 void knet_win32_destroy();
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
48 #endif
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
49
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
50 knetFile *knet_open(const char *fn, const char *mode);
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
51
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
52 /*
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
53 This only works with local files.
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
54 */
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
55 knetFile *knet_dopen(int fd, const char *mode);
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
56
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
57 /*
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
58 If ->is_ready==0, this routine updates ->fd; otherwise, it simply
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
59 reads from ->fd.
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
60 */
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
61 off_t knet_read(knetFile *fp, void *buf, off_t len);
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
62
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
63 /*
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
64 This routine only sets ->offset and ->is_ready=0. It does not
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
65 communicate with the FTP server.
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
66 */
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
67 int knet_seek(knetFile *fp, off_t off, int whence);
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
68 int knet_close(knetFile *fp);
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
69
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
70 #ifdef __cplusplus
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
71 }
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
72 #endif
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
73
74f5ea818cea Uploaded
ryanmorin
parents:
diff changeset
74 #endif