Toggle navigation
Toggle navigation
This project
Loading...
Sign in
홍길동
/
onos
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
Madan Jampani
2014-10-20 16:55:54 -0700
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
f22f2043548ddba2c1a2ffc46ff0672006f1bc7e
f22f2043
1 parent
e0ec3294
Using native transport (epoll) with netty
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
6 deletions
utils/netty/src/main/java/org/onlab/netty/NettyMessagingService.java
utils/netty/src/main/java/org/onlab/netty/NettyMessagingService.java
View file @
f22f204
...
...
@@ -16,7 +16,11 @@ import io.netty.channel.ChannelHandlerContext;
import
io.netty.channel.ChannelInitializer
;
import
io.netty.channel.ChannelOption
;
import
io.netty.channel.EventLoopGroup
;
import
io.netty.channel.ServerChannel
;
import
io.netty.channel.SimpleChannelInboundHandler
;
import
io.netty.channel.epoll.EpollEventLoopGroup
;
import
io.netty.channel.epoll.EpollServerSocketChannel
;
import
io.netty.channel.epoll.EpollSocketChannel
;
import
io.netty.channel.nio.NioEventLoopGroup
;
import
io.netty.channel.socket.SocketChannel
;
import
io.netty.channel.socket.nio.NioServerSocketChannel
;
...
...
@@ -40,9 +44,10 @@ public class NettyMessagingService implements MessagingService {
private
final
int
port
;
private
final
Endpoint
localEp
;
private
final
EventLoopGroup
bossGroup
=
new
NioEventLoopGroup
()
;
private
EventLoopGroup
bossGroup
;
private
EventLoopGroup
workerGroup
;
private
Class
<?
extends
Channel
>
channelClass
;
private
Class
<?
extends
Channel
>
clientChannelClass
;
private
Class
<?
extends
ServerChannel
>
serverChannelClass
;
private
final
ConcurrentMap
<
String
,
MessageHandler
>
handlers
=
new
ConcurrentHashMap
<>();
private
final
Cache
<
Long
,
AsyncResponse
>
responseFutures
=
CacheBuilder
.
newBuilder
()
.
maximumSize
(
100000
)
...
...
@@ -55,8 +60,17 @@ public class NettyMessagingService implements MessagingService {
// TODO: make this configurable.
private
void
initEventLoopGroup
()
{
workerGroup
=
new
NioEventLoopGroup
();
channelClass
=
NioSocketChannel
.
class
;
try
{
bossGroup
=
new
EpollEventLoopGroup
();
workerGroup
=
new
EpollEventLoopGroup
();
clientChannelClass
=
EpollSocketChannel
.
class
;
serverChannelClass
=
EpollServerSocketChannel
.
class
;
}
catch
(
Throwable
th
)
{
bossGroup
=
new
NioEventLoopGroup
();
workerGroup
=
new
NioEventLoopGroup
();
serverChannelClass
=
NioServerSocketChannel
.
class
;
clientChannelClass
=
NioSocketChannel
.
class
;
}
}
public
NettyMessagingService
()
{
...
...
@@ -150,7 +164,7 @@ public class NettyMessagingService implements MessagingService {
// TODO: Need JVM options to configure PooledByteBufAllocator.
b
.
option
(
ChannelOption
.
ALLOCATOR
,
PooledByteBufAllocator
.
DEFAULT
);
b
.
group
(
bossGroup
,
workerGroup
)
.
channel
(
NioServerSocketChannel
.
c
lass
)
.
channel
(
serverChannelC
lass
)
.
childHandler
(
new
OnosCommunicationChannelInitializer
())
.
option
(
ChannelOption
.
SO_BACKLOG
,
128
)
.
childOption
(
ChannelOption
.
SO_KEEPALIVE
,
true
);
...
...
@@ -181,7 +195,7 @@ public class NettyMessagingService implements MessagingService {
bootstrap
.
group
(
workerGroup
);
// TODO: Make this faster:
// http://normanmaurer.me/presentations/2014-facebook-eng-netty/slides.html#37.0
bootstrap
.
channel
(
channelClass
);
bootstrap
.
channel
(
c
lientC
hannelClass
);
bootstrap
.
option
(
ChannelOption
.
SO_KEEPALIVE
,
true
);
bootstrap
.
handler
(
new
OnosCommunicationChannelInitializer
());
// Start the client.
...
...
Please
register
or
login
to post a comment