Android Open Source - SenqmAndroid Connection






From Project

Back to project page SenqmAndroid.

License

The source code is released under:

GNU General Public License

If you think the Android project SenqmAndroid listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 *      Copyright  2014 Alban GRUIN/* ww  w  . java  2  s.  c  o m*/
 *
 *      This file is part of SenqmAndroid.
 *
 *      SenqmAndroid is free software: you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation, either version 3 of the License, or
 *      (at your option) any later version.
 *
 *      SenqmAndroid is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *
 *      You should have received a copy of the GNU General Public License
 *      along with SenqmAndroid.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.agrn.senqm.network.connection;

import com.agrn.senqm.network.Message;
import io.netty.bootstrap.Bootstrap;
import io.netty.buffer.ByteBuf;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;

public class Connection
{
    private final String host;
    private final static int PORT = 23487;

    private ChannelFuture channelFuture;
    private Bootstrap bootstrap;
    private EventLoopGroup workerGroup;

    public Connection(String host)
    {
        this.host = host;

        workerGroup = new NioEventLoopGroup();
        bootstrap = getBootstrap(workerGroup);

        connect();
    }

    public void close()
    {
        try
        {
            channelFuture.channel().closeFuture().sync();
        }
        catch (InterruptedException e) {}
        finally
        {
            workerGroup.shutdownGracefully();
        }
    }

    public void connect()
    {
        try
        {
            channelFuture = bootstrap.connect(host, PORT).sync();
            channelFuture.channel().closeFuture().addListener(new CloseListener());
        }
        catch(InterruptedException e) {}
    }

    public void messageReceived(Message message)
    {
    }

    public String getHostAddress()
    {
        return host;
    }

    public void sendMessage(Message message)
    {
        sendMessage(message.toString());
    }

    public void sendMessage(String message)
    {
        Channel channel = channelFuture.channel();

        ByteBuf buffer = channel.alloc().buffer(message.length());
        for(char character: message.toCharArray())
            buffer.writeChar(character);

        channel.writeAndFlush(buffer);
    }

    private Bootstrap getBootstrap(EventLoopGroup workerGroup)
    {
        Bootstrap bootstrap = new Bootstrap();
        bootstrap.group(workerGroup);
        bootstrap.channel(NioSocketChannel.class);
        bootstrap.option(ChannelOption.SO_KEEPALIVE, true);
        bootstrap.handler(new ConnectionInitializer());

        return bootstrap;
    }

    private class ConnectionInitializer extends ChannelInitializer<SocketChannel>
    {
        @Override
        protected void initChannel(SocketChannel socketChannel) throws Exception
        {
            socketChannel.pipeline().addLast(new ConnectionHandler(Connection.this));
        }
    }

    private class CloseListener implements ChannelFutureListener
    {
        @Override
        public void operationComplete(ChannelFuture channelFuture) throws Exception
        {
            Connection.this.close();
        }
    }
}




Java Source Code List

com.agrn.senqm.MainActivity.java
com.agrn.senqm.database.DatabaseHelper.java
com.agrn.senqm.database.entities.Computer.java
com.agrn.senqm.network.Message.java
com.agrn.senqm.network.WifiLockContainer.java
com.agrn.senqm.network.connection.ConnectionHandler.java
com.agrn.senqm.network.connection.Connection.java
com.agrn.senqm.network.service.ConnectionManagerServiceBoundListener.java
com.agrn.senqm.network.service.ConnectionManagerServiceConnection.java
com.agrn.senqm.network.service.ConnectionManagerService.java
com.agrn.senqm.telephony.PhoneBroadcaster.java
com.agrn.senqm.telephony.sms.SMSBroadcaster.java
com.agrn.senqm.telephony.sms.SendSMS.java