⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 registrationimpl.java

📁 Its video trNSMITT FILE USING JMF
💻 JAVA
字号:
/* 	RegistrationImpl.java
 *
 *  Contains the implementation of the remote Registration object which is
 *  used by CamProcessors and CamControllers to register with the MediaServer.
 *  Also contains event notification for MediaServer so it can update its
 *  GUI when CamProcessors and CamControllers go up and down.
 *
 *  Copyright (C) 2002 by Frank McCown
 *  University of Arkansas at Little Rock
 *  July 2002
 *
 */		


import java.util.*;
import rowc.*;
import rowc.event.*;
import rowc.event.WebCamListener;
import rowc.event.CamControllerListener;

public class RegistrationImpl extends rowc.RegistrationPOA 
{
	protected Hashtable camControllers;  // CamControllers listening for new CamProcessors
	protected Vector webCamList;
	protected String serverHostName = null;
	
	private Set webCamListeners;  // Listeners for WebCamEvents
	private Set controllerListeners;  
	
	/**************************************************************************/
	
	public RegistrationImpl()
	{
		webCamListeners = new HashSet(1);  // Only Media Server should get events
		controllerListeners = new HashSet();
		camControllers = new Hashtable();
		webCamList = new Vector();
	}
	
	public void addWebCamListener(WebCamListener listener)
	{
		webCamListeners.add(listener);    // Register the listener
	}
	
	// Iterate through list of NewWebCamListeners and generate a new event for each
	private void sendAddWebCamEvents(String location)
	{
		Iterator i = webCamListeners.iterator();
		while (i.hasNext())
		{
			WebCamListener listener = (WebCamListener) i.next();
			listener.addWebCam(new rowc.event.WebCamEvent(location));
		}
	}
	
	private void sendRemoveWebCamEvents(String location)
	{
		Iterator i = webCamListeners.iterator();
		while (i.hasNext())
		{
			WebCamListener listener = (WebCamListener) i.next();
			listener.removeWebCam(new rowc.event.WebCamEvent(location));
		}
	}
	
	public void addCamControllerListener(CamControllerListener listener)
	{
		controllerListeners.add(listener);    // Register the listener
	}
	
	private void sendAddControllerEvents(String name)
	{
		Iterator i = controllerListeners.iterator();
		while (i.hasNext())
		{
			CamControllerListener listener = (CamControllerListener) i.next();
			listener.addCamController(new rowc.event.CamControllerEvent(name));
		}
	}
	
	private void sendRemoveControllerEvents(String name)
	{
		Iterator i = controllerListeners.iterator();
		while (i.hasNext())
		{
			CamControllerListener listener = (CamControllerListener) i.next();
			listener.removeCamController(new rowc.event.CamControllerEvent(name));
		}
	}
	
	
	
	/***************************************************************************
	 *
	 *  Remote method implementations
	 *
	 ***************************************************************************/
	 
	// Notify Server of cam controller so Server can notify it when web cams come up and down
	public synchronized void addCamController(String hostName, CamControllerCallback callback)
	{
		System.out.println("addCamController called.");
		
		camControllers.put(hostName, callback);
		
		sendAddControllerEvents(hostName);
	}
	
	// Tell Server that we're going down so we don't continue to get notifications
	public synchronized void removeCamController(String hostName)
	{
		System.out.println("removeCamController called.");
		
		camControllers.remove(hostName);
		
		sendRemoveControllerEvents(hostName);
	}
	
	// Notify Server of new web cam so Cam Controllers know we're ready
	public synchronized void addWebCam(String location)
	{
		// Add new web cam to list 
		webCamList.add(location);
		
		Enumeration enum = camControllers.elements();
    System.out.println("Notifying all cam controllers of new web cam: " + location);
    while(enum.hasMoreElements())
    {
    	CamControllerCallback callback = (CamControllerCallback)enum.nextElement();
    	callback.addWebCam(location);
    }
    
    // Notify MediaServer so it can update it's GUI
    sendAddWebCamEvents(location);
	}
	
	// Notify Server we're going down so Cam Controllers don't try to access us
  public synchronized void removeWebCam(String location)
  {
  	// Remove web cam from list
  	webCamList.remove(location);
  	
  	Enumeration enum = camControllers.elements();
    System.out.println("Notifying all cam controllers to remove web cam: " + location);
    while(enum.hasMoreElements())
    {
    	CamControllerCallback callback = (CamControllerCallback)enum.nextElement();
    	callback.removeWebCam(location);
    }
    
    // Notify MediaServer so it can update it's GUI
    sendRemoveWebCamEvents(location);
  }
  
  
  // Media Server must set it's host name so CamProcessor can connect using sockets
 /* public synchronized void setServerHostName(String host)
  {
  	serverHostName = host;
  }
   */
  // Return Media Server's host name
  public synchronized String getServerHostName()
  {
  	String serverHostName = "";
  	
  	try
		{
			java.net.InetAddress ia = java.net.InetAddress.getLocalHost();
			String host = ia.getHostName();
		}
		catch (java.net.UnknownHostException ex)
		{
			ex.printStackTrace();
		}	
		
  	return serverHostName;
  }
  
  
  // Return location names of active web cams, empty array of size 1 if none available
  public synchronized String[] getLocations()
	{
		String[] loc = {""};
		
		if (webCamList.size() != 0)
		{
			loc = new String[webCamList.size()];
			webCamList.copyInto(loc);
		}
		
		return loc;	
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -