Skip to content

Commit

Permalink
Implement EM::Connection#get_sockname() for the JRuby EM port.
Browse files Browse the repository at this point in the history
  • Loading branch information
neilconway committed May 16, 2012
1 parent 76aa7e9 commit f0e4aa9
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 0 deletions.
4 changes: 4 additions & 0 deletions java/src/com/rubyeventmachine/EmReactor.java
Expand Up @@ -524,6 +524,10 @@ public Object[] getPeerName (long sig) {
return Connections.get(sig).getPeerName();
}

public Object[] getSockName (long sig) {
return Connections.get(sig).getSockName();
}

public long attachChannel (SocketChannel sc, boolean watch_mode) {
long b = createBinding();

Expand Down
1 change: 1 addition & 0 deletions java/src/com/rubyeventmachine/EventableChannel.java
Expand Up @@ -60,6 +60,7 @@ public interface EventableChannel {
public void setCommInactivityTimeout (long seconds);

public Object[] getPeerName();
public Object[] getSockName();

public boolean isWatchOnly();

Expand Down
6 changes: 6 additions & 0 deletions java/src/com/rubyeventmachine/EventableDatagramChannel.java
Expand Up @@ -183,6 +183,12 @@ public Object[] getPeerName () {
}
}

public Object[] getSockName () {
DatagramSocket socket = channel.socket();
return new Object[]{ socket.getLocalPort(),
socket.getLocalAddress().getHostAddress() };
}

public boolean isWatchOnly() { return false; }
public boolean isNotifyReadable() { return false; }
public boolean isNotifyWritable() { return false; }
Expand Down
6 changes: 6 additions & 0 deletions java/src/com/rubyeventmachine/EventableSocketChannel.java
Expand Up @@ -302,6 +302,12 @@ public Object[] getPeerName () {
return new Object[]{ sock.getPort(), sock.getInetAddress().getHostAddress() };
}

public Object[] getSockName () {
Socket sock = channel.socket();
return new Object[]{ sock.getLocalPort(),
sock.getLocalAddress().getHostAddress() };
}

public void setWatchOnly() {
bWatchOnly = true;
updateEvents();
Expand Down
5 changes: 5 additions & 0 deletions lib/jeventmachine.rb
Expand Up @@ -203,6 +203,11 @@ def self.get_peername sig
Socket.pack_sockaddr_in(*peer)
end
end
def self.get_sockname sig
if sockName = @em.getSockName(sig)
Socket.pack_sockaddr_in(*sockName)
end
end
# @private
def self.attach_fd fileno, watch_mode
# 3Aug09: We could pass in the actual SocketChannel, but then it would be modified (set as non-blocking), and
Expand Down

0 comments on commit f0e4aa9

Please sign in to comment.