/**
  * Adds an interceptor to the stack for message processing<br>
  * Interceptors are ordered in the way they are added.<br>
  * <code>channel.addInterceptor(A);</code><br>
  * <code>channel.addInterceptor(C);</code><br>
  * <code>channel.addInterceptor(B);</code><br>
  * Will result in a interceptor stack like this:<br>
  * <code>A -> C -> B</code><br>
  * The complete stack will look like this:<br>
  * <code>Channel -> A -> C -> B -> ChannelCoordinator</code><br>
  *
  * @param interceptor ChannelInterceptorBase
  */
 @Override
 public void addInterceptor(ChannelInterceptor interceptor)
     throws RemoteException, RemoteException {
   if (interceptors == null) {
     interceptors = interceptor;
     interceptors.setNext(coordinator);
     interceptors.setPrevious(null);
     coordinator.setPrevious(interceptors);
   } else {
     ChannelInterceptor last = interceptors;
     while (last.getNext() != coordinator) {
       last = last.getNext();
     }
     last.setNext(interceptor);
     interceptor.setNext(coordinator);
     interceptor.setPrevious(last);
     coordinator.setPrevious(interceptor);
   }
 }
 /**
  * Sets the membership component
  *
  * @param membershipService MembershipService
  */
 @Override
 public void setMembershipService(MembershipService membershipService)
     throws RemoteException, RemoteException {
   coordinator.setMembershipService(membershipService);
 }
 /**
  * Sets the channel sender component
  *
  * @param clusterSender ChannelSender
  */
 @Override
 public void setChannelSender(ChannelSender clusterSender)
     throws RemoteException, RemoteException {
   coordinator.setClusterSender(clusterSender);
 }
 /**
  * Returns the membership service component
  *
  * @return MembershipService
  */
 @Override
 public MembershipService getMembershipService() throws RemoteException, RemoteException {
   return coordinator.getMembershipService();
 }
 /**
  * Returns the channel sender component
  *
  * @return ChannelSender
  */
 @Override
 public ChannelSender getChannelSender() throws RemoteException, RemoteException {
   return coordinator.getClusterSender();
 }