attempted to fix some socket class issues
This commit is contained in:
		| @ -45,7 +45,7 @@ extend Socket | ||||
|  | ||||
| 	method asyncConnect: connectBlock | ||||
| 	{ | ||||
| 		| s1 s2 sg sa | | ||||
| 		| s1 s2 sa | | ||||
|  | ||||
| 		s1 := Semaphore new. | ||||
| 		s2 := Semaphore new. | ||||
| @ -61,14 +61,15 @@ extend Socket | ||||
| 		s1 signalAction: sa. | ||||
| 		s2 signalAction: sa. | ||||
|  | ||||
| ## TODO: unsignal s1 s2, remove them from System when exception occurs. | ||||
| 		System signal: s1 onOutput: self.handle. | ||||
| 		System signal: s2 after: 10. | ||||
|  | ||||
| 		System addAsyncSemaphore: s1. | ||||
| 		System addAsyncSemaphore: s2. | ||||
|  | ||||
| 		self connect(1, 2, 3). | ||||
| 		[ | ||||
| 			System signal: s1 onOutput: self.handle. | ||||
| 			System signal: s2 afterSecs: 10. | ||||
| 			System addAsyncSemaphore: s1. | ||||
| 			System addAsyncSemaphore: s2. | ||||
| 			self connect(1, 2, 3). | ||||
| 		] ifCurtailed: [ | ||||
| 			sa value: s2. | ||||
| 		] | ||||
| 	} | ||||
|  | ||||
| 	method asyncRead: readBlock | ||||
| @ -81,7 +82,7 @@ extend Socket | ||||
| 		s2 signalAction: [:sem | readBlock value: false]. | ||||
|  | ||||
| 		System signal: s1 onInput: self.handle. | ||||
| 		System signal: s2 after: 10. | ||||
| 		System signal: s2 afterSecs: 10. | ||||
| 	} | ||||
|  | ||||
| (* | ||||
| @ -95,7 +96,7 @@ extend Socket | ||||
| 		s2 signalAction: [:sem | writeBlock value: false]. | ||||
|  | ||||
| 		System signal: s1 onOutput: self.handle. | ||||
| 		System signal: s2 after: 10. | ||||
| 		System signal: s2 afterSecs: 10. | ||||
| 	} | ||||
| *) | ||||
|  | ||||
| @ -109,12 +110,21 @@ class MyObject(Object) | ||||
| 		| s | | ||||
| 		[ | ||||
| 			s := Socket domain: Socket.Domain.INET type: Socket.Type.STREAM. | ||||
| 			s dump. | ||||
|  | ||||
| 			s asyncConnect: [:result |  | ||||
| 				##s endConnect: result. | ||||
| 				##s beginRead: xxx. | ||||
| 				'CONNECTED NOW.............' dump. | ||||
| 				if (result) | ||||
| 				{ | ||||
| 					'CONNECTED NOW.............' dump. | ||||
| 					s asyncRead: [:data | | ||||
| 						data dump. | ||||
| 					] | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					'UNABLE TO CONNECT............' dump. | ||||
| 				} | ||||
| 			]. | ||||
|  | ||||
| 			while (true) | ||||
|  | ||||
| @ -21,6 +21,7 @@ class System(Apex) | ||||
| 	{ | ||||
| 		^self.asyncsg removeSemaphore: sem | ||||
| 	} | ||||
|  | ||||
| 	method(#class) handleAsyncEvent | ||||
| 	{ | ||||
| 		^self.asyncsg wait. | ||||
|  | ||||
		Reference in New Issue
	
	Block a user