All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bidib.jbidibc.netbidib.server.NetBidibServerByteArray Maven / Gradle / Ivy

There is a newer version: 2.0.28
Show newest version
package org.bidib.jbidibc.netbidib.server;

import java.io.IOException;
import java.util.function.Consumer;

import org.bidib.jbidibc.messages.HostAdapter;
import org.bidib.jbidibc.messages.ProtocolVersion;
import org.bidib.jbidibc.messages.message.netbidib.NetBidibLinkData;
import org.bidib.jbidibc.messages.message.netbidib.NetBidibLinkData.LogonStatus;
import org.bidib.jbidibc.messages.message.netbidib.NetBidibLinkData.PairingStatus;
import org.bidib.jbidibc.messages.message.netbidib.NetBidibLinkData.PartnerType;
import org.bidib.jbidibc.netbidib.server.adapter.ScmSerialHostAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import io.netty.channel.group.ChannelGroup;

public class NetBidibServerByteArray extends NetBidibServer {

    private static final Logger LOGGER = LoggerFactory.getLogger(NetBidibServerByteArray.class);

    public NetBidibServerByteArray(final HostAdapter hostAdapter, final String backendPortName,
        final NetBidibLinkData serverLinkData, RoleTypeEnum roleType, final NetBidibLinkData pairedPartner) {
        this(DEFAULT_HOSTNAME, DEFAULT_PORTNUM, hostAdapter, backendPortName, serverLinkData, roleType, pairedPartner);
    }

    /**
     * Create a {@code NetBidibServer} instance with the provided hostname and portNumber.
     * 
     * @param hostName
     *            the hostname
     * @param portNumber
     *            the port number
     */
    public NetBidibServerByteArray(String hostName, int portNumber, final HostAdapter hostAdapter,
        final String backendPortName, final NetBidibLinkData serverLinkData, RoleTypeEnum roleType,
        final NetBidibLinkData pairedPartner) {
        super(hostName, portNumber, hostAdapter, backendPortName, serverLinkData, roleType, pairedPartner);
    }

    /**
     * Create the {@code NetBidibServerHandler} instance.
     * 

* Note: Override this method to do more initialization of the {@code NetBidibServerHandler}. *

* * @param channelGroup * the netty channel group * @return the serverHandler instance */ @Override protected NetBidibServerHandler createNetBidibServerHandler( final ChannelGroup channelGroup, final NetBidibLinkData serverLinkData, final HostAdapter hostAdapter, final String backendPortName, final Consumer> lazyInitializationCallback, RoleTypeEnum roleType, final NetBidibLinkData pairedPartner) { NetBidibServerHandler serverHandler = new NetBidibServerHandlerByteArray(channelGroup, hostAdapter, backendPortName, serverLinkData, lazyInitializationCallback, roleType, pairedPartner); return serverHandler; } /** * Main to test the local server part without bidib messages for nodes. * * @param args * the args * @throws InterruptedException * @throws IOException */ public static void main(String[] args) throws InterruptedException, IOException { String backendPortName = null; if (args.length > 0) { backendPortName = args[0]; } else { LOGGER.warn("Provide the backend port name as argument, e.g. COM5"); return; } LOGGER.info("Start the server. The current backendPortName: {}", backendPortName); final NetBidibLinkData serverLinkData = new NetBidibLinkData(PartnerType.LOCAL); // // create my unique id // byte[] uniqueId = new byte[] { 0x00, 0x00, 0x0D, (byte) 0xFA, 0x01, 0x03, (byte) 0xF1 }; // serverLinkData.setUniqueId(ByteUtils.convertUniqueIdToLong(uniqueId)); // serverLinkData.setProdString("netBiDiB-Gateway"); // serverLinkData.setUserString("Central-Gateway"); serverLinkData.setProtocolVersion(ProtocolVersion.VERSION_0_8); final ScmSerialHostAdapter hostAdapter = new ScmSerialHostAdapter<>(message -> message.getContent()); RoleTypeEnum roleType = RoleTypeEnum.INTERFACE; final NetBidibLinkData pairedPartner = new NetBidibLinkData(PartnerType.REMOTE); pairedPartner.setPairingStatus(PairingStatus.UNKNOWN); pairedPartner.setLogonStatus(LogonStatus.LOGGED_OFF); NetBidibServer netBidibServer = new NetBidibServerByteArray(NetBidibServer.DEFAULT_HOSTNAME, NetBidibServer.DEFAULT_PORTNUM, hostAdapter, backendPortName, serverLinkData, roleType, pairedPartner); netBidibServer.setShutdownHook(new Thread(() -> { LOGGER.info("Run shutdown hook."); try { netBidibServer.stop(); } catch (Exception ex) { LOGGER.warn("Stop the netBidibServer failed.", ex); } })); Runtime.getRuntime().addShutdownHook(netBidibServer.getShutdownHook()); netBidibServer.startServer(); LOGGER.info("Wait for server startup."); try { Thread.sleep(500); LOGGER.info("Wait for shutdown."); final Object shutdownLock = netBidibServer.getShutdownLock(); synchronized (shutdownLock) { shutdownLock.wait(); } } finally { LOGGER.info("Stop the netBidibServer."); try { netBidibServer.stop(); } catch (Exception ex) { LOGGER.warn("Stop the netBidibServer failed.", ex); } } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy