annotate dmd/root/async.c @ 1630:44b145be2ef5

Merge dmd 1.056.
author Robert Clipsham <robert@octarineparrot.com>
date Sat, 06 Feb 2010 15:53:52 +0000
parents def7a1d494fd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
1
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
2 #define _MT 1
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
3
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
4 #include <stdio.h>
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
5 #include <stdlib.h>
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
6 #include <assert.h>
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
7
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
8 #if _WIN32
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
9
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
10 #include <windows.h>
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
11 #include <stdio.h>
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
12 #include <errno.h>
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
13 #include <process.h>
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
14
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
15 #include "root.h"
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
16 #include "rmem.h"
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
17
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
18 static unsigned __stdcall startthread(void *p);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
19
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
20 struct FileData
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
21 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
22 File *file;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
23 int result;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
24 HANDLE event;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
25 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
26
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
27 struct AsyncRead
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
28 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
29 static AsyncRead *create(size_t nfiles);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
30 void addFile(File *file);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
31 void start();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
32 int read(size_t i);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
33 static void dispose(AsyncRead *);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
34
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
35 HANDLE hThread;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
36
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
37 size_t filesdim;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
38 size_t filesmax;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
39 FileData files[1];
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
40 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
41
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
42
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
43 AsyncRead *AsyncRead::create(size_t nfiles)
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
44 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
45 AsyncRead *aw = (AsyncRead *)mem.calloc(1, sizeof(AsyncRead) +
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
46 (nfiles - 1) * sizeof(FileData));
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
47 aw->filesmax = nfiles;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
48 return aw;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
49 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
50
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
51 void AsyncRead::addFile(File *file)
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
52 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
53 //printf("addFile(file = %p)\n", file);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
54 //printf("filesdim = %d, filesmax = %d\n", filesdim, filesmax);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
55 assert(filesdim < filesmax);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
56 files[filesdim].file = file;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
57 files[filesdim].event = CreateEvent(NULL, TRUE, FALSE, NULL);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
58 ResetEvent(files[filesdim].event);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
59 filesdim++;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
60 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
61
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
62 void AsyncRead::start()
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
63 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
64 //printf("aw->filesdim = %p %d\n", this, filesdim);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
65 if (filesdim)
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
66 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
67 unsigned threadaddr;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
68 hThread = (HANDLE) _beginthreadex(NULL,
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
69 0,
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
70 &startthread,
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
71 this,
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
72 0,
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
73 (unsigned *)&threadaddr);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
74
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
75 if (hThread)
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
76 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
77 SetThreadPriority(hThread, THREAD_PRIORITY_HIGHEST);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
78 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
79 else
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
80 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
81 assert(0);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
82 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
83 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
84 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
85
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
86 int AsyncRead::read(size_t i)
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
87 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
88 FileData *f = &files[i];
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
89 WaitForSingleObject(f->event, INFINITE);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
90 Sleep(0); // give up time slice
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
91 return f->result;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
92 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
93
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
94 void AsyncRead::dispose(AsyncRead *aw)
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
95 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
96 delete aw;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
97 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
98
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
99
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
100
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
101 unsigned __stdcall startthread(void *p)
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
102 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
103 AsyncRead *aw = (AsyncRead *)p;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
104
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
105 //printf("aw->filesdim = %p %d\n", aw, aw->filesdim);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
106 for (size_t i = 0; i < aw->filesdim; i++)
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
107 { FileData *f = &aw->files[i];
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
108
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
109 f->result = f->file->read();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
110 SetEvent(f->event);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
111 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
112 _endthreadex(EXIT_SUCCESS);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
113 return EXIT_SUCCESS; // if skidding
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
114 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
115
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
116 #else
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
117
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
118 #include <stdio.h>
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
119 #include <errno.h>
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
120
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
121 #include "root.h"
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
122 #include "rmem.h"
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
123
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
124 struct FileData
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
125 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
126 File *file;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
127 int result;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
128 //HANDLE event;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
129 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
130
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
131 struct AsyncRead
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
132 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
133 static AsyncRead *create(size_t nfiles);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
134 void addFile(File *file);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
135 void start();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
136 int read(size_t i);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
137 static void dispose(AsyncRead *);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
138
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
139 //HANDLE hThread;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
140
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
141 size_t filesdim;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
142 size_t filesmax;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
143 FileData files[1];
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
144 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
145
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
146
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
147 AsyncRead *AsyncRead::create(size_t nfiles)
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
148 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
149 AsyncRead *aw = (AsyncRead *)mem.calloc(1, sizeof(AsyncRead) +
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
150 (nfiles - 1) * sizeof(FileData));
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
151 aw->filesmax = nfiles;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
152 return aw;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
153 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
154
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
155 void AsyncRead::addFile(File *file)
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
156 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
157 //printf("addFile(file = %p)\n", file);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
158 //printf("filesdim = %d, filesmax = %d\n", filesdim, filesmax);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
159 assert(filesdim < filesmax);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
160 files[filesdim].file = file;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
161 //files[filesdim].event = CreateEvent(NULL, TRUE, FALSE, NULL);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
162 //ResetEvent(files[filesdim].event);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
163 filesdim++;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
164 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
165
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
166 void AsyncRead::start()
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
167 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
168 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
169
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
170 int AsyncRead::read(size_t i)
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
171 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
172 FileData *f = &files[i];
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
173 f->result = f->file->read();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
174 return f->result;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
175 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
176
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
177 void AsyncRead::dispose(AsyncRead *aw)
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
178 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
179 delete aw;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
180 }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
181
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
182 #endif