Changeset 262:e209ffe450be
- Timestamp:
- 04/30/2010 09:50:24 AM (4 months ago)
- Author:
- dcaoyuan
- Branch:
- default
- Message:
-
Structual type uses reflect method call, for performance issue, replace it with direct object
- Location:
- blogbird/src/main/scala/org/aiotrade/httpd
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r260
|
r262
|
|
| 34 | 34 | def act = loop { |
| 35 | 35 | react { |
| 36 | | case Read(selector) => |
| | 36 | case Read(sender) => |
| 37 | 37 | try { |
| 38 | 38 | val hasRequest = readMoreInput |
| 39 | 39 | |
| 40 | 40 | // add back this connection to the read selector. |
| 41 | | selector.addListener(this) |
| | 41 | sender.addListener(this) |
| 42 | 42 | |
| 43 | 43 | // Was enough input read to complete a request? |
| 44 | 44 | if (hasRequest) { |
| 45 | | selector.asInstanceOf[{def produce(o: Request)}].produce(takeRequest) |
| | 45 | ConnectionManager.selectActor.produce(takeRequest) |
| 46 | 46 | } |
| 47 | 47 | } catch {case ex: IOException => debugln(ex.getMessage)} |
| 48 | 48 | |
| 49 | | case Write(selector) => |
| | 49 | case Write(sender) => |
| 50 | 50 | debugln(" ** Sending reply!") |
| 51 | 51 | try { |
| … |
… |
|
| 55 | 55 | } else { |
| 56 | 56 | // add back this connection to the write selector. |
| 57 | | selector.addListener(this) |
| | 57 | sender.addListener(this) |
| 58 | 58 | } |
| 59 | 59 | } catch {case ex: IOException => debugln(ex.getMessage)} |
-
|
r261
|
r262
|
|
| 65 | 65 | } |
| 66 | 66 | |
| 67 | | private object selectActor extends SelectActor[ClientConnection](SelectionKey.OP_READ) { |
| | 67 | object selectActor extends SelectActor[ClientConnection](SelectionKey.OP_READ) { |
| 68 | 68 | def produce(o: Request) = ConnectionManager.produce(o) |
| 69 | 69 | } |