package rmiFilter;

import java.rmi.*;
import java.rmi.server.*;
import java.net.*;

public class RMIFilterImpl extends UnicastRemoteObject implements RMIFilter {
  public RMIFilterImpl() throws RemoteException {
    super();
  }
     
  public int[] filter(int[] npixels, int nimgw, int nimgh)
       throws RemoteException {
	 System.out.println("Filterng begins on the server-side....");
	 int pixel[] = new int[nimgw * nimgh];
	 int wpixel[] = new int[nimgw];
	 for (int j=0; j < nimgh ; j++) {
	   
	   for (int i=0; i < nimgw ; i++) {
	     int a = 10 - i%10 + i;
	     a += nimgw*j;
	     if (a < nimgw * nimgh) wpixel[i] = npixels[a];
	     else wpixel[i] = npixels[nimgw*nimgh -1];
	   }
	   System.arraycopy(wpixel,0, pixel, j*nimgw, nimgw);
	 }
	 return pixel;    
  }

    public static void main(String args[]) {
	if (System.getSecurityManager() == null) {
	    System.setSecurityManager(new RMISecurityManager());
	}
	
	try {
	    RMIFilterImpl h = new RMIFilterImpl();
	    Naming.rebind("rmi://128.230.21.135:8000/rmiFilter", h);
	    System.out.println("RMIFilter Server ready.");
	}
	catch (RemoteException re) {
	    System.out.println("Exception in RMIFilterImpl.main: " + re);
	}
	catch (MalformedURLException e) {
	    System.out.println("MalformedURLException -> main: " + e);
	}
	
    }
    
}