/*
 * $Id: VirtualQueueServer.java,v 1.4 2004/09/27 08:39:10 rampil Exp $
 * Copyright (c) 2004 LOGICAL-PARADOX.ORG
 */
package org.logical_paradox.rss.rcm.accessor.simple;

import java.rmi.RemoteException;

import org.logical_paradox.rss.dsr.RSSDistributedServiceRegistry;
import org.logical_paradox.rss.lookup.LookupFactory;
import org.logical_paradox.rss.oqs4r.OQSConnection;
import org.logical_paradox.rss.oqs4r.ObjectQueueServer;

/**
 * 仮想キューサーバー
 * どこかのサーバーにつながっているかもしれないし，つながっていないかもしれないし．
 * デフォルトではとりあえずOQS4Rに接続させておく
 * 
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.4 $
 */
public class VirtualQueueServer {
	/**
	 * OQS4Rへの接続インターフェース
	 */
	protected OQSConnection connection;
	/**
	 * キューサーバーを見つけ出してくる先の分散サービスレジストリ
	 */
	private String dsruri;

	/**
	 * コンストラクタ
	 */
	public VirtualQueueServer(String dsr) throws RemoteException {
		dsruri = dsr;
		init();
	}
	protected String getDsrUri() {
		return dsruri;
	}
	/**
	 * 初期化する
	 * @throws RemoteException
	 */
	protected void init() throws RemoteException {
		// OQS4Rへ接続する
		try {
			ObjectQueueServer oqs4r = (ObjectQueueServer)LookupFactory.getLookup(dsruri).lookup(RSSDistributedServiceRegistry.RSS_SERVID_OQS4R);

			// OQS4Rから接続インターフェースの取得
			connection = oqs4r.getConnection();
		} catch(RemoteException e) {
			throw e;
		} catch (Exception e) {
			e.printStackTrace();
			throw new RemoteException(e.getMessage());
		}
	}
	/**
	 * キューにURL(MD5ダイジェスト)を投入する
	 * @param md5 URLをMD5ダイジェストに変換したもの
	 * @throws RemoteException キューイングに失敗した
	 */
	public void enqueue(String md5) throws RemoteException {
		connection.add(md5);
	}
}
