Package hamsam.protocol.aim.command

Source Code of hamsam.protocol.aim.command.ClientSetStatusCmd

/*
*
* Hamsam - Instant Messaging API
*
* Copyright (C) 2003 Mike Miller <mikemil@users.sourceforge.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
*/
package hamsam.protocol.aim.command;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.UnknownHostException;

import hamsam.protocol.aim.flap.FlapHeader;
import hamsam.protocol.aim.flap.FlapConstants;

import hamsam.protocol.aim.snac.SNACPacket;
import hamsam.protocol.aim.snac.SNACConstants;

import hamsam.protocol.aim.util.ByteUtils;
import hamsam.protocol.aim.util.TLV;
import hamsam.protocol.aim.util.TLVConstants;

/**
* @author mikem
*/
public class ClientSetStatusCmd extends Command {


    private int modeFlags;
    private int statusFlags;

    // fields after the DC type in the Type 0x0C TLV
    private static final byte[] unknownFields = new byte[] {
      0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00};


    //~ Constructors -------------------------------------------------------------------------------
    /**
     *
     */
    public ClientSetStatusCmd(int seqNum, int statusflag) {
        flapHdr = new FlapHeader(FlapConstants.FLAP_CHANNEL_SNAC, seqNum);
        snacPacket = new SNACPacket(SNACConstants.SNAC_FAMILY_GENERIC_SERVICE_CONTROLS, SNACConstants.CLIENT_STATUS);

        statusFlags |= statusflag;
        byte[] flags = ByteUtils.getUInt( modeFlags | statusFlags );
        addTLV( new TLV(TLVConstants.TLV_TYPE_USER_STATUS_FLAGS, flags ) );

        // allocate bytes for the DC Info block
        byte[] dcinfo = new byte[ 0x25 ];

        InetAddress addr;
        try {
            addr = InetAddress.getLocalHost();
            byte[] ipAddr = addr.getAddress();
            System.arraycopy(ipAddr, 0, dcinfo, 0, ipAddr.length);
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
        }
       
       
        dcinfo[8] = 0x04; // dc_type_normal
        System.arraycopy(unknownFields, 0, dcinfo, 9, unknownFields.length);

        addTLV( new TLV(TLVConstants.TLV_TYPE_DC_INFO, dcinfo) );


    }

    //~ Methods ------------------------------------------------------------------------------------

    /* (non-Javadoc)
     * @see hamsam.protocol.aim.command.Command#writeCommandData(java.io.OutputStream)
     */
    public void writeCommandData(OutputStream os) throws IOException {
    }
}


/*
* $Log: ClientSetStatusCmd.java,v $
* Revision 1.1  2003/09/20 03:23:45  mikemil
* More implementation
*
*/ 
TOP

Related Classes of hamsam.protocol.aim.command.ClientSetStatusCmd

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.