Example usage for org.springframework.integration.ip IpHeaders IP_ADDRESS

List of usage examples for org.springframework.integration.ip IpHeaders IP_ADDRESS

Introduction

In this page you can find the example usage for org.springframework.integration.ip IpHeaders IP_ADDRESS.

Prototype

String IP_ADDRESS

To view the source code for org.springframework.integration.ip IpHeaders IP_ADDRESS.

Click Source Link

Document

The ip address from which a TCP message or UDP packet was received.

Usage

From source file:org.springframework.integration.ip.tcp.connection.TcpMessageMapper.java

protected final void addStandardHeaders(TcpConnection connection, MessageBuilder<?> messageBuilder) {
    String connectionId = connection.getConnectionId();
    messageBuilder.setHeader(IpHeaders.HOSTNAME, connection.getHostName())
            .setHeader(IpHeaders.IP_ADDRESS, connection.getHostAddress())
            .setHeader(IpHeaders.REMOTE_PORT, connection.getPort())
            .setHeader(IpHeaders.CONNECTION_ID, connectionId);
    if (this.applySequence) {
        messageBuilder.setCorrelationId(connectionId)
                .setSequenceNumber((int) connection.incrementAndGetConnectionSequence());
    }//from  w  ww .  j a  v  a2  s . c  o  m
}

From source file:org.springframework.integration.ip.udp.UdpChannelAdapterTests.java

@SuppressWarnings("unchecked")
@Test//from  w ww .j  ava  2 s  . c  om
public void testUnicastReceiverWithReply() throws Exception {
    QueueChannel channel = new QueueChannel(2);
    int port = SocketUtils.findAvailableUdpSocket();
    UnicastReceivingChannelAdapter adapter = new UnicastReceivingChannelAdapter(port);
    adapter.setOutputChannel(channel);
    adapter.start();
    SocketTestUtils.waitListening(adapter);

    Message<byte[]> message = MessageBuilder.withPayload("ABCD".getBytes()).build();
    DatagramPacketMessageMapper mapper = new DatagramPacketMessageMapper();
    DatagramPacket packet = mapper.fromMessage(message);
    packet.setSocketAddress(new InetSocketAddress("localhost", port));
    final DatagramSocket socket = new DatagramSocket(SocketUtils.findAvailableUdpSocket());
    socket.send(packet);
    final AtomicReference<DatagramPacket> theAnswer = new AtomicReference<DatagramPacket>();
    final CountDownLatch receiverReadyLatch = new CountDownLatch(1);
    final CountDownLatch replyReceivedLatch = new CountDownLatch(1);
    //main thread sends the reply using the headers, this thread will receive it
    Executors.newSingleThreadExecutor().execute(new Runnable() {
        public void run() {
            DatagramPacket answer = new DatagramPacket(new byte[2000], 2000);
            try {
                receiverReadyLatch.countDown();
                socket.receive(answer);
                theAnswer.set(answer);
                replyReceivedLatch.countDown();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });
    Message<byte[]> receivedMessage = (Message<byte[]>) channel.receive(2000);
    assertEquals(new String(message.getPayload()), new String(receivedMessage.getPayload()));
    String replyString = "reply:" + System.currentTimeMillis();
    byte[] replyBytes = replyString.getBytes();
    DatagramPacket reply = new DatagramPacket(replyBytes, replyBytes.length);
    reply.setSocketAddress(
            new InetSocketAddress((String) receivedMessage.getHeaders().get(IpHeaders.IP_ADDRESS),
                    (Integer) receivedMessage.getHeaders().get(IpHeaders.PORT)));
    assertTrue(receiverReadyLatch.await(10, TimeUnit.SECONDS));
    new DatagramSocket().send(reply);
    assertTrue(replyReceivedLatch.await(10, TimeUnit.SECONDS));
    DatagramPacket answerPacket = theAnswer.get();
    assertNotNull(answerPacket);
    assertEquals(replyString, new String(answerPacket.getData(), 0, answerPacket.getLength()));
}