Package org.arch.event.misc

Source Code of org.arch.event.misc.EncryptEvent

/**
* This file is part of the hyk-proxy-gae project.
* Copyright (c) 2011 Yin QiWen <yinqiwen@gmail.com>
*
* Description: EncryptEvent.java
*
* @author yinqiwen [ 2011-12-3 | ����02:13:29 ]
*
*/
package org.arch.event.misc;

import org.arch.buffer.Buffer;
import org.arch.buffer.BufferHelper;
import org.arch.encrypt.RC4;
import org.arch.encrypt.SimpleEncrypt;
import org.arch.event.Event;
import org.arch.event.EventConstants;
import org.arch.event.EventDispatcher;
import org.arch.event.EventType;
import org.arch.event.EventVersion;

/**
*
*/
@EventType(EventConstants.ENCRYPT_EVENT_TYPE)
@EventVersion(1)
public class EncryptEvent extends Event
{
  public EncryptEvent()
  {
  }
 
  public EncryptEvent(EncryptType type, Event ev)
  {
    this.type = type;
    this.ev = ev;
  }
 
  public EncryptType  type;
  public Event     ev;
 
  @Override
  protected boolean onDecode(Buffer buffer)
  {
    int t;
    try
    {
      t = BufferHelper.readVarInt(buffer);
      type = EncryptType.fromInt(t);
      Buffer content = buffer;
      switch (type)
      {
        case SE1:
        {
          SimpleEncrypt se1 = new SimpleEncrypt();
          content = se1.decrypt(buffer);
          break;
        }
        case RC4:
        {
          content = RC4.decrypt(buffer);
          break;
        }
        default:
        {
          break;
        }
      }
      ev = EventDispatcher.getSingletonInstance().parse(content);
      return true;
    }
    catch (Exception e)
    {
      throw new Error(e);
      // logger.error("Failed to decode encrypt event while encrypt type:"
      // +type , e);
      //return false;
    }
  }
 
  @Override
  protected boolean onEncode(Buffer buffer)
  {
    BufferHelper.writeVarInt(buffer, type.getValue());
    Buffer content = new Buffer(256);
    ev.encode(content);
    switch (type)
    {
      case SE1:
      {
        SimpleEncrypt se1 = new SimpleEncrypt();
        se1.encrypt(content);
        break;
      }
      case RC4:
      {
        content = RC4.encrypt(buffer);
        break;
      }
      default:
      {
        break;
      }
    }
    buffer.write(content, content.readableBytes());
    return true;
  }
}
TOP

Related Classes of org.arch.event.misc.EncryptEvent

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.