/* [<][>][^][v][top][bottom][index][help] */
DEFINITIONS
This source file includes following definitions.
- MailServItem
- init
- addQueue
- addSpool
- setSpool
- getQueue
- getSpool
- deQueue
- deSpool
- onMousePressed
- postMailAction
- postPacketAction
- postEventAction
package jp.ac.nime.computer.mailsim;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import jp.ac.nime.computer.*;
import jp.ac.nime.computer.websim.HTTPPacketData;
/**
* MAILサーバーオブジェクトクラス
*
* @version 1.00 2003/03/31
* @author Toshikazu Matsumoto Avion Corp.
*/
public class MailServItem extends MachineItem
{
private MailSim m_Applet =null;
private Thread m_Thread =null;
private Vector m_vcQueue =null;
private Vector m_vcSpool =null;
private MailServDialog m_Dialog=null;
private Image m_imMail;
private boolean m_bPOP =true;
private boolean m_bSMTP =true;
/**
* クラスコンストラクタ
* @param parent メインアプレットクラス
* @param sLabel 画像の下に表示される名前
* @param sIP IPアドレス
* @param imSrc サーバ画像
* @param imMail メール画像
* @param nX 表示するX座標
* @param nY 表示するY座標
*/
public MailServItem(MailSim parent,String sLabel,String sIP,Image imSrc,Image imMail,int nX,int nY)
{
super((Component)parent,sLabel,sIP,imSrc,nX,nY);
this.m_vcQueue=new Vector();
this.m_vcSpool=new Vector();
this.m_Applet=parent;
this.m_imMail=imMail;
}
/**
* クラスの初期化処理
*/
public void init()
{
this.m_Dialog=new MailServDialog(super.getRootFrame(),this.m_Applet,this,super.getImage(),this.m_imMail,super.getIP(),this.m_vcQueue,this.m_vcSpool);
}
/**
* キューにオブジェクトを追加する
* @param objMail 追加するメールオブジェクト
*/
public void addQueue(MailDataObject objMail)
{
this.m_vcQueue.addElement(objMail);
}
/**
* スプールにオブジェクトを追加する
* @param objMail 追加するメールオブジェクト
*/
public void addSpool(MailDataObject objMail)
{
this.m_vcSpool.addElement(objMail);
}
/**
* 指定の位置にメールオブジェクトをスプールにセットする
* @param objMail セットするメールオブジェクト
* @param n セットする位置
*/
public void setSpool(MailDataObject objMail,int n)
{
this.m_vcSpool.setElementAt(objMail,n);
}
/**
* キュー全体を取得する
* @return 取り出したキューのVector
*/
public Vector getQueue()
{
return this.m_vcQueue;
}
/**
* スプール全体を取得する
* @return 取り出したスプールのVector
*/
public Vector getSpool()
{
return this.m_vcSpool;
}
/**
* 指定の位置のオブジェクトをキューから削除する
* @param n 削除するキューの位置
*/
public void deQueue(int n)
{
this.m_vcQueue.removeElementAt(n);
}
/**
* スプールから一番先頭のオブジェクトを削除する
* @return 削除したメールオブジェクト
*/
public MailDataObject deSpool()
{
return (MailDataObject)this.m_vcSpool.elementAt(0);
}
/**
* マウス押下時の処理
* @return 押下時の結果
*/
public boolean onMousePressed()
{
this.m_Dialog.show();
return true;
}
/**
* メールオブジェクトが到着した際のアクション
* @param objMail 到着したメールオブジェクト
*/
public void postMailAction(MailDataObject objMail)
{
if(objMail!=null)
{
switch(objMail.getStatus())
{
case MailDataObject.MAIL_STATUS_FOR_QUEUE:
this.addQueue(objMail);
break;
case MailDataObject.MAIL_STATUS_REACH_SPOOL:
this.addSpool(objMail);
break;
case MailDataObject.MAIL_STATUS_TELL_SPOOL:
Vector vcTemp=new Vector();
for(int i=0;i<this.m_vcSpool.size();i++)
{
MailDataObject objSpMail=(MailDataObject)this.m_vcSpool.elementAt(i);
if(objSpMail.getStatus()==MailDataObject.MAIL_STATUS_SPOOL)
{
objSpMail.setProcess(1);
objSpMail.setStatus(MailDataObject.MAIL_STATUS_TELL_SPOOL);
objSpMail.setMoveObject((MachineItem)this,objMail.getMoveFrom());
//objSpMail.startThread();
}
this.m_vcSpool.setElementAt(objSpMail,i);
}
//this.m_vcSpool=vcTemp;
break;
}
}
}
/**
* HTTPパケットが到達した際のアクション
* @param objPack 到達したHTTPパケット
*/
public void postPacketAction(HTTPPacketData objPack)
{
}
/**
* 外部からイベントを通知された場合のアクション
* @param nEvent イベントの種類
*/
public void postEventAction(int nEvent)
{
}
}