01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one
03: * or more contributor license agreements. See the NOTICE file
04: * distributed with this work for additional information
05: * regarding copyright ownership. The ASF licenses this file
06: * to you under the Apache License, Version 2.0 (the
07: * "License"); you may not use this file except in compliance
08: * with the License. You may obtain a copy of the License at
09: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing,
13: * software distributed under the License is distributed on an
14: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15: * KIND, either express or implied. See the License for the
16: * specific language governing permissions and limitations
17: * under the License.
18: *
19: */
20: package org.apache.mina.common;
21:
22: import java.net.SocketAddress;
23: import java.util.Set;
24:
25: /**
26: * Provides meta-information that describes an {@link IoService}.
27: *
28: * @author The Apache MINA Project (dev@mina.apache.org)
29: * @version $Rev: 596886 $, $Date: 2007-11-20 17:09:39 -0700 (Tue, 20 Nov 2007) $
30: */
31: public interface TransportMetadata {
32:
33: /**
34: * Returns the name of the service provider (e.g. "nio", "apr" and "rxtx").
35: */
36: String getProviderName();
37:
38: /**
39: * Returns the name of the service.
40: */
41: String getName();
42:
43: /**
44: * Returns <code>true</code> if the session of this transport type is
45: * <a href="http://en.wikipedia.org/wiki/Connectionless">connectionless</a>.
46: */
47: boolean isConnectionless();
48:
49: /**
50: * Returns {@code true} if the messages exchanged by the service can be
51: * <a href="http://en.wikipedia.org/wiki/IPv4#Fragmentation_and_reassembly">fragmented
52: * or reassembled</a> by its underlying transport.
53: */
54: boolean hasFragmentation();
55:
56: /**
57: * Returns the address type of the service.
58: */
59: Class<? extends SocketAddress> getAddressType();
60:
61: /**
62: * Returns the set of the allowed message type when you write to an
63: * {@link IoSession} that is managed by the service.
64: */
65: Set<Class<? extends Object>> getEnvelopeTypes();
66:
67: /**
68: * Returns the type of the {@link IoSessionConfig} of the service
69: */
70: Class<? extends IoSessionConfig> getSessionConfigType();
71: }
|