Skip to main content
summaryrefslogtreecommitdiffstats
blob: 653a606bdcfba35100e32f922935dcf08a327855 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
package org.eclipse.emf.cdo.doc.connectors;

import org.eclipse.emf.cdo.doc.connectors.CreatingTransportConnections.AddConfigurationParameters.SetBufferCapacity;
import org.eclipse.emf.cdo.doc.connectors.Snippets.JMSConnector;
import org.eclipse.emf.cdo.doc.sessions.ConnectingToRepositories.SetConnectionTimeout;

import org.eclipse.net4j.Net4jUtil;
import org.eclipse.net4j.acceptor.IAcceptor;
import org.eclipse.net4j.channel.ChannelException;
import org.eclipse.net4j.connector.IConnector;
import org.eclipse.net4j.http.server.IHTTPAcceptor;
import org.eclipse.net4j.jvm.IJVMAcceptor;
import org.eclipse.net4j.protocol.IProtocol;
import org.eclipse.net4j.tcp.ITCPAcceptor;
import org.eclipse.net4j.tcp.TCPUtil;
import org.eclipse.net4j.util.container.IManagedContainer;
import org.eclipse.net4j.util.container.ManagedContainer;
import org.eclipse.net4j.util.factory.Factory;
import org.eclipse.net4j.util.factory.ProductCreationException;
import org.eclipse.net4j.util.security.INegotiationContext;

import org.eclipse.spi.net4j.Connector;
import org.eclipse.spi.net4j.InternalChannel;

import java.nio.channels.SocketChannel;

/**
 * Creating Transport Connections
 * <p>
 * This tutorial outlines the steps needed to create a Net4j {@link IConnector} and connect it to an {@link IAcceptor}.
 * <p>
 * Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam eu nibh in erat dapibus accumsan. Aenean cursus
 * lacinia dictum. Mauris non sem sapien. Vivamus sem ante, posuere a rhoncus ac, varius in nisi. Sed pulvinar urna ac
 * est iaculis mattis. Ut eget massa felis, nec volutpat purus. In id aliquet mi. Duis euismod sapien sollicitudin nisi
 * vestibulum nec vulputate urna euismod. Proin pulvinar ornare nunc, ac auctor elit placerat eget. Integer eu erat ac
 * risus ultricies mattis vel nec nunc. Proin venenatis tellus sit amet dui congue nec vehicula urna sollicitudin. Donec
 * porta, risus eu auctor semper, ante lectus lobortis sem, a luctus diam dui eu sapien. Sed at metus et dolor tincidunt
 * convallis id a est. Donec quam nisl, scelerisque a feugiat id, mattis vel urna. Suspendisse facilisis, libero ac
 * ultricies dictum, mi sem feugiat purus, ac aliquam metus purus sed leo. Sed a viverra metus.
 * 
 * @author Eike Stepper
 */
public class CreatingTransportConnections
{
  /**
   * Select a Transport Type
   * <p>
   * Currently supported transport types are:
   * <ul>
   * <li><b>JVM</b> to connect to an {@link IJVMAcceptor} in the same Java Virtual Machine.
   * <li><b>TCP</b> to connect to an {@link ITCPAcceptor} by means of a {@link SocketChannel}.
   * <li><b>SSL</b> an extension to the TCP transport that adds TLS/SSL security.
   * <li><b>HTTP</b> to connect to an {@link IHTTPAcceptor} that is made available by a servlet.
   * </ul>
   * Continue with {@link SetConnectionTimeout}.
   * 
   * @see SetBufferCapacity
   */
  public class SelectTransportType
  {
  }

  /**
   * Setup a Wiring Container
   * <p>
   * Example: {@link Snippets#snippet1()}
   * <p>
   * Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam eu nibh in erat dapibus accumsan. Aenean cursus
   * lacinia dictum. Mauris non sem sapien. Vivamus sem ante, posuere a rhoncus ac, varius in nisi. Sed pulvinar urna ac
   * est iaculis mattis. Ut eget massa felis, nec volutpat purus. In id aliquet mi. Duis euismod sapien sollicitudin
   * nisi vestibulum nec vulputate urna euismod. Proin pulvinar ornare nunc, ac auctor elit placerat eget. Integer eu
   * erat ac risus ultricies mattis vel nec nunc. Proin venenatis tellus sit amet dui congue nec vehicula urna
   * sollicitudin. Donec porta, risus eu auctor semper, ante lectus lobortis sem, a luctus diam dui eu sapien. Sed at
   * metus et dolor tincidunt convallis id a est. Donec quam nisl, scelerisque a feugiat id, mattis vel urna.
   * Suspendisse facilisis, libero ac ultricies dictum, mi sem feugiat purus, ac aliquam metus purus sed leo. Sed a
   * viverra metus.
   */
  public class SetupWiringContainer
  {
  }

  /**
   * Add Configuration Parameters
   */
  public class AddConfigurationParameters
  {
    /**
     * Set the Buffer Capacity
     * <p>
     * Example: {@link JMSConnector}
     */
    public class SetBufferCapacity
    {
    }

    /**
     * Set the Connection Timeout
     * <p>
     * Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam eu nibh in erat dapibus accumsan. Aenean cursus
     * lacinia dictum. Mauris non sem sapien. Vivamus sem ante, posuere a rhoncus ac, varius in nisi. Sed pulvinar urna
     * ac est iaculis mattis. Ut eget massa felis, nec volutpat purus. In id aliquet mi. Duis euismod sapien
     * sollicitudin nisi vestibulum nec vulputate urna euismod. Proin pulvinar ornare nunc, ac auctor elit placerat
     * eget. Integer eu erat ac risus ultricies mattis vel nec nunc. Proin venenatis tellus sit amet dui congue nec
     * vehicula urna sollicitudin. Donec porta, risus eu auctor semper, ante lectus lobortis sem, a luctus diam dui eu
     * sapien. Sed at metus et dolor tincidunt convallis id a est. Donec quam nisl, scelerisque a feugiat id, mattis vel
     * urna. Suspendisse facilisis, libero ac ultricies dictum, mi sem feugiat purus, ac aliquam metus purus sed leo.
     * Sed a viverra metus.
     */
    public class SetConnectionTimeout
    {
    }
  }
}

// ----------------------------------------------------------------------------- //

class Snippets
{
  public void snippet1()
  {
    // Create a dedicated container instance
    IManagedContainer container = new ManagedContainer();

    // Register your custom factories
    container.registerFactory(new Factory("org.eclipse.net4j.connectors", "jms")
    {
      public IConnector create(String description) throws ProductCreationException
      {
        return new JMSConnector(description);
      }
    });

    // Use utility classes to register additional factories
    Net4jUtil.prepareContainer(container);
    TCPUtil.prepareContainer(container);

    // Do not forget to activate the container before you use it
    container.activate();
  }

  /**
   * @example
   */
  public class JMSConnector extends Connector
  {
    public JMSConnector(String description)
    {
    }

    public void multiplexChannel(InternalChannel channel)
    {
    }

    // snip
    @Override
    protected INegotiationContext createNegotiationContext()
    {
      return null;
    }

    @Override
    protected void registerChannelWithPeer(short channelID, long timeout, IProtocol<?> protocol)
        throws ChannelException
    {
    }
    // snap
  }
}

Back to the top