2
2
3
3
@implementation ca_weblite_codename1_net_impl_NativeSocketImpl
4
4
5
+ static void _yield () {
6
+ #ifdef NEW_CODENAME_ONE_VM
7
+ CN1_YIELD_THREAD;
8
+ #endif
9
+ }
10
+
11
+ static void _resume () {
12
+ #ifdef NEW_CODENAME_ONE_VM
13
+ CN1_RESUME_THREAD;
14
+ #endif
15
+ }
16
+
5
17
-(void )dealloc {
6
18
if ( inputStream != NULL ){
7
19
[inputStream release ];
@@ -29,7 +41,9 @@ -(int)read{
29
41
}
30
42
errorMessage = NULL ;
31
43
uint8_t buf[1 ];
44
+ _yield ();
32
45
int bytesRead = [inputStream read :buf maxLength: 1 ];
46
+ _resume ();
33
47
if ( bytesRead == -1 ){
34
48
errorMessage = [[inputStream streamError ] localizedDescription ];
35
49
return -2 ;
@@ -54,7 +68,9 @@ -(long long)skip:(long long)param{
54
68
} else {
55
69
bytesToRead = bufSize;
56
70
}
71
+ _yield ();
57
72
bytesRead = [inputStream read :buf maxLength: bytesToRead];
73
+ _resume ();
58
74
if ( bytesRead == -1 ){
59
75
errorMessage = [[inputStream streamError ] localizedDescription ];
60
76
return -2 ;
@@ -91,8 +107,9 @@ -(BOOL)write:(int)param{
91
107
errorMessage = NULL ;
92
108
uint8_t buf[1 ];
93
109
buf[0 ] = (uint8_t )param;
94
-
110
+ _yield ();
95
111
NSInteger res = [outputStream write :buf maxLength: 1 ];
112
+ _resume ();
96
113
if ( res <= 0 ){
97
114
errorMessage = [[outputStream streamError ] localizedDescription ];
98
115
return NO ;
@@ -154,7 +171,9 @@ -(int)readBuf:(int)len{
154
171
errorMessage = @" Attempt to read byte array longer than the buffer." ;
155
172
return -2 ;
156
173
}
174
+ _yield ();
157
175
int bytesRead = [inputStream read :buffer maxLength: len];
176
+ _resume ();
158
177
if ( bytesRead == -1 ){
159
178
errorMessage = [[inputStream streamError ] localizedDescription ];
160
179
return -2 ;
@@ -186,8 +205,9 @@ -(BOOL)createSocket:(NSString*)host param1:(int)port{
186
205
isFinished = NO ;
187
206
CFReadStreamRef readStream;
188
207
CFWriteStreamRef writeStream;
208
+ _yield ();
189
209
CFStreamCreatePairWithSocketToHost (NULL , (CFStringRef )host, port, &readStream, &writeStream);
190
-
210
+ _resume ();
191
211
inputStream = (NSInputStream *)readStream;
192
212
outputStream = (NSOutputStream *)writeStream;
193
213
@@ -206,7 +226,9 @@ -(BOOL)closeSocket{
206
226
-(BOOL )writeBuf:(NSData *)buffer{
207
227
isFinished = NO ;
208
228
errorMessage = NULL ;
229
+ _yield ();
209
230
int bytesWritten = [outputStream write :(const uint8_t *)[buffer bytes ] maxLength: [buffer length ]];
231
+ _resume ();
210
232
if ( bytesWritten == -1 ){
211
233
errorMessage = [[outputStream streamError ] localizedDescription ];
212
234
return NO ;
0 commit comments