Trustin Lee
|
1b2dfc1dd5
|
Fixed typo and ambiguous expression
|
2008-11-28 14:41:11 +00:00 |
|
Trustin Lee
|
27cd263b6a
|
Improved Javadoc for ReplayingDecoder as requested
|
2008-11-28 14:33:19 +00:00 |
|
Trustin Lee
|
440fdc4e7f
|
Graceful shutdown for EchoClient
|
2008-11-28 11:22:02 +00:00 |
|
Trustin Lee
|
0830444fc8
|
Resolved issue: NETTY-84 Replace ChannelFactory.getExternalResource() with ChannelFactory.releaseExternalResources()
|
2008-11-28 11:18:21 +00:00 |
|
Trustin Lee
|
3e09a4ee60
|
allowed low water mark to be same with high water mark
|
2008-11-28 06:57:29 +00:00 |
|
Trustin Lee
|
4e7852e29e
|
Fixed stack overflow error
|
2008-11-28 06:45:16 +00:00 |
|
Trustin Lee
|
38943f3d23
|
Code cleanup
|
2008-11-28 05:38:34 +00:00 |
|
Trustin Lee
|
70b87f84df
|
Elegant shutdown for DiscardClient
|
2008-11-28 05:36:12 +00:00 |
|
Trustin Lee
|
e0e282770f
|
Code cleanup
|
2008-11-28 05:28:50 +00:00 |
|
Trustin Lee
|
893cab5ce8
|
Initial implementation of high/low water mark based write overflow prevention mechanism
|
2008-11-28 03:19:31 +00:00 |
|
Trustin Lee
|
18ac6f925f
|
Fixed test failure
|
2008-11-27 16:22:20 +00:00 |
|
Trustin Lee
|
044fd23b0b
|
Fixed a bug where channelUnbound/channelDisconnected/channelClosed event is sometimes not fired
|
2008-11-27 15:44:14 +00:00 |
|
Trustin Lee
|
e7d5048440
|
Fixed svn properties
|
2008-11-27 02:59:05 +00:00 |
|
Trustin Lee
|
00fbf2a2f3
|
Resource should be released in HttpClient example
|
2008-11-27 01:11:53 +00:00 |
|
Trustin Lee
|
7a87543020
|
3.0 -> 3.1
|
2008-11-26 10:47:25 +00:00 |
|
Trustin Lee
|
78f86b2d3a
|
Added documentation to-dos
|
2008-11-26 10:31:32 +00:00 |
|
Trustin Lee
|
6df482b074
|
Added documentation to-dos
|
2008-11-26 10:30:21 +00:00 |
|
Trustin Lee
|
0b9b2aca0b
|
Excluded ChannelFactoryExecutorResource from the diagram
|
2008-11-26 10:26:50 +00:00 |
|
Trustin Lee
|
96c98f636a
|
Simplified some test code using ChannelFactoryResource.release()
|
2008-11-26 10:22:55 +00:00 |
|
Trustin Lee
|
5a4e0e4d47
|
Resolved NETTY-82 (Provide a convenient way to shut down a service)
* Added ChannelFactoryResource
* Added ChannelFactory.getExternalResource()
* Updated all client examples to use getExternalResource().release()
|
2008-11-26 10:18:29 +00:00 |
|
Trustin Lee
|
0886c11645
|
More Javadoc on the return value of ChannelFuture.setSuccess and setFailure
|
2008-11-26 09:23:37 +00:00 |
|
Trustin Lee
|
6e40f62574
|
* Added Channel.getCloseFuture()
* Changed ChannelFuture.setSuccess() and setFailure() to return a boolean value
|
2008-11-26 09:21:00 +00:00 |
|
Trustin Lee
|
6947ba0863
|
Added package-info.java for the http package
|
2008-11-26 09:01:18 +00:00 |
|
Trustin Lee
|
09e8a73bf2
|
Removed unimplemented method (I think whether to keep-alive or not should be determined in the higher level)
|
2008-11-26 08:53:19 +00:00 |
|
Trustin Lee
|
796238d929
|
* Renamed HttpVersion.getProtocol() to decode()
* A little bit of code clean up
|
2008-11-26 08:49:33 +00:00 |
|
Trustin Lee
|
1ff2b7bbc9
|
FIXMEs in HTTP QueryStringEncoder/Decoder
|
2008-11-26 08:44:39 +00:00 |
|
Trustin Lee
|
2b0ee3862f
|
Renamed HttpWebserverClient to HttpClient
|
2008-11-26 08:40:04 +00:00 |
|
Trustin Lee
|
be88a53b3b
|
Replaced HttpClient example with more generic wget style one
|
2008-11-26 08:39:32 +00:00 |
|
Trustin Lee
|
5c494dd045
|
More precise shutdown time test
|
2008-11-25 02:57:04 +00:00 |
|
Trustin Lee
|
c979563dcd
|
Trying to figure out who is failing NioServerSocketShutdownTimeTest ..
|
2008-11-20 11:50:01 +00:00 |
|
Trustin Lee
|
8ac3b2905d
|
StringBuffer -> StringBuilder
|
2008-11-20 08:15:20 +00:00 |
|
Trustin Lee
|
70151828dc
|
Resolved issue: NETTY-68 (Make MemoryAwareThreadPoolExecutor.objectSizeEstimator property mutable)
|
2008-11-20 08:10:49 +00:00 |
|
Trustin Lee
|
678137b638
|
Removed a TODO mark which is not going to be fixed (it just works and is not reusable at this moment.)
|
2008-11-20 06:32:04 +00:00 |
|
Trustin Lee
|
c6ce2c3984
|
Fixed the issues that FindBugs raised
|
2008-11-19 09:15:19 +00:00 |
|
Trustin Lee
|
4ac032c657
|
Merged the HTTP branch into the trunk
|
2008-11-19 07:22:15 +00:00 |
|
Trustin Lee
|
57b2d9a443
|
Fixed issue: NETTY-65 (Intermittent high CPU consumption in LinkedTransferQueue)
* Applied the latest upstream fix
|
2008-11-18 09:43:53 +00:00 |
|
Trustin Lee
|
580f6f2284
|
* Another workaround for 'missing algorithm' error in SSLEngine
* Made handshaking non-volatile
|
2008-11-16 20:34:07 +00:00 |
|
Trustin Lee
|
87cd22b5fd
|
More synchronization to avoid 'missing algorithm' error (not sure ..)
|
2008-11-16 17:59:27 +00:00 |
|
Trustin Lee
|
d0964a4b46
|
Additional synchronization condition to avoid 'missing algorithm' error
|
2008-11-16 16:35:09 +00:00 |
|
Trustin Lee
|
0e3679e919
|
Fixed a problem where AbstractSocketSslEchoTest doesn't close all channels when a connection attempt fails.
|
2008-11-16 16:25:08 +00:00 |
|
Trustin Lee
|
feac0d6a3d
|
Fixed a problem where AbstractSocketSslEchoTest doesn't close all channels when handshake fails.
|
2008-11-16 16:22:27 +00:00 |
|
Trustin Lee
|
5df6229d2a
|
A workaround for 'missing algorithm' error during handshake
|
2008-11-16 15:44:05 +00:00 |
|
Trustin Lee
|
62ed58a2be
|
Made sure unwrap is called for all NEED_UNWRAP handshake status
|
2008-11-16 15:14:32 +00:00 |
|
Trustin Lee
|
dce019966e
|
A workaround for 'missing algorithm' error during handshake
|
2008-11-16 15:06:10 +00:00 |
|
Trustin Lee
|
333f45ccd5
|
Made sure events are propagated somehow.
|
2008-11-16 15:02:01 +00:00 |
|
Trustin Lee
|
72ab3f04b0
|
* Removed output to stderr
* Made sure SSLEngine is cleaned up when a handler in the downstream raises an exception.
|
2008-11-16 14:43:49 +00:00 |
|
Trustin Lee
|
630473bf84
|
Fixed issue: NETTY-67 (ChannelBuffer.writeBytes() and setBytes() should not throw ClosedChannelException)
|
2008-11-16 13:52:47 +00:00 |
|
Trustin Lee
|
9aec8119cb
|
Used logger instead of syserr
|
2008-11-16 13:34:24 +00:00 |
|
Trustin Lee
|
4cd9105eeb
|
Made sure all exceptions are printed (2nd try)
|
2008-11-16 13:30:42 +00:00 |
|
Trustin Lee
|
b29b5a8289
|
* Reverted previous SslHandler fix that doesn't work
* More strict handshake status check
|
2008-11-16 11:47:35 +00:00 |
|
Trustin Lee
|
ea94ea850b
|
Fixed a problem where not all exceptions are logged immediately in AbstractSocketSslEchoTest
|
2008-11-16 11:43:44 +00:00 |
|
Trustin Lee
|
834277a9eb
|
Potential fix for intermittent SSL test failures
|
2008-11-16 11:29:36 +00:00 |
|
Trustin Lee
|
c848b8cc58
|
Fixed incorrect timing test due to slow MD5 algorithm initialization
|
2008-11-16 11:22:40 +00:00 |
|
Trustin Lee
|
b3f39c1bb3
|
Additional debug information in AbstractSocketSslEchoTest
|
2008-11-16 10:33:00 +00:00 |
|
Trustin Lee
|
7896ec05f6
|
Fixed issue: NETTY-66 (MapUtil.isOrderedMap() blocks for a long time on a certain platform.)
* Replaced random number generation with a pre-populated sample table
|
2008-11-15 13:22:06 +00:00 |
|
Trustin Lee
|
c0a3f3383b
|
Removed an unused static final field
|
2008-11-14 22:06:33 +00:00 |
|
Trustin Lee
|
90045fd487
|
Reverted my patch and applied Doug Lea's patch
|
2008-11-14 22:01:23 +00:00 |
|
Trustin Lee
|
3b5c36782d
|
Fixed issue: NETTY-64 (Dead lock during SSL handshake)
* Acquired handshakeLock explicitly when sending handshake messages and executing delegated tasks
|
2008-11-14 12:05:49 +00:00 |
|
Trustin Lee
|
7123581038
|
Comment clean up as advised
|
2008-11-14 08:02:42 +00:00 |
|
Trustin Lee
|
09ef8e8964
|
Comment clean up as advised
|
2008-11-14 07:45:53 +00:00 |
|
Trustin Lee
|
927aaf8d12
|
Documentation cleanup
|
2008-11-14 06:55:02 +00:00 |
|
Trustin Lee
|
3d83768039
|
Documentation cleanup
|
2008-11-14 06:32:10 +00:00 |
|
Trustin Lee
|
8b3956b238
|
Typo in StringDecoder Javadoc
|
2008-11-14 06:07:56 +00:00 |
|
Trustin Lee
|
b876bd8cec
|
Added a potential fix for infinite loop in LinkedTransferQueue.clean()
|
2008-11-13 14:11:59 +00:00 |
|
Trustin Lee
|
58e727f238
|
Typo
|
2008-11-10 02:17:14 +00:00 |
|
Trustin Lee
|
59e15efbbe
|
Simplified NioWorker.register() - it was too complex
|
2008-11-08 12:00:07 +00:00 |
|
Trustin Lee
|
c5a211e07a
|
Used ExpectedError instead of Exception to tell that the failure is expected obviously
|
2008-11-08 11:59:23 +00:00 |
|
Trustin Lee
|
9aed1addb1
|
Potential fix for NPE in NioWorker.RegisterTask.run()
|
2008-11-07 17:43:44 +00:00 |
|
Trustin Lee
|
cd3acef9e1
|
Potention fix for NPE in NioWorker.RegisterTask.run()
|
2008-11-07 17:38:02 +00:00 |
|
Trustin Lee
|
0976673ac2
|
Potention fix for NPE in NioWorker.RegisterTask.run()
|
2008-11-07 17:37:10 +00:00 |
|
Trustin Lee
|
14a49ed042
|
Made NIO constraint detector much more robust against indefinite blocking by enabling timeout (7 secs)
|
2008-11-07 13:04:56 +00:00 |
|
Trustin Lee
|
288c693f62
|
Code cleanup
|
2008-11-07 08:27:28 +00:00 |
|
Trustin Lee
|
fcc0087eb2
|
Reverted temporary code which was mistakenly checked in
|
2008-11-07 08:25:52 +00:00 |
|
Trustin Lee
|
87dd4adbc7
|
Adjusted regression test duration
|
2008-11-07 08:24:58 +00:00 |
|
Trustin Lee
|
b8af182e8c
|
Fixed issue: NETTY-64 Duplicate Channel IDs are generated.
|
2008-11-07 08:23:15 +00:00 |
|
Trustin Lee
|
de2ff34dc2
|
Replaced System.currentTimeMillis() with System.nanoTime()
|
2008-11-07 03:00:19 +00:00 |
|
Trustin Lee
|
7fe42c4c4f
|
Increased test timeout to avoid Hudson false alarm
|
2008-11-07 02:43:27 +00:00 |
|
Trustin Lee
|
cee920f3b8
|
Workaround for the bogus FindBugs warning in ReplayingDecoderBuffer
|
2008-11-07 02:41:29 +00:00 |
|
Trustin Lee
|
f73de01a68
|
Doesn't need to reject ReplayingDecoderBuffer.equals()
|
2008-11-07 02:36:57 +00:00 |
|
Trustin Lee
|
34b9b00723
|
Fixed a potential concurrency issue in DefaultChannelFuture.notifyListeners(), as advised by FindBugs
|
2008-11-07 02:35:04 +00:00 |
|
Trustin Lee
|
81d29bafc2
|
Fixed warnings reported by FindBugs
|
2008-11-07 02:26:21 +00:00 |
|
Trustin Lee
|
9d35088801
|
& -> &&
|
2008-11-07 02:10:44 +00:00 |
|
Trustin Lee
|
d8cd49c1b7
|
Fixed a warning reported by FindBugs in CompositeChannelBuffer
|
2008-11-07 02:08:36 +00:00 |
|
Trustin Lee
|
33187d0285
|
Fixed issue: NETTY-62 ChannelBuffers.EMPTY_BUFFER is not final
|
2008-11-07 02:05:09 +00:00 |
|
Trustin Lee
|
3a2a7a3a3c
|
Made sure NioWorker.cleanUpWriteBuffer() is called even if the worker thread is not running.
|
2008-11-07 02:00:07 +00:00 |
|
Trustin Lee
|
b50cc2b025
|
Removed an unused import
|
2008-11-07 01:50:51 +00:00 |
|
Trustin Lee
|
ea1a68cb83
|
Made sure that NioWorker.wakenUp is set to true only when its selector is really waken up
|
2008-11-06 17:31:07 +00:00 |
|
Trustin Lee
|
79fe2324c9
|
Fixed RejectedExecutionException in the OIO-OIO SSL echo test
|
2008-11-06 16:21:35 +00:00 |
|
Trustin Lee
|
7db3eacbb4
|
Potential fix for OIO-OIO SSL echo test
|
2008-11-06 15:56:05 +00:00 |
|
Trustin Lee
|
22f33539c1
|
Fixed a problem where NPE is thrown when NioWorker.write() is called too early
|
2008-11-06 15:01:08 +00:00 |
|
Trustin Lee
|
85e63a2c98
|
Potential fix for NPE during SocketChannel.register(..)
|
2008-11-06 12:56:45 +00:00 |
|
Trustin Lee
|
59abaa1657
|
Tiny code cleanup
|
2008-11-06 11:41:01 +00:00 |
|
Trustin Lee
|
00ec5be6dd
|
Fixed a bug where NioWorker.register() hangs up with high CPU consumption when it failed to open a selector.
|
2008-11-06 11:39:17 +00:00 |
|
Trustin Lee
|
7f1ff668f7
|
Fixed a bug where NioWorker.register() hangs up with high CPU consumption when it failed to open a selector.
|
2008-11-06 11:19:48 +00:00 |
|
Trustin Lee
|
486218ab28
|
Potential fix for NPE during SocketChannel.register(..)
|
2008-11-06 10:55:56 +00:00 |
|
Trustin Lee
|
b15fe51e95
|
RegisterTask should be a static class.
|
2008-11-06 08:49:00 +00:00 |
|
Trustin Lee
|
87b4f886a6
|
Code cleanup
|
2008-10-06 13:25:27 +00:00 |
|
Trustin Lee
|
dddf14f79a
|
Fixed a bug: NETTY-56 (The ChannFuture returned by SslHandler.handshake() is not completed when the associated Channel is closed during handshake.)
|
2008-10-03 02:53:57 +00:00 |
|
Trustin Lee
|
b378c083ec
|
A little bit of rephrasing
|
2008-10-02 05:06:10 +00:00 |
|
Trustin Lee
|
8f9769f8e9
|
Removed unnecessary links
|
2008-10-02 05:02:46 +00:00 |
|
Trustin Lee
|
b6d9755ba5
|
Updated the getting started guide which is simpler thanks to the recent changes in SimpleChannelHandler
|
2008-10-02 04:58:04 +00:00 |
|
Trustin Lee
|
5120c1172c
|
Simplfied the factorial example using the new SimpleChannelHandler
|
2008-10-02 04:44:06 +00:00 |
|
Trustin Lee
|
ca1f11ff67
|
Forgot to add the 'throws' clause
|
2008-10-02 04:43:02 +00:00 |
|
Trustin Lee
|
da04e2cae9
|
Fixed issue: NETTY-54 (Improve SimpleChannelHandler to implement ChannelDownstreamHandler)
Fixed issue: NETTY-55 (Channel.unbind() method is missing.)
|
2008-10-02 04:40:46 +00:00 |
|
Trustin Lee
|
6c2230aac2
|
Swallow AsynchronousCloseException
|
2008-10-01 13:14:28 +00:00 |
|
Trustin Lee
|
4376cd5a91
|
Fixed a bug: NETTY-53 (ClassNotFoundException when an ObjectDecoder with no ClassLoader specified tries to decode an object.)
* Explicitly acquired the current thread's context class loader if a user specified no or null class loader.
|
2008-10-01 11:06:18 +00:00 |
|
Trustin Lee
|
8d5d8fd172
|
Fixed another race condition which occurs when OP_WRITE and OP_READ flags are set/cleared at the same time
|
2008-10-01 08:42:26 +00:00 |
|
Trustin Lee
|
cfa6794292
|
Potential fix for NETTY-52 (IllegalArgumentException when trying to change the current interestOps)
|
2008-10-01 05:25:01 +00:00 |
|
Trustin Lee
|
dae3b05ebb
|
Replaced FastQueue with LinkedTransferQueue
|
2008-10-01 04:49:10 +00:00 |
|
Trustin Lee
|
6d372c367b
|
Added LinkedTransferQueue
|
2008-10-01 03:18:36 +00:00 |
|
Trustin Lee
|
2f4e20ce7a
|
Made more generic
|
2008-09-30 14:23:38 +00:00 |
|
Trustin Lee
|
44c409ca24
|
More accurate default receive buffer size predictor implementation
|
2008-09-30 13:02:41 +00:00 |
|
Trustin Lee
|
0831b32090
|
Decreased the default maximum receive buffer size to 64KiB - it's enough for more cases.
|
2008-09-30 06:29:16 +00:00 |
|
Trustin Lee
|
950a386d3f
|
Code cleanup
|
2008-09-30 01:53:24 +00:00 |
|
Trustin Lee
|
7de92967c2
|
Made MemoryAwareThreadPoolExecutor.shouldCount() extensible
|
2008-09-30 01:52:02 +00:00 |
|
Trustin Lee
|
85dc8f93f5
|
Fixed a bug where per-channel memory limitation didn't work correctly
|
2008-09-30 01:49:22 +00:00 |
|
Trustin Lee
|
8c15102bc3
|
Fixed issue NETTY-51 (MemoryAwareThreadPoolExecutor and its subtypes should use long instead of int to store the counters)
|
2008-09-30 00:42:04 +00:00 |
|
Trustin Lee
|
6f18c940dd
|
Fixed issue NETTY-50 (Dead lock in MemoryAwareThreadPoolExecutor)
* Made sure that the max memory size properties become immutable
|
2008-09-30 00:31:32 +00:00 |
|
Trustin Lee
|
50f043fa3e
|
Fixed issue NETTY-50 (Dead lock in MemoryAwareThreadPoolExecutor)
* Fixed incorrect release condition
|
2008-09-30 00:16:42 +00:00 |
|
Trustin Lee
|
d7c53437e9
|
Fixed errors in JavaDoc about OIO-based transport shutdown
|
2008-09-29 06:51:41 +00:00 |
|
Trustin Lee
|
8fb2f7c789
|
It's actually enough with a simple shutdown lock because we have only one acceptor thread.
|
2008-09-28 15:07:47 +00:00 |
|
Trustin Lee
|
dccc9f8665
|
* Improved the throughput of the server-side accept operation
* Added FastQueue.isEmpty()
|
2008-09-28 15:01:21 +00:00 |
|
Trustin Lee
|
4d17db6eb1
|
Using LinkedList seems to yield same or better performance
|
2008-09-28 14:21:38 +00:00 |
|
Trustin Lee
|
40b1f26c34
|
Made sure all segments are evaluated on poll for potentially better throughput (still proof-of-concept - getting better)
|
2008-09-28 14:12:28 +00:00 |
|
Trustin Lee
|
597cbd870c
|
Isolated unchecked cast warning from FastQueue.poll()
|
2008-09-28 13:57:17 +00:00 |
|
Trustin Lee
|
6611563c8c
|
Fixed a race condition in FastQueue
|
2008-09-28 13:52:49 +00:00 |
|
Trustin Lee
|
5170838e79
|
Added direct buffer support (disabled by default and can't be enabled without recompilation for now - should be fixed in 3.1.)
|
2008-09-28 12:51:50 +00:00 |
|
Trustin Lee
|
b64124efd6
|
* Renamed WriteMessageQueue to FastQueue, made it generic and optimized it
* Added ConcurrentFastQueue (proof of concept yet - slow)
|
2008-09-27 14:22:52 +00:00 |
|
Trustin Lee
|
a0d132a4d8
|
Moved WriteMessageQueue to the util package
|
2008-09-27 11:53:00 +00:00 |
|
Trustin Lee
|
f2c1734636
|
Reduced contention between I/O thread and writer
|
2008-09-26 12:28:09 +00:00 |
|
Trustin Lee
|
90ea9aa047
|
Formatting
|
2008-09-26 09:05:41 +00:00 |
|
Trustin Lee
|
362ecf640b
|
Fixed a bug where DiscardClient didn't work since the last optimization
|
2008-09-26 09:04:02 +00:00 |
|
Trustin Lee
|
39086edae6
|
Introduced an intermediary write buffer to reduce the contention
|
2008-09-26 08:31:33 +00:00 |
|
Trustin Lee
|
0241120ace
|
Optimization.. (reduced volatiles)
|
2008-09-26 07:00:30 +00:00 |
|
Trustin Lee
|
22d79a501d
|
Replaced ConcurrentLinkedQueue with LinkedBlockingQueue in NioSocketChannel
|
2008-09-26 04:31:41 +00:00 |
|
Trustin Lee
|
9f5468f7a7
|
Made sure NioWorker.taskQueue doesn't contain the same WriteTask
|
2008-09-26 03:32:26 +00:00 |
|
Trustin Lee
|
5f1ecc9022
|
Fixed throughput issue when messages are written from different threads than I/O worker threads
|
2008-09-26 03:02:31 +00:00 |
|
Trustin Lee
|
ebdcb21421
|
Made sure StackTraceSimplifier is always loaded
|
2008-09-26 02:57:10 +00:00 |
|
Trustin Lee
|
824e0034c4
|
A little bit of optimization
|
2008-09-26 00:43:14 +00:00 |
|
Trustin Lee
|
e1f4053d41
|
At last but not least
|
2008-09-25 16:31:03 +00:00 |
|
Trustin Lee
|
33c1932353
|
Dunno why but SocketChannel.accept() sometimes returns null.
|
2008-09-25 11:05:45 +00:00 |
|
Trustin Lee
|
bc60f01b58
|
section -> chapter
|
2008-09-24 12:38:52 +00:00 |
|
Trustin Lee
|
9c0b5d1949
|
Better table L&F
|
2008-09-24 12:01:50 +00:00 |
|
Trustin Lee
|
87390319c8
|
Added the list of available options
|
2008-09-24 11:28:46 +00:00 |
|
Trustin Lee
|
274fa4aac5
|
A little bit of duplication to help understanding of asynchronous operation
|
2008-09-24 10:49:39 +00:00 |
|
Trustin Lee
|
d0d99ff6bc
|
More detailed explanation on ChannelFuture
|
2008-09-24 10:46:58 +00:00 |
|
Trustin Lee
|
320b7133a2
|
More clarification on ChannelHandlerContext
|
2008-09-24 10:37:19 +00:00 |
|
Trustin Lee
|
92be78df49
|
Rephrased the description of ChannelHandlerContext
|
2008-09-24 10:08:30 +00:00 |
|
Trustin Lee
|
60eec52dab
|
Typo
|
2008-09-24 09:56:10 +00:00 |
|
Trustin Lee
|
0b8687cdeb
|
More explanation on the characteristics of bootstraps
|
2008-09-24 09:55:19 +00:00 |
|