You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tr...@apache.org on 2004/12/05 09:20:41 UTC
svn commit: r109876 - in incubator/directory/seda/branches/trustin/src: examples/org/apache/netty/examples/echo/server java/org/apache/netty/common java/org/apache/netty/common/util java/org/apache/netty/downstream java/org/apache/netty/downstream/impl/tcp java/org/apache/netty/registry java/org/apache/netty/upstream
Author: trustin
Date: Sun Dec 5 00:20:39 2004
New Revision: 109876
URL: http://svn.apache.org/viewcvs?view=rev&rev=109876
Log:
* Fixed: 100% CPU consumption when read buffer is full and user don't clear it.
* Added: ReadBuffer and WriteBuffer in downstream
TODO:
* Implement TcpConnector
Added:
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/ReadBuffer.java (contents, props changed)
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/WriteBuffer.java (contents, props changed)
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpReadBuffer.java (contents, props changed)
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpWriteBuffer.java (contents, props changed)
Modified:
incubator/directory/seda/branches/trustin/src/examples/org/apache/netty/examples/echo/server/EchoServerSessionHandler.java
incubator/directory/seda/branches/trustin/src/examples/org/apache/netty/examples/echo/server/Main.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/IdleStatus.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/IntraVmAddress.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/SessionConfig.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/util/ByteBufferPool.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/util/Queue.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Acceptor.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Connector.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Session.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/SessionHandler.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpAcceptor.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpIoProcessor.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpSession.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/Service.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/ServiceRegistry.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/TransportType.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Acceptor.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Codec.java
incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Connector.java
Modified: incubator/directory/seda/branches/trustin/src/examples/org/apache/netty/examples/echo/server/EchoServerSessionHandler.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/examples/org/apache/netty/examples/echo/server/EchoServerSessionHandler.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/examples/org/apache/netty/examples/echo/server/EchoServerSessionHandler.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/examples/org/apache/netty/examples/echo/server/EchoServerSessionHandler.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/examples/org/apache/netty/examples/echo/server/EchoServerSessionHandler.java (original)
+++ incubator/directory/seda/branches/trustin/src/examples/org/apache/netty/examples/echo/server/EchoServerSessionHandler.java Sun Dec 5 00:20:39 2004
@@ -1,54 +1,80 @@
/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
* @(#) $Id$
*/
package org.apache.netty.examples.echo.server;
-import java.nio.ByteBuffer;
-
import org.apache.netty.common.IdleStatus;
+import org.apache.netty.downstream.ReadBuffer;
import org.apache.netty.downstream.Session;
import org.apache.netty.downstream.SessionHandler;
+import org.apache.netty.downstream.WriteBuffer;
+
/**
* TODO Document me.
- *
+ *
* @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$,
+ * @version $Rev$, $Date$,
*/
public class EchoServerSessionHandler implements SessionHandler {
-
- public void sessionOpened(Session session) {
- System.out.println(session.getRemoteAddress() + ": OPEN");
- }
-
- public void sessionClosed(Session session) {
- System.out.println(session.getRemoteAddress() + ": CLOSED");
- }
-
- public void sessionIdle(Session session, IdleStatus status) {
- System.out.println(session.getRemoteAddress() + ": IDLE");
- }
-
- public void exceptionCaught(Session session, Throwable cause) {
- System.out.println(session.getRemoteAddress() + ": EXCEPTION");
- cause.printStackTrace(System.out);
- }
-
- public void dataRead(Session session, ByteBuffer buf, int readBytes) {
- System.out.println(session.getRemoteAddress() + ": READ (" + readBytes + " B)");
- if (buf.remaining() <= session.getWriteBuffer().remaining()) {
- session.getWriteBuffer().put(buf);
- session.flush();
- }
- }
-
- public void dataWritten(Session session, ByteBuffer buf, int writtenBytes) {
- System.out.println(session.getRemoteAddress() + ": WRITTEN (" + writtenBytes + "B)");
- ByteBuffer readBuf = session.getReadBuffer();
- System.out.println(readBuf.remaining() + " " + buf.remaining());
- if (readBuf.remaining() <= buf.remaining()) {
- buf.put(readBuf);
- session.flush();
- }
- }
+ public void sessionOpened(Session session) {
+ System.out.println(session.getRemoteAddress() + ": OPEN");
+ }
+
+ public void sessionClosed(Session session) {
+ System.out.println(session.getRemoteAddress() + ": CLOSED");
+ }
+
+ public void sessionIdle(Session session, IdleStatus status) {
+ System.out.println(session.getRemoteAddress() + ": IDLE");
+ }
+
+ public void exceptionCaught(Session session, Throwable cause) {
+ System.out.println(session.getRemoteAddress() + ": EXCEPTION");
+ cause.printStackTrace(System.out);
+ }
+
+ public void dataRead(Session session, int readBytes) {
+ System.out.println(session.getRemoteAddress() + ": READ (" +
+ readBytes + "B)");
+
+ ReadBuffer rb = session.getReadBuffer();
+ WriteBuffer wb = session.getWriteBuffer();
+
+ if (rb.remaining() <= wb.remaining()) {
+ wb.put(rb);
+ wb.flush();
+ rb.signal();
+ }
+ }
+
+ public void dataWritten(Session session, int writtenBytes) {
+ System.out.println(session.getRemoteAddress() + ": WRITTEN (" +
+ writtenBytes + "B)");
+
+ ReadBuffer rb = session.getReadBuffer();
+ WriteBuffer wb = session.getWriteBuffer();
+
+ if (rb.hasRemaining() && rb.remaining() <= wb.remaining()) {
+ wb.put(rb);
+ wb.flush();
+ rb.signal();
+ }
+ }
}
Modified: incubator/directory/seda/branches/trustin/src/examples/org/apache/netty/examples/echo/server/Main.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/examples/org/apache/netty/examples/echo/server/Main.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/examples/org/apache/netty/examples/echo/server/Main.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/examples/org/apache/netty/examples/echo/server/Main.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/examples/org/apache/netty/examples/echo/server/Main.java (original)
+++ incubator/directory/seda/branches/trustin/src/examples/org/apache/netty/examples/echo/server/Main.java Sun Dec 5 00:20:39 2004
@@ -1,4 +1,20 @@
/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
* @(#) $Id$
*/
package org.apache.netty.examples.echo.server;
@@ -8,18 +24,20 @@
import org.apache.netty.downstream.Acceptor;
import org.apache.netty.downstream.impl.tcp.TcpAcceptor;
+
/**
* TODO Document me.
- *
+ *
* @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$,
+ * @version $Rev$, $Date$,
*/
public class Main {
- private static final int PORT = 8080;
+ private static final int PORT = 8080;
- public static void main(String[] args) throws Exception {
- Acceptor acceptor = new TcpAcceptor();
- acceptor.bind(new InetSocketAddress(PORT), new EchoServerSessionHandler());
- System.out.println("Listening on port " + PORT);
- }
+ public static void main(String[] args) throws Exception {
+ Acceptor acceptor = new TcpAcceptor();
+ acceptor.bind(new InetSocketAddress(PORT),
+ new EchoServerSessionHandler());
+ System.out.println("Listening on port " + PORT);
+ }
}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/IdleStatus.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/IdleStatus.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/IdleStatus.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/IdleStatus.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/IdleStatus.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/IdleStatus.java Sun Dec 5 00:20:39 2004
@@ -1,45 +1,45 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.common;
-
-
-/**
- * TODO Insert type comment.
- *
- * @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$
- */
-public class IdleStatus {
- public static final IdleStatus READER_IDLE = new IdleStatus("reader idle");
- public static final IdleStatus WRITER_IDLE = new IdleStatus("writer idle");
- public static final IdleStatus BOTH_IDLE = new IdleStatus("both idle");
- private final String strValue;
-
- /**
- * Creates a new instance.
- */
- private IdleStatus(String strValue) {
- this.strValue = strValue;
- }
-
- public String toString() {
- return strValue;
- }
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.common;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$
+ */
+public class IdleStatus {
+ public static final IdleStatus READER_IDLE = new IdleStatus("reader idle");
+ public static final IdleStatus WRITER_IDLE = new IdleStatus("writer idle");
+ public static final IdleStatus BOTH_IDLE = new IdleStatus("both idle");
+ private final String strValue;
+
+ /**
+ * Creates a new instance.
+ */
+ private IdleStatus(String strValue) {
+ this.strValue = strValue;
+ }
+
+ public String toString() {
+ return strValue;
+ }
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/IntraVmAddress.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/IntraVmAddress.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/IntraVmAddress.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/IntraVmAddress.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/IntraVmAddress.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/IntraVmAddress.java Sun Dec 5 00:20:39 2004
@@ -1,72 +1,72 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.common;
-
-import java.net.SocketAddress;
-
-
-/**
- * TODO Insert type comment.
- *
- * @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$
- */
-public class IntraVmAddress extends SocketAddress {
- private final int port;
-
- /**
- * Creates a new instance.
- */
- public IntraVmAddress(int port) {
- if ((port < 0) || (port > 65535)) {
- throw new IllegalArgumentException();
- }
-
- this.port = port;
- }
-
- public int getPort() {
- return port;
- }
-
- public int hashCode() {
- return port;
- }
-
- public boolean equals(Object o) {
- if (o == null) {
- return false;
- }
-
- if (this == o) {
- return true;
- }
-
- if (o instanceof IntraVmAddress) {
- return port == ((IntraVmAddress) o).port;
- }
-
- return false;
- }
-
- public String toString() {
- return "vm://localhost:" + port;
- }
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.common;
+
+import java.net.SocketAddress;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$
+ */
+public class IntraVmAddress extends SocketAddress {
+ private final int port;
+
+ /**
+ * Creates a new instance.
+ */
+ public IntraVmAddress(int port) {
+ if ((port < 0) || (port > 65535)) {
+ throw new IllegalArgumentException();
+ }
+
+ this.port = port;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public int hashCode() {
+ return port;
+ }
+
+ public boolean equals(Object o) {
+ if (o == null) {
+ return false;
+ }
+
+ if (this == o) {
+ return true;
+ }
+
+ if (o instanceof IntraVmAddress) {
+ return port == ((IntraVmAddress) o).port;
+ }
+
+ return false;
+ }
+
+ public String toString() {
+ return "vm://localhost:" + port;
+ }
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/SessionConfig.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/SessionConfig.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/SessionConfig.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/SessionConfig.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/SessionConfig.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/SessionConfig.java Sun Dec 5 00:20:39 2004
@@ -1,35 +1,35 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.common;
-
-
-/**
- * TODO Insert type comment.
- *
- * @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$
- */
-public interface SessionConfig {
- int getIdleTime(IdleStatus status);
-
- long getIdleTimeInMillis(IdleStatus status);
-
- void setIdleTime(IdleStatus status, int idleTime);
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.common;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface SessionConfig {
+ int getIdleTime(IdleStatus status);
+
+ long getIdleTimeInMillis(IdleStatus status);
+
+ void setIdleTime(IdleStatus status, int idleTime);
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/util/ByteBufferPool.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/util/ByteBufferPool.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/util/ByteBufferPool.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/util/ByteBufferPool.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/util/ByteBufferPool.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/util/ByteBufferPool.java Sun Dec 5 00:20:39 2004
@@ -1,47 +1,47 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.netty.common.util;
-
-import java.nio.ByteBuffer;
-
-
-/**
- * TODO Insert type comment.
- *
- * @version $Rev$, $Date$
- * @author Trustin Lee (http://gleamynode.net/dev/)
- */
-public class ByteBufferPool {
- public static final int CAPACITY = 8192;
- private static Queue buffers = new Queue(16);
-
- public static synchronized ByteBuffer open() {
- ByteBuffer buf = (ByteBuffer) buffers.pop();
-
- if (buf == null) {
- buf = ByteBuffer.allocateDirect(CAPACITY);
- } else {
- buf.clear();
- }
-
- return buf;
- }
-
- public static synchronized void close(ByteBuffer buf) {
- buffers.push(buf);
- }
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.netty.common.util;
+
+import java.nio.ByteBuffer;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @version $Rev$, $Date$
+ * @author Trustin Lee (http://gleamynode.net/dev/)
+ */
+public class ByteBufferPool {
+ public static final int CAPACITY = 8192;
+ private static Queue buffers = new Queue(16);
+
+ public static synchronized ByteBuffer open() {
+ ByteBuffer buf = (ByteBuffer) buffers.pop();
+
+ if (buf == null) {
+ buf = ByteBuffer.allocateDirect(CAPACITY);
+ } else {
+ buf.clear();
+ }
+
+ return buf;
+ }
+
+ public static synchronized void close(ByteBuffer buf) {
+ buffers.push(buf);
+ }
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/util/Queue.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/util/Queue.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/util/Queue.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/util/Queue.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/util/Queue.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/common/util/Queue.java Sun Dec 5 00:20:39 2004
@@ -1,135 +1,135 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.common.util;
-
-import java.io.Serializable;
-
-import java.util.Arrays;
-
-
-/**
- * <p>
- * A simple queue class. This class is <b>NOT </b> thread-safe.
- * </p>
- *
- * @author Trustin Lee (http://gleamynode.net/dev/)
- * href="http://projects.gleamynode.net/">http://projects.gleamynode.net/
- * </a>)
- *
- * @version $Rev$, $Date$
- */
-public class Queue implements Serializable {
- private Object[] items;
- private int first = 0;
- private int last = 0;
- private int size = 0;
-
- /**
- * Construct a new, empty <code>Queue</code> with the specified initial
- * capacity.
- */
- public Queue(int initialCapacity) {
- items = new Object[initialCapacity];
- }
-
- /**
- * Clears this queue.
- */
- public void clear() {
- Arrays.fill(items, null);
- first = 0;
- last = 0;
- size = 0;
- }
-
- /**
- * Dequeues from this queue.
- *
- * @return <code>null</code>, if this queue is empty or the element is
- * really <code>null</code>.
- */
- public Object pop() {
- if (size == 0) {
- return null;
- }
-
- Object ret = items[first];
- items[first] = null;
- first = (first + 1) % items.length;
-
- size--;
-
- return ret;
- }
-
- /**
- * Enqueue into this queue.
- */
- public void push(Object obj) {
- if (size == items.length) {
- // expand queue
- final int oldLen = items.length;
- Object[] tmp = new Object[oldLen * 2];
-
- if (first < last) {
- System.arraycopy(items, first, tmp, 0, last - first);
- } else {
- System.arraycopy(items, first, tmp, 0, oldLen - first);
- System.arraycopy(items, 0, tmp, oldLen - first, last);
- }
-
- first = 0;
- last = oldLen;
- items = tmp;
- }
-
- items[last] = obj;
- last = (last + 1) % items.length;
- size++;
- }
-
- /**
- * Returns the first element of the queue.
- *
- * @return <code>null</code>, if the queue is empty, or the element is
- * really <code>null</code>.
- */
- public Object first() {
- if (size == 0) {
- return null;
- }
-
- return items[first];
- }
-
- /**
- * Returns <code>true</code> if the queue is empty.
- */
- public boolean isEmpty() {
- return (size == 0);
- }
-
- /**
- * Returns the number of elements in the queue.
- */
- public int size() {
- return size;
- }
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.common.util;
+
+import java.io.Serializable;
+
+import java.util.Arrays;
+
+
+/**
+ * <p>
+ * A simple queue class. This class is <b>NOT </b> thread-safe.
+ * </p>
+ *
+ * @author Trustin Lee (http://gleamynode.net/dev/)
+ * href="http://projects.gleamynode.net/">http://projects.gleamynode.net/
+ * </a>)
+ *
+ * @version $Rev$, $Date$
+ */
+public class Queue implements Serializable {
+ private Object[] items;
+ private int first = 0;
+ private int last = 0;
+ private int size = 0;
+
+ /**
+ * Construct a new, empty <code>Queue</code> with the specified initial
+ * capacity.
+ */
+ public Queue(int initialCapacity) {
+ items = new Object[initialCapacity];
+ }
+
+ /**
+ * Clears this queue.
+ */
+ public void clear() {
+ Arrays.fill(items, null);
+ first = 0;
+ last = 0;
+ size = 0;
+ }
+
+ /**
+ * Dequeues from this queue.
+ *
+ * @return <code>null</code>, if this queue is empty or the element is
+ * really <code>null</code>.
+ */
+ public Object pop() {
+ if (size == 0) {
+ return null;
+ }
+
+ Object ret = items[first];
+ items[first] = null;
+ first = (first + 1) % items.length;
+
+ size--;
+
+ return ret;
+ }
+
+ /**
+ * Enqueue into this queue.
+ */
+ public void push(Object obj) {
+ if (size == items.length) {
+ // expand queue
+ final int oldLen = items.length;
+ Object[] tmp = new Object[oldLen * 2];
+
+ if (first < last) {
+ System.arraycopy(items, first, tmp, 0, last - first);
+ } else {
+ System.arraycopy(items, first, tmp, 0, oldLen - first);
+ System.arraycopy(items, 0, tmp, oldLen - first, last);
+ }
+
+ first = 0;
+ last = oldLen;
+ items = tmp;
+ }
+
+ items[last] = obj;
+ last = (last + 1) % items.length;
+ size++;
+ }
+
+ /**
+ * Returns the first element of the queue.
+ *
+ * @return <code>null</code>, if the queue is empty, or the element is
+ * really <code>null</code>.
+ */
+ public Object first() {
+ if (size == 0) {
+ return null;
+ }
+
+ return items[first];
+ }
+
+ /**
+ * Returns <code>true</code> if the queue is empty.
+ */
+ public boolean isEmpty() {
+ return (size == 0);
+ }
+
+ /**
+ * Returns the number of elements in the queue.
+ */
+ public int size() {
+ return size;
+ }
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Acceptor.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Acceptor.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Acceptor.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Acceptor.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Acceptor.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Acceptor.java Sun Dec 5 00:20:39 2004
@@ -1,38 +1,38 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.downstream;
-
-import java.io.IOException;
-
-import java.net.SocketAddress;
-
-
-/**
- * TODO Insert type comment.
- *
- * @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$
- */
-public interface Acceptor {
- void bind(SocketAddress address, SessionHandler defaultHandler)
- throws IOException;
-
- void unbind(SocketAddress address);
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.downstream;
+
+import java.io.IOException;
+
+import java.net.SocketAddress;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface Acceptor {
+ void bind(SocketAddress address, SessionHandler defaultHandler)
+ throws IOException;
+
+ void unbind(SocketAddress address);
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Connector.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Connector.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Connector.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Connector.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Connector.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Connector.java Sun Dec 5 00:20:39 2004
@@ -1,31 +1,31 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.downstream;
-
-
-/**
- * TODO Insert type comment.
- *
- * @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$
- */
-public interface Connector {
- void connect(Session session, SessionHandler defaultHandler);
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.downstream;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface Connector {
+ void connect(Session session, SessionHandler defaultHandler);
+}
Added: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/ReadBuffer.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/ReadBuffer.java?view=auto&rev=109876
==============================================================================
--- (empty file)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/ReadBuffer.java Sun Dec 5 00:20:39 2004
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.downstream;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+
+/**
+ * TODO Document me.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$,
+ */
+public interface ReadBuffer {
+ boolean hasRemaining();
+
+ ReadBuffer skip(int length);
+
+ ReadBuffer skipAll();
+
+ int capacity();
+
+ int remaining();
+
+ ReadBuffer mark();
+
+ ReadBuffer reset();
+
+ ReadBuffer signal();
+
+ byte get();
+
+ ReadBuffer get(byte[] dst);
+
+ ReadBuffer get(byte[] dst, int offset, int length);
+
+ char getChar();
+
+ double getDouble();
+
+ float getFloat();
+
+ int getInt();
+
+ long getLong();
+
+ short getShort();
+
+ ByteOrder order();
+
+ ReadBuffer order(ByteOrder order);
+
+ ByteBuffer asByteBuffer();
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Session.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Session.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Session.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Session.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Session.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/Session.java Sun Dec 5 00:20:39 2004
@@ -1,69 +1,66 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.downstream;
-
-import java.net.SocketAddress;
-import java.nio.ByteBuffer;
-
-import org.apache.netty.common.IdleStatus;
-import org.apache.netty.common.SessionConfig;
-
-
-/**
- * TODO Insert type comment.
- *
- * @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$
- */
-public interface Session {
- SessionHandler getHandler();
-
- void setHandler(SessionHandler handler);
-
- void close();
-
- ByteBuffer getReadBuffer();
-
- ByteBuffer getWriteBuffer();
-
- void flush();
-
- boolean isConnected();
-
- boolean isClosed();
-
- SessionConfig getConfig();
-
- SocketAddress getRemoteAddress();
-
- SocketAddress getLocalAddress();
-
- long getReadBytes();
-
- long getWrittenBytes();
-
- long getLastIoTime();
-
- long getLastReadTime();
-
- long getLastWriteTime();
-
- boolean isIdle(IdleStatus status);
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.downstream;
+
+import java.net.SocketAddress;
+
+import org.apache.netty.common.IdleStatus;
+import org.apache.netty.common.SessionConfig;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface Session {
+ SessionHandler getHandler();
+
+ void setHandler(SessionHandler handler);
+
+ void close();
+
+ ReadBuffer getReadBuffer();
+
+ WriteBuffer getWriteBuffer();
+
+ boolean isConnected();
+
+ boolean isClosed();
+
+ SessionConfig getConfig();
+
+ SocketAddress getRemoteAddress();
+
+ SocketAddress getLocalAddress();
+
+ long getReadBytes();
+
+ long getWrittenBytes();
+
+ long getLastIoTime();
+
+ long getLastReadTime();
+
+ long getLastWriteTime();
+
+ boolean isIdle(IdleStatus status);
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/SessionHandler.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/SessionHandler.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/SessionHandler.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/SessionHandler.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/SessionHandler.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/SessionHandler.java Sun Dec 5 00:20:39 2004
@@ -1,45 +1,43 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.downstream;
-
-import java.nio.ByteBuffer;
-
-import org.apache.netty.common.IdleStatus;
-
-
-/**
- * TODO Insert type comment.
- *
- * @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$
- */
-public interface SessionHandler {
- void sessionOpened(Session session);
-
- void sessionClosed(Session session);
-
- void sessionIdle(Session session, IdleStatus status);
-
- void exceptionCaught(Session session, Throwable cause);
-
- void dataRead(Session session, ByteBuffer readBuf, int readBytes);
-
- void dataWritten(Session session, ByteBuffer writeBuf, int writtenBytes);
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.downstream;
+
+import org.apache.netty.common.IdleStatus;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface SessionHandler {
+ void sessionOpened(Session session);
+
+ void sessionClosed(Session session);
+
+ void sessionIdle(Session session, IdleStatus status);
+
+ void exceptionCaught(Session session, Throwable cause);
+
+ void dataRead(Session session, int readBytes);
+
+ void dataWritten(Session session, int writtenBytes);
+}
Added: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/WriteBuffer.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/WriteBuffer.java?view=auto&rev=109876
==============================================================================
--- (empty file)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/WriteBuffer.java Sun Dec 5 00:20:39 2004
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.downstream;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+
+/**
+ * TODO Document me.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$,
+ */
+public interface WriteBuffer {
+ boolean hasRemaining();
+
+ WriteBuffer clear();
+
+ int capacity();
+
+ int remaining();
+
+ WriteBuffer mark();
+
+ WriteBuffer reset();
+
+ WriteBuffer put(byte b);
+
+ WriteBuffer put(byte[] src);
+
+ WriteBuffer put(byte[] src, int offset, int length);
+
+ WriteBuffer put(ByteBuffer buf);
+
+ WriteBuffer put(ReadBuffer buf);
+
+ WriteBuffer putChar(char c);
+
+ WriteBuffer putDouble(double d);
+
+ WriteBuffer putFloat(float f);
+
+ WriteBuffer putInt(int i);
+
+ WriteBuffer putLong(long l);
+
+ WriteBuffer putShort(short s);
+
+ ByteOrder order();
+
+ WriteBuffer order(ByteOrder order);
+
+ ByteBuffer asByteBuffer();
+
+ WriteBuffer flush();
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpAcceptor.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpAcceptor.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpAcceptor.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpAcceptor.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpAcceptor.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpAcceptor.java Sun Dec 5 00:20:39 2004
@@ -1,143 +1,152 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.downstream.impl.tcp;
-
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.nio.channels.SelectionKey;
-import java.nio.channels.Selector;
-import java.nio.channels.ServerSocketChannel;
-import java.nio.channels.SocketChannel;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.lang.Validate;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.netty.downstream.Acceptor;
-import org.apache.netty.downstream.SessionHandler;
-
-
-/**
- * TODO Insert type comment.
- *
- * @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$
- */
-public class TcpAcceptor implements Acceptor {
- private static volatile int nextId = 0;
- private static final Log log = LogFactory.getLog(TcpAcceptor.class);
- private final int id = nextId++;
- private final Selector selector;
- private final Map channels = new HashMap();
- private Worker worker;
-
- /**
- * Creates a new instance.
- * @throws IOException
- */
- public TcpAcceptor() throws IOException {
- selector = Selector.open();
- }
-
- public void bind(SocketAddress address, SessionHandler defaultHandler)
- throws IOException {
- this.bind(address, 50, defaultHandler);
- }
-
- public synchronized void bind(SocketAddress address, int backlog,
- SessionHandler defaultHandler)
- throws IOException {
- Validate.notNull(address);
- Validate.notNull(defaultHandler);
- if (!(address instanceof InetSocketAddress))
- throw new IllegalArgumentException("Unexpected address type: "
- + address.getClass());
-
- ServerSocketChannel ssc = ServerSocketChannel.open();
- ssc.configureBlocking(false);
- ssc.socket().bind(address, backlog);
- ssc.register(selector, SelectionKey.OP_ACCEPT, defaultHandler);
-
- channels.put(address, ssc);
-
- if (worker == null) {
- worker = new Worker();
- worker.start();
- }
- }
-
- public synchronized void unbind(SocketAddress address) {
- Validate.notNull(address);
-
- ServerSocketChannel ssc = (ServerSocketChannel) channels.get(address);
-
- if (ssc == null)
- throw new IllegalArgumentException("Unknown address: " + address);
-
- SelectionKey key = ssc.keyFor(selector);
- key.cancel();
- channels.remove(address);
-
- try {
- ssc.close();
- } catch (IOException e) {
- log.error("Unexpected exception", e);
- }
- }
-
- private class Worker extends Thread {
- public Worker() {
- super("TcpAcceptor-" + id);
- }
-
- public void run() {
- for (;;) {
- try {
- int nKeys = selector.select();
-
- if (nKeys == 0)
- continue;
-
- Iterator it = selector.selectedKeys().iterator();
- while (it.hasNext()) {
- SelectionKey key = (SelectionKey) it.next();
- it.remove();
-
- if (!key.isAcceptable())
- continue;
-
- ServerSocketChannel ssc = (ServerSocketChannel) key.channel();
- SocketChannel ch = ssc.accept();
- if (ch == null)
- continue;
-
- TcpSession session = new TcpSession(ch, (SessionHandler) key.attachment());
- TcpIoProcessor.getInstance().addSession(session);
- }
- } catch (IOException e) {
- log.error("Unexpected exception.", e);
- }
- }
- }
- }
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.downstream.impl.tcp;
+
+import java.io.IOException;
+
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+
+import java.nio.channels.SelectionKey;
+import java.nio.channels.Selector;
+import java.nio.channels.ServerSocketChannel;
+import java.nio.channels.SocketChannel;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.commons.lang.Validate;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.netty.downstream.Acceptor;
+import org.apache.netty.downstream.SessionHandler;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$
+ */
+public class TcpAcceptor implements Acceptor {
+ private static volatile int nextId = 0;
+ private static final Log log = LogFactory.getLog(TcpAcceptor.class);
+ private final int id = nextId++;
+ private final Selector selector;
+ private final Map channels = new HashMap();
+ private Worker worker;
+
+ /**
+ * Creates a new instance.
+ * @throws IOException
+ */
+ public TcpAcceptor() throws IOException {
+ selector = Selector.open();
+ }
+
+ public void bind(SocketAddress address, SessionHandler defaultHandler)
+ throws IOException {
+ this.bind(address, 50, defaultHandler);
+ }
+
+ public synchronized void bind(SocketAddress address, int backlog,
+ SessionHandler defaultHandler)
+ throws IOException {
+ Validate.notNull(address);
+ Validate.notNull(defaultHandler);
+
+ if (!(address instanceof InetSocketAddress))
+ throw new IllegalArgumentException("Unexpected address type: " +
+ address.getClass());
+
+ ServerSocketChannel ssc = ServerSocketChannel.open();
+ ssc.configureBlocking(false);
+ ssc.socket().bind(address, backlog);
+ ssc.register(selector, SelectionKey.OP_ACCEPT, defaultHandler);
+
+ channels.put(address, ssc);
+
+ if (worker == null) {
+ worker = new Worker();
+ worker.start();
+ }
+ }
+
+ public synchronized void unbind(SocketAddress address) {
+ Validate.notNull(address);
+
+ ServerSocketChannel ssc = (ServerSocketChannel) channels.get(address);
+
+ if (ssc == null)
+ throw new IllegalArgumentException("Unknown address: " + address);
+
+ SelectionKey key = ssc.keyFor(selector);
+ key.cancel();
+ channels.remove(address);
+
+ try {
+ ssc.close();
+ } catch (IOException e) {
+ log.error("Unexpected exception", e);
+ }
+ }
+
+ private class Worker extends Thread {
+ public Worker() {
+ super("TcpAcceptor-" + id);
+ }
+
+ public void run() {
+ for (;;) {
+ try {
+ int nKeys = selector.select();
+
+ if (nKeys == 0)
+ continue;
+
+ Iterator it = selector.selectedKeys().iterator();
+
+ while (it.hasNext()) {
+ SelectionKey key = (SelectionKey) it.next();
+ it.remove();
+
+ if (!key.isAcceptable())
+ continue;
+
+ ServerSocketChannel ssc =
+ (ServerSocketChannel) key.channel();
+ SocketChannel ch = ssc.accept();
+
+ if (ch == null)
+ continue;
+
+ TcpSession session =
+ new TcpSession(ch,
+ (SessionHandler) key.attachment());
+ TcpIoProcessor.getInstance().addSession(session);
+ }
+ } catch (IOException e) {
+ log.error("Unexpected exception.", e);
+ }
+ }
+ }
+ }
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpIoProcessor.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpIoProcessor.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpIoProcessor.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpIoProcessor.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpIoProcessor.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpIoProcessor.java Sun Dec 5 00:20:39 2004
@@ -20,10 +20,12 @@
package org.apache.netty.downstream.impl.tcp;
import java.io.IOException;
+
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.SocketChannel;
+
import java.util.Iterator;
import java.util.Set;
@@ -38,7 +40,7 @@
/**
* TODO Document me.
* TODO Implement markRemoved
- *
+ *
* @author Trustin Lee (trustin@apache.org)
* @version $Rev$, $Date$,
*/
@@ -92,15 +94,21 @@
}
public void removeSession(TcpSession session) {
- scheduleRemove(session);
+ scheduleRemove(session);
selector.wakeup();
}
public void flushSession(TcpSession session) {
- scheduleFlush(session);
+ scheduleFlush(session);
selector.wakeup();
}
+ public void addReadableSession(TcpSession session) {
+ SelectionKey key = session.getSelectionKey();
+ if ((key.interestOps() & SelectionKey.OP_READ) == 0)
+ key.interestOps(key.interestOps() | SelectionKey.OP_READ);
+ }
+
private void addSessions() {
if (newSessions.size() == 0)
return;
@@ -175,7 +183,7 @@
if (key.isReadable()) {
read(session);
}
-
+
if (key.isWritable()) {
scheduleFlush(session);
}
@@ -185,28 +193,39 @@
}
private void read(TcpSession session) {
- ByteBuffer readBuf = session.getReadBuffer();
+ TcpReadBuffer lock = (TcpReadBuffer) session.getReadBuffer();
+ ByteBuffer readBuf = lock.buf();
SocketChannel ch = session.getChannel();
try {
int readBytes = 0;
int ret;
- synchronized (readBuf) {
+ synchronized (lock) {
readBuf.compact();
+
try {
- while ((ret = ch.read(readBuf)) > 0) {
- readBytes += ret;
- }
+ while ((ret = ch.read(readBuf)) > 0) {
+ readBytes += ret;
+ }
} finally {
- readBuf.flip();
+ readBuf.flip();
+ readBuf.mark();
}
-
+
session.increaseReadBytes(readBytes);
- if (ret >= 0)
- fireDataRead(session, readBuf, readBytes);
- else
+
+ if (ret >= 0) {
+ if (readBytes > 0) {
+ fireDataRead(session, readBytes);
+ } else {
+ SelectionKey key = session.getSelectionKey();
+ key.interestOps(key.interestOps() &
+ (~SelectionKey.OP_READ));
+ }
+ } else {
scheduleRemove(session);
+ }
}
} catch (Throwable e) {
fireExceptionCaught(session, e);
@@ -291,30 +310,37 @@
}
private void flush(TcpSession session) {
- ByteBuffer writeBuf = session.getWriteBuffer();
+ TcpWriteBuffer lock = (TcpWriteBuffer) session.getWriteBuffer();
+ ByteBuffer writeBuf = lock.buf();
SocketChannel ch = session.getChannel();
try {
- synchronized (writeBuf) {
+ synchronized (lock) {
writeBuf.flip();
+
int writtenBytes;
+
try {
- writtenBytes = ch.write(writeBuf);
+ writtenBytes = ch.write(writeBuf);
} finally {
- if (writeBuf.hasRemaining()) {
- // Kernel buffer is full
- session.getSelectionKey().interestOps(SelectionKey.OP_READ |
- SelectionKey.OP_WRITE);
- } else {
- session.getSelectionKey().interestOps(SelectionKey.OP_READ);
- }
+ SelectionKey key = session.getSelectionKey();
+
+ if (writeBuf.hasRemaining()) {
+ // Kernel buffer is full
+ key.interestOps(key.interestOps() |
+ SelectionKey.OP_WRITE);
+ } else {
+ key.interestOps(key.interestOps() &
+ (~SelectionKey.OP_WRITE));
+ }
- writeBuf.compact();
+ writeBuf.compact();
+ writeBuf.mark();
}
-
+
if (writtenBytes > 0) {
- session.increaseWrittenBytes(writtenBytes);
- fireDataWritten(session, writeBuf, writtenBytes);
+ session.increaseWrittenBytes(writtenBytes);
+ fireDataWritten(session, writtenBytes);
}
}
} catch (IOException e) {
@@ -346,17 +372,17 @@
}
}
- private void fireDataRead(TcpSession session, ByteBuffer readBuf, int readBytes) {
+ private void fireDataRead(TcpSession session, int readBytes) {
try {
- session.getHandler().dataRead(session, readBuf, readBytes);
+ session.getHandler().dataRead(session, readBytes);
} catch (Throwable e) {
fireExceptionCaught(session, e);
}
}
- private void fireDataWritten(TcpSession session, ByteBuffer writeBuf, int writtenBytes) {
+ private void fireDataWritten(TcpSession session, int writtenBytes) {
try {
- session.getHandler().dataWritten(session, writeBuf, writtenBytes);
+ session.getHandler().dataWritten(session, writtenBytes);
} catch (Throwable e) {
fireExceptionCaught(session, e);
}
Added: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpReadBuffer.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpReadBuffer.java?view=auto&rev=109876
==============================================================================
--- (empty file)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpReadBuffer.java Sun Dec 5 00:20:39 2004
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.downstream.impl.tcp;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+import org.apache.netty.downstream.ReadBuffer;
+
+
+/**
+ * TODO Document me.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$,
+ */
+class TcpReadBuffer implements ReadBuffer {
+ private final TcpSession parent;
+ private final ByteBuffer buf;
+
+ TcpReadBuffer(TcpSession parent, ByteBuffer buf) {
+ this.parent = parent;
+ this.buf = buf;
+ }
+
+ ByteBuffer buf() {
+ return buf;
+ }
+
+ public byte get() {
+ return buf.get();
+ }
+
+ public ReadBuffer get(byte[] dst) {
+ buf.get(dst);
+ return this;
+ }
+
+ public ReadBuffer get(byte[] dst, int offset, int length) {
+ buf.get(dst, offset, length);
+ return this;
+ }
+
+ public char getChar() {
+ char ret = buf.getChar();
+ return ret;
+ }
+
+ public double getDouble() {
+ return buf.getDouble();
+ }
+
+ public float getFloat() {
+ return buf.getFloat();
+ }
+
+ public int getInt() {
+ return buf.getInt();
+ }
+
+ public long getLong() {
+ return buf.getLong();
+ }
+
+ public short getShort() {
+ return buf.getShort();
+ }
+
+ public ByteOrder order() {
+ return buf.order();
+ }
+
+ public ReadBuffer order(ByteOrder order) {
+ buf.order(order);
+ return this;
+ }
+
+ public ByteBuffer asByteBuffer() {
+ return buf.duplicate().asReadOnlyBuffer();
+ }
+
+ public boolean hasRemaining() {
+ return buf.hasRemaining();
+ }
+
+ public ReadBuffer skip(int length) {
+ buf.position(buf.position() + length);
+ return this;
+ }
+
+ public ReadBuffer skipAll() {
+ return skip(remaining());
+ }
+
+ public int capacity() {
+ return buf.capacity();
+ }
+
+ public int remaining() {
+ return buf.remaining();
+ }
+
+ public ReadBuffer mark() {
+ buf.mark();
+ return this;
+ }
+
+ public ReadBuffer reset() {
+ buf.reset();
+ return this;
+ }
+
+ public ReadBuffer signal() {
+ TcpIoProcessor.getInstance().addReadableSession(parent);
+ return this;
+ }
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpSession.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpSession.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpSession.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpSession.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpSession.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpSession.java Sun Dec 5 00:20:39 2004
@@ -1,167 +1,187 @@
-/*
- * @(#) $Id$
- */
-package org.apache.netty.downstream.impl.tcp;
-
-import java.net.SocketAddress;
-import java.nio.ByteBuffer;
-import java.nio.channels.SelectionKey;
-import java.nio.channels.SocketChannel;
-
-import org.apache.commons.lang.Validate;
-import org.apache.netty.common.IdleStatus;
-import org.apache.netty.common.SessionConfig;
-import org.apache.netty.common.util.ByteBufferPool;
-import org.apache.netty.downstream.Session;
-import org.apache.netty.downstream.SessionHandler;
-
-/**
- * TODO Insert type comment.
- *
- * @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$
- */
-class TcpSession implements Session {
-
- private final SocketChannel ch;
- private final TcpSessionConfig config;
- private final ByteBuffer readBuf;
- private final ByteBuffer writeBuf;
-
- private SelectionKey key;
- private SessionHandler handler;
- private long readBytes;
- private long writtenBytes;
- private long lastReadTime;
- private long lastWriteTime;
- private boolean idleForBoth;
- private boolean idleForRead;
- private boolean idleForWrite;
-
- /**
- * Creates a new instance.
- */
- TcpSession(SocketChannel ch, SessionHandler defaultHandler) {
- this.ch = ch;
- this.config = new TcpSessionConfig(ch);
- this.readBuf = (ByteBuffer) ByteBufferPool.open().limit(0);
- this.writeBuf = ByteBufferPool.open();
- this.handler = defaultHandler;
- }
-
- SocketChannel getChannel() {
- return ch;
- }
-
- SelectionKey getSelectionKey() {
- return key;
- }
-
- void setSelectionKey(SelectionKey key) {
- this.key = key;
- }
-
- void dispose() {
- ByteBufferPool.close(readBuf);
- ByteBufferPool.close(writeBuf);
- }
-
- public SessionHandler getHandler() {
- return handler;
- }
-
- public void setHandler(SessionHandler handler) {
- Validate.notNull(handler);
- this.handler = handler;
- }
-
- public void close() {
- TcpIoProcessor.getInstance().removeSession(this);
- }
-
- public ByteBuffer getReadBuffer() {
- return readBuf;
- }
-
- public ByteBuffer getWriteBuffer() {
- return writeBuf;
- }
-
- public void flush() {
- TcpIoProcessor.getInstance().flushSession(this);
- }
-
- public boolean isConnected() {
- return ch.isConnected();
- }
-
- public boolean isClosed() {
- return !isConnected();
- }
-
- public SessionConfig getConfig() {
- return config;
- }
-
- public SocketAddress getRemoteAddress() {
- return ch.socket().getRemoteSocketAddress();
- }
-
- public SocketAddress getLocalAddress() {
- return ch.socket().getLocalSocketAddress();
- }
-
- public long getReadBytes() {
- return readBytes;
- }
-
- public long getWrittenBytes() {
- return writtenBytes;
- }
-
- void increaseReadBytes(int increment) {
- readBytes += increment;
- lastReadTime = System.currentTimeMillis();
- }
-
- void increaseWrittenBytes(int increment) {
- writtenBytes += increment;
- lastWriteTime = System.currentTimeMillis();
- }
-
- public long getLastIoTime() {
- return Math.max(lastReadTime, lastWriteTime);
- }
-
- public long getLastReadTime() {
- return lastReadTime;
- }
-
- public long getLastWriteTime() {
- return lastWriteTime;
- }
-
- public boolean isIdle(IdleStatus status) {
- if (status == IdleStatus.BOTH_IDLE)
- return idleForBoth;
-
- if (status == IdleStatus.READER_IDLE)
- return idleForRead;
-
- if (status == IdleStatus.WRITER_IDLE)
- return idleForWrite;
-
- throw new IllegalArgumentException("Unknown idle status: " + status);
- }
-
- void setIdle(IdleStatus status) {
- if (status == IdleStatus.BOTH_IDLE)
- idleForBoth = true;
- else if (status == IdleStatus.READER_IDLE)
- idleForRead = true;
- else if (status == IdleStatus.WRITER_IDLE)
- idleForWrite = true;
- else
- throw new IllegalArgumentException("Unknown idle status: " + status);
- }
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.downstream.impl.tcp;
+
+import java.net.SocketAddress;
+
+import java.nio.ByteBuffer;
+import java.nio.channels.SelectionKey;
+import java.nio.channels.SocketChannel;
+
+import org.apache.commons.lang.Validate;
+import org.apache.netty.common.IdleStatus;
+import org.apache.netty.common.SessionConfig;
+import org.apache.netty.common.util.ByteBufferPool;
+import org.apache.netty.downstream.ReadBuffer;
+import org.apache.netty.downstream.Session;
+import org.apache.netty.downstream.SessionHandler;
+import org.apache.netty.downstream.WriteBuffer;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$
+ */
+class TcpSession implements Session {
+ private final SocketChannel ch;
+ private final TcpSessionConfig config;
+ private final TcpReadBuffer readBuf;
+ private final TcpWriteBuffer writeBuf;
+ private SelectionKey key;
+ private SessionHandler handler;
+ private long readBytes;
+ private long writtenBytes;
+ private long lastReadTime;
+ private long lastWriteTime;
+ private boolean idleForBoth;
+ private boolean idleForRead;
+ private boolean idleForWrite;
+
+ /**
+ * Creates a new instance.
+ */
+ TcpSession(SocketChannel ch, SessionHandler defaultHandler) {
+ this.ch = ch;
+ this.config = new TcpSessionConfig(ch);
+ this.readBuf =
+ new TcpReadBuffer(this, (ByteBuffer) ByteBufferPool.open().limit(0));
+ this.writeBuf = new TcpWriteBuffer(this, ByteBufferPool.open());
+ this.handler = defaultHandler;
+ }
+
+ SocketChannel getChannel() {
+ return ch;
+ }
+
+ SelectionKey getSelectionKey() {
+ return key;
+ }
+
+ void setSelectionKey(SelectionKey key) {
+ this.key = key;
+ }
+
+ void dispose() {
+ ByteBufferPool.close(readBuf.buf());
+ ByteBufferPool.close(writeBuf.buf());
+ }
+
+ public SessionHandler getHandler() {
+ return handler;
+ }
+
+ public void setHandler(SessionHandler handler) {
+ Validate.notNull(handler);
+ this.handler = handler;
+ }
+
+ public void close() {
+ TcpIoProcessor.getInstance().removeSession(this);
+ }
+
+ public ReadBuffer getReadBuffer() {
+ return readBuf;
+ }
+
+ public WriteBuffer getWriteBuffer() {
+ return writeBuf;
+ }
+
+ void flush() {
+ TcpIoProcessor.getInstance().flushSession(this);
+ }
+
+ public boolean isConnected() {
+ return ch.isConnected();
+ }
+
+ public boolean isClosed() {
+ return !isConnected();
+ }
+
+ public SessionConfig getConfig() {
+ return config;
+ }
+
+ public SocketAddress getRemoteAddress() {
+ return ch.socket().getRemoteSocketAddress();
+ }
+
+ public SocketAddress getLocalAddress() {
+ return ch.socket().getLocalSocketAddress();
+ }
+
+ public long getReadBytes() {
+ return readBytes;
+ }
+
+ public long getWrittenBytes() {
+ return writtenBytes;
+ }
+
+ void increaseReadBytes(int increment) {
+ readBytes += increment;
+ lastReadTime = System.currentTimeMillis();
+ }
+
+ void increaseWrittenBytes(int increment) {
+ writtenBytes += increment;
+ lastWriteTime = System.currentTimeMillis();
+ }
+
+ public long getLastIoTime() {
+ return Math.max(lastReadTime, lastWriteTime);
+ }
+
+ public long getLastReadTime() {
+ return lastReadTime;
+ }
+
+ public long getLastWriteTime() {
+ return lastWriteTime;
+ }
+
+ public boolean isIdle(IdleStatus status) {
+ if (status == IdleStatus.BOTH_IDLE)
+ return idleForBoth;
+
+ if (status == IdleStatus.READER_IDLE)
+ return idleForRead;
+
+ if (status == IdleStatus.WRITER_IDLE)
+ return idleForWrite;
+
+ throw new IllegalArgumentException("Unknown idle status: " + status);
+ }
+
+ void setIdle(IdleStatus status) {
+ if (status == IdleStatus.BOTH_IDLE)
+ idleForBoth = true;
+ else if (status == IdleStatus.READER_IDLE)
+ idleForRead = true;
+ else if (status == IdleStatus.WRITER_IDLE)
+ idleForWrite = true;
+ else
+ throw new IllegalArgumentException("Unknown idle status: " +
+ status);
+ }
+}
Added: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpWriteBuffer.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpWriteBuffer.java?view=auto&rev=109876
==============================================================================
--- (empty file)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/downstream/impl/tcp/TcpWriteBuffer.java Sun Dec 5 00:20:39 2004
@@ -0,0 +1,152 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.downstream.impl.tcp;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+import org.apache.netty.downstream.ReadBuffer;
+import org.apache.netty.downstream.WriteBuffer;
+
+
+/**
+ * TODO Document me.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$,
+ */
+class TcpWriteBuffer implements WriteBuffer {
+ private final TcpSession session;
+ private final ByteBuffer buf;
+
+ TcpWriteBuffer(TcpSession session, ByteBuffer buf) {
+ this.session = session;
+ this.buf = buf;
+ }
+
+ ByteBuffer buf() {
+ return buf;
+ }
+
+ public WriteBuffer put(byte b) {
+ buf.put(b);
+ return this;
+ }
+
+ public WriteBuffer put(byte[] src) {
+ buf.put(src);
+ return this;
+ }
+
+ public WriteBuffer put(byte[] src, int offset, int length) {
+ buf.put(src, offset, length);
+ return this;
+ }
+
+ public WriteBuffer put(ReadBuffer buf) {
+ if (!(buf instanceof TcpReadBuffer)) {
+ throw new IllegalArgumentException("Incompatible buffer type: " +
+ buf.getClass());
+ }
+
+ this.buf.put(((TcpReadBuffer) buf).buf());
+ return this;
+ }
+
+ public WriteBuffer put(ByteBuffer buf) {
+ this.buf.put(buf);
+ return this;
+ }
+
+ public WriteBuffer putChar(char c) {
+ buf.putChar(c);
+ return this;
+ }
+
+ public WriteBuffer putDouble(double d) {
+ buf.putDouble(d);
+ return this;
+ }
+
+ public WriteBuffer putFloat(float f) {
+ buf.putFloat(f);
+ return this;
+ }
+
+ public WriteBuffer putInt(int i) {
+ buf.putInt(i);
+ return this;
+ }
+
+ public WriteBuffer putLong(long l) {
+ buf.putLong(l);
+ return this;
+ }
+
+ public WriteBuffer putShort(short s) {
+ buf.putShort(s);
+ return this;
+ }
+
+ public ByteOrder order() {
+ return buf.order();
+ }
+
+ public WriteBuffer order(ByteOrder order) {
+ buf.order(order);
+ return this;
+ }
+
+ public ByteBuffer asByteBuffer() {
+ return buf.duplicate();
+ }
+
+ public WriteBuffer flush() {
+ session.flush();
+ return this;
+ }
+
+ public boolean hasRemaining() {
+ return buf.hasRemaining();
+ }
+
+ public WriteBuffer clear() {
+ buf.clear();
+ return this;
+ }
+
+ public int capacity() {
+ return buf.capacity();
+ }
+
+ public int remaining() {
+ return buf.remaining();
+ }
+
+ public WriteBuffer mark() {
+ buf.mark();
+ return this;
+ }
+
+ public WriteBuffer reset() {
+ buf.reset();
+ return this;
+ }
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/Service.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/Service.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/Service.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/Service.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/Service.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/Service.java Sun Dec 5 00:20:39 2004
@@ -1,37 +1,37 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.registry;
-
-
-/**
- * TODO Insert type comment.
- *
- * @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$
- */
-public interface Service {
- String getName();
-
- TransportType getTransportType();
-
- int getPort();
-
- Object getSessionHandler();
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.registry;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface Service {
+ String getName();
+
+ TransportType getTransportType();
+
+ int getPort();
+
+ Object getSessionHandler();
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/ServiceRegistry.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/ServiceRegistry.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/ServiceRegistry.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/ServiceRegistry.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/ServiceRegistry.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/ServiceRegistry.java Sun Dec 5 00:20:39 2004
@@ -1,72 +1,72 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.registry;
-
-import java.io.IOException;
-
-import java.util.Iterator;
-
-
-/**
- * Interface for the internet service registry. The registry is used by
- * Netty to associate services with ports and transport protocols.
- *
- * @author akarasulu@apache.org
- * @author trustin@apache.org
- * @version $Rev$, $Date$
- */
-public interface ServiceRegistry {
- void bind(Service service,
- org.apache.netty.downstream.SessionHandler sessionHandler)
- throws IOException;
-
- void bind(Service service,
- org.apache.netty.upstream.SessionHandler sessionHandler)
- throws IOException;
-
- void unbind(Service service);
-
- Service getByName(String name, TransportType transportType);
-
- Service getByPort(int port, TransportType transportType);
-
- Iterator getAll();
-
- Iterator getByTransportType(TransportType transportType);
-
- /**
- * Gets an iteration over all the entries for a service by the name of the
- * service.
- *
- * @param name the authoritative name of the service
- * @return an Iterator over InetServiceEntry objects
- */
- Iterator getByName(String name);
-
- /**
- * Gets an iteration over all the entries for a service by port number.
- * This method returns an Iterator over the set of InetServiceEntry objects
- * since more than one transport protocol can be used on the same port.
- *
- * @param port the port one which the service resides
- * @return an Iterator over InetServiceEntry objects
- */
- Iterator getByPort(int port);
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.registry;
+
+import java.io.IOException;
+
+import java.util.Iterator;
+
+
+/**
+ * Interface for the internet service registry. The registry is used by
+ * Netty to associate services with ports and transport protocols.
+ *
+ * @author akarasulu@apache.org
+ * @author trustin@apache.org
+ * @version $Rev$, $Date$
+ */
+public interface ServiceRegistry {
+ void bind(Service service,
+ org.apache.netty.downstream.SessionHandler sessionHandler)
+ throws IOException;
+
+ void bind(Service service,
+ org.apache.netty.upstream.SessionHandler sessionHandler)
+ throws IOException;
+
+ void unbind(Service service);
+
+ Service getByName(String name, TransportType transportType);
+
+ Service getByPort(int port, TransportType transportType);
+
+ Iterator getAll();
+
+ Iterator getByTransportType(TransportType transportType);
+
+ /**
+ * Gets an iteration over all the entries for a service by the name of the
+ * service.
+ *
+ * @param name the authoritative name of the service
+ * @return an Iterator over InetServiceEntry objects
+ */
+ Iterator getByName(String name);
+
+ /**
+ * Gets an iteration over all the entries for a service by port number.
+ * This method returns an Iterator over the set of InetServiceEntry objects
+ * since more than one transport protocol can be used on the same port.
+ *
+ * @param port the port one which the service resides
+ * @return an Iterator over InetServiceEntry objects
+ */
+ Iterator getByPort(int port);
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/TransportType.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/TransportType.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/TransportType.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/TransportType.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/TransportType.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/registry/TransportType.java Sun Dec 5 00:20:39 2004
@@ -1,45 +1,45 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.registry;
-
-
-/**
- * TODO Insert type comment.
- *
- * @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$
- */
-public class TransportType {
- public static final TransportType TCP = new TransportType("TCP");
- public static final TransportType UDP = new TransportType("UDP");
- public static final TransportType VM = new TransportType("VM");
- private final String strVal;
-
- /**
- * Creates a new instance.
- */
- private TransportType(String strVal) {
- this.strVal = strVal;
- }
-
- public String toString() {
- return strVal;
- }
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.registry;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$
+ */
+public class TransportType {
+ public static final TransportType TCP = new TransportType("TCP");
+ public static final TransportType UDP = new TransportType("UDP");
+ public static final TransportType VM = new TransportType("VM");
+ private final String strVal;
+
+ /**
+ * Creates a new instance.
+ */
+ private TransportType(String strVal) {
+ this.strVal = strVal;
+ }
+
+ public String toString() {
+ return strVal;
+ }
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Acceptor.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Acceptor.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Acceptor.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Acceptor.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Acceptor.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Acceptor.java Sun Dec 5 00:20:39 2004
@@ -1,38 +1,38 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.upstream;
-
-import java.io.IOException;
-
-import java.net.SocketAddress;
-
-
-/**
- * TODO Insert type comment.
- *
- * @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$
- */
-public interface Acceptor {
- void bind(SocketAddress address, SessionHandler defaultHandler)
- throws IOException;
-
- void unbind(SocketAddress address);
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.upstream;
+
+import java.io.IOException;
+
+import java.net.SocketAddress;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface Acceptor {
+ void bind(SocketAddress address, SessionHandler defaultHandler)
+ throws IOException;
+
+ void unbind(SocketAddress address);
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Codec.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Codec.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Codec.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Codec.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Codec.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Codec.java Sun Dec 5 00:20:39 2004
@@ -1,35 +1,35 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.upstream;
-
-import java.nio.ByteBuffer;
-
-
-/**
- * TODO Insert type comment.
- *
- * @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$
- */
-public interface Codec {
- boolean encode(Session session, Object message, ByteBuffer out);
-
- Object decode(Session session, ByteBuffer in);
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.upstream;
+
+import java.nio.ByteBuffer;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface Codec {
+ boolean encode(Session session, Object message, ByteBuffer out);
+
+ Object decode(Session session, ByteBuffer in);
+}
Modified: incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Connector.java
Url: http://svn.apache.org/viewcvs/incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Connector.java?view=diff&rev=109876&p1=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Connector.java&r1=109875&p2=incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Connector.java&r2=109876
==============================================================================
--- incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Connector.java (original)
+++ incubator/directory/seda/branches/trustin/src/java/org/apache/netty/upstream/Connector.java Sun Dec 5 00:20:39 2004
@@ -1,33 +1,33 @@
-/*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/*
- * @(#) $Id$
- */
-package org.apache.netty.upstream;
-
-import java.net.SocketAddress;
-
-
-/**
- * TODO Insert type comment.
- *
- * @author Trustin Lee (trustin@apache.org)
- * @version $Rev$, $Date$
- */
-public interface Connector {
- void connect(SocketAddress address, SessionHandler defaultHandler);
-}
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+/*
+ * @(#) $Id$
+ */
+package org.apache.netty.upstream;
+
+import java.net.SocketAddress;
+
+
+/**
+ * TODO Insert type comment.
+ *
+ * @author Trustin Lee (trustin@apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface Connector {
+ void connect(SocketAddress address, SessionHandler defaultHandler);
+}