View Javadoc

1   /*
2    * Copyright (c) 1998-2006 The Jgroup Team.
3    *
4    * This program is free software; you can redistribute it and/or modify
5    * it under the terms of the GNU Lesser General Public License version 2 as
6    * published by the Free Software Foundation.
7    *
8    * This program is distributed in the hope that it will be useful,
9    * but WITHOUT ANY WARRANTY; without even the implied warranty of
10   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11   * GNU Lesser General Public License for more details.
12   *
13   * You should have received a copy of the GNU Lesser General Public License
14   * along with this program; if not, write to the Free Software
15   * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16   *
17   */
18  
19  package jgroup.relacs.gmi.protocols;
20  
21  import java.io.IOException;
22  import java.io.InputStream;
23  
24  import jgroup.relacs.gmi.InvocationResult;
25  
26  /**
27   * ProtocolDispatcher must be implemented by GMI protocols.
28   *
29   * @author Hein Meling <hein.meling@uis.no>
30   */
31  public interface ProtocolDispatcher
32  {
33  
34    /**
35     * Invoked to dispatch a method invocation on the local endpoint or on
36     * multiple external endpoints.  The method may block until a result can
37     * be returned to the caller.  It may also return <code>null</code> if
38     * problems occur, e.g. connectivity problems. 
39     * 
40     * @param in the method to invoke, encoded in the provided <code>InputStream</code>. 
41     * @return the result of the method invocation.
42     * @throws IOException Raised if the method invocation read from the
43     *   <code>InputStream</code> could not be executed for some reason.
44     */
45    public InvocationResult dispatch(InputStream in)
46      throws IOException;
47  
48    /**
49     * Pass the server reference to the protocol implementation.
50     */
51    public void setServer(Object server);
52  
53  } // END ProtocolDispatcher