SciCoDE Remote: Difference between revisions

From Sccswiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 2: Line 2:
In many cases the user want to execute his code on remote machines (e.g. run a simulation on a supercomputer). sciCoDE provides a way to create remote components.
In many cases the user want to execute his code on remote machines (e.g. run a simulation on a supercomputer). sciCoDE provides a way to create remote components.
=The C++ remote code=
=The C++ remote code=
If you want to use your C++ application inside sciCoDE as remote component you should generate some stubs needed to establish the connection between the core of sciCoDE and your component. One of the communication methods provided by sciCoDE is a file-based protocol, which can be used on arbitrary systems connected through SSH and SFTP. The SSH implementation is based on the [http://sourceforge.net/projects/sshtools/|j2SSH library]. As previously described the components in sciCoDE are specified through a simplified version of SIDL. Only four data types are allowed : strings, doubles, longs and booleans. This types can be used as in, inout and array parameters. This simplification makes the implementation of communication protocols much more easier. The most important part of the SIDL specification are the interfaces ,which are mapped to ports. In the file-based protocol each port is represented through component-specific folder  
If you want to use your C++ application inside sciCoDE as remote component you should generate some stubs needed to establish the connection between the core of sciCoDE and your component. One of the communication methods provided by sciCoDE is a file-based protocol, which can be used on arbitrary systems connected through SSH and SFTP. The SSH implementation is based on the [http://sourceforge.net/projects/sshtools/|j2SSH library].  
on the file system. The following example should illustrate this:
 
As previously described the components in sciCoDE are specified through a simplified version of SIDL. Only four data types are allowed : strings, doubles, longs and booleans. This types can be used as in, inout and array parameters. This simplification makes the implementation of communication protocols much more easier. The most important part of the SIDL specification are the interfaces ,which are mapped to ports. In the file-based protocol each port is represented through folder on the file system. Consider the following SIDL-code:
<pre>
package example{
  interface YourInterface{
    foo(in int in0,out int[] out0);
  }
  class A implements-all example.YourInterface{
  }
  class B uses example.YourInterface as p0{
  }
}
</pre>


The following steps are needed to prepare you C++ code:
The following steps are needed to prepare you C++ code:

Revision as of 08:50, 1 August 2011

Remote components in sciCoDE

In many cases the user want to execute his code on remote machines (e.g. run a simulation on a supercomputer). sciCoDE provides a way to create remote components.

The C++ remote code

If you want to use your C++ application inside sciCoDE as remote component you should generate some stubs needed to establish the connection between the core of sciCoDE and your component. One of the communication methods provided by sciCoDE is a file-based protocol, which can be used on arbitrary systems connected through SSH and SFTP. The SSH implementation is based on the library.

As previously described the components in sciCoDE are specified through a simplified version of SIDL. Only four data types are allowed : strings, doubles, longs and booleans. This types can be used as in, inout and array parameters. This simplification makes the implementation of communication protocols much more easier. The most important part of the SIDL specification are the interfaces ,which are mapped to ports. In the file-based protocol each port is represented through folder on the file system. Consider the following SIDL-code:

package example{
  interface YourInterface{
    foo(in int in0,out int[] out0);
  }
  class A implements-all example.YourInterface{
  }
  class B uses example.YourInterface as p0{
  }
}

The following steps are needed to prepare you C++ code: