Provided by: erlang-manpages_20.2.2+dfsg-1ubuntu2_all bug

NAME

       Module_Interface - Orber generated stubs/skeletons.

DESCRIPTION

       This module contains the stub/skeleton functions generated by IC.

       Starting a Orber server can be done in three ways:

         * Normal - when the server dies Orber forgets all knowledge of the server.

         * Supervisor   child   -  adding  the  configuration  parameter  {sup_child,  true}  the
           oe_create_link/2 function returns {ok, Pid,  ObjRef}  which  can  be  handled  by  the
           application supervisor/stdlib-1.7 or later.

         * Persistent  object  reference - adding the configuration parameters {persistent, true}
           and {regname, {global, term()}} Orber will remember the  object  reference  until  the
           server terminates with reason normal or shutdown. Hence, if the server is started as a
           transient supervisor child we do not receive a 'OBJECT_NOT_EXIST'  exception  when  it
           has crashed and is being restarted.

       The  Orber  stub  can  be  used  to  start a pseudo object, which will create a non-server
       implementation. A pseudo object introduce some limitations:

         * The functions oe_create_link/2 is equal to oe_create/2, i.e., no link can or  will  be
           created.

         * The BIF:s self() and process_flag(trap_exit,true) behaves incorrectly.

         * The  IC  option  {{impl, "M::I"}, "other_impl"} has no effect. The call-back functions
           must be implemented in a file called M_I_impl.erl

         * The IC option from has no effect.

         * The call-back functions must be implemented as if the IC  option  {this,  "M::I"}  was
           used.

         * Server  State  changes  have  no  effect. The user can provide information via the Env
           start parameter and the State returned  from  init/2  will  be  the  State  passed  in
           following invocations.

         * If a call-back function replies with the Timeout parameter set it have no effect.

         * Operations defined as oneway are blocking until the operation replies.

         * The option {pseudo, true} overrides all other start options.

         * Only  the  functions,  besides  own  definitions, init/2 (called via oe_create*/2) and
           terminate/2 (called via corba:dispose/1) must be implemented.

       By adopting the rules for pseudo objects described above we can use oe_create/2 to  create
       server  or  pseudo  objects,  by excluding or including the option {pseudo, true}, without
       changing the call-back module.

       If you start a object without {regname, RegName} it  can  only  be  accessed  through  the
       returned  object  key. Started with a {regname, RegName} the name is registered locally or
       globally.

   Warning:
       To avoid flooding Orber with old object references start  erlang  using  the  flag  -orber
       objectkeys_gc_time  Time, which will remove all object references related to servers being
       dead for Time seconds. To avoid extra overhead, i.e., performing  garbage  collect  if  no
       persistent objects are started, the objectkeys_gc_time default value is infinity. For more
       information, see the orber and corba documentation.

EXPORTS

       Module_Interface:typeID() -> TypeId

              Types:

                 TypeId = string(), e.g., "IDL:Module/Interface:1.0"

              Returns the Type ID related to this stub/skeleton

       Module_Interface:oe_create() -> ObjRef

              Types:

                 ObjRef = #object reference

              Start a Orber server.

       Module_Interface:oe_create_link() -> ObjRef

              Types:

                 ObjRef = #object reference

              Start a linked Orber server.

       Module_Interface:oe_create(Env) -> ObjRef

              Types:

                 Env = term()
                 ObjRef = #object reference

              Start a Orber server passing Env to init/1.

       Module_Interface:oe_create_link(Env) -> ObjRef

              Types:

                 Env = term()
                 ObjRef = #object reference

              Start a linked Orber server passing Env to init/1.

       Module_Interface:oe_create(Env, Options) -> ObjRef

              Types:

                 Env = term()
                 ObjRef = #object reference
                 Options = [{sup_child, false}  |  {persistent,  Bool}  |  {regname,  RegName}  |
                 {pseudo,   Bool}   |   {local_typecheck,   Bool}   |   {survive_exit,   Bool}  |
                 {create_options, [CreateOpts]}]
                 Bool = true | false
                 RegName = {global, term()} | {local, atom()}
                 CreateOpts = {debug, [Dbg]} | {timeout, Time}
                 Dbg = trace | log | statistics | {log_to_file, FileName}

              Start a Orber server passing Env to init/1.

              If the option {pseudo, true} is used, all other options are overridden. As default,
              this option is set to false.

              This  function cannot be used for starting a server as supervisor child. If started
              as persistent, the options [{persistent, true}, {regname, {global,  term()}}]  must
              be  used  and  Orber  will  only  forget the object reference if it terminates with
              reason normal or shutdown.

              The option {local_typecheck, boolean()}, which  overrides  the  Local  Typechecking
              environment  flag,  turns on or off typechecking. If activated, parameters, replies
              and raised exceptions will be checked to ensure that  the  data  is  correct,  when
              invoking operations on CORBA Objects within the same Orber domain. Due to the extra
              overhead, this option MAY ONLY be used during testing and development.

              {survive_exit,  boolean()}  overrides  the  EXIT  Tolerance  environment  flag.  If
              activated,  the server will not terminate, even though the call-back module returns
              EXIT.

              Time specifies how long time, in milliseconds,  the  server  is  allowed  to  spend
              initializing. For more information about the Dbg options, see the sys module.

       Module_Interface:oe_create_link(Env, Options) -> Return

              Types:

                 Env = term()
                 Return = ObjRef | {ok, Pid, ObjRef}
                 ObjRef = #object reference
                 Options  =  [{sup_child,  Bool}  |  {persistent,  Bool}  |  {regname, RegName} |
                 {pseudo,  Bool}   |   {local_typecheck,   Bool}   |   {survive_exit,   Bool}   |
                 {create_options, [CreateOpts]}]
                 Bool = true | false
                 RegName = {global, term()} | {local, atom()}
                 CreateOpts = {debug, [Dbg]} | {timeout, Time}
                 Dbg = trace | log | statistics | {log_to_file, FileName}

              Start a linked Orber server passing Env to init/1.

              If  the option {pseudo, true} is used, all other options are overridden and no link
              will be created. As default, this option is set to false.

              This function can be used for starting a server as persistent or supervisor  child.
              At  the  moment  [{persistent,  true}, {regname, {global, term()}}] must be used to
              start a server as persistent, i.e., if a server died and is in the process of being
              restarted  a  call to the server will not raise 'OBJECT_NOT_EXIST' exception. Orber
              will only forget the object reference  if  it  terminates  with  reason  normal  or
              shutdown,  hence, the server must be started as transient (for more information see
              the supervisor documentation).

              The options {local_typecheck, boolean()} and {survive_exit, boolean()}  behaves  in
              the same way as for oe_create/2.

              Time  specifies  how  long  time,  in  milliseconds, the server is allowed to spend
              initializing. For more information about the Dbg options, see the sys module.

       Module_Interface:own_functions(ObjRef, Arg1, ..., ArgN) -> Reply
       Module_Interface:own_functions(ObjRef, Options, Arg1, ..., ArgN) -> Reply

              Types:

                 ObjRef = #object reference
                 Options = [Option] | Timeout
                 Option = {timeout, Timeout} | {context, [Context]}
                 Timeout = infinity | integer(milliseconds)
                 Context = #'IOP_ServiceContext'{context_id = CtxId, context_data = CtxData}
                 CtxId = ?ORBER_GENERIC_CTX_ID
                 CtxData = {interface, Interface}  |  {userspecific,  term()}  |  {configuration,
                 Options}
                 Interface = string()
                 Options = [{Key, Value}]
                 Key   =   ssl_client_verify   |   ssl_client_depth   |   ssl_client_certfile   |
                 ssl_client_cacertfile   |    ssl_client_password    |    ssl_client_keyfile    |
                 ssl_client_ciphers | ssl_client_cachetimeout
                 Value = allowed value associated with the given key
                 ArgX = specified in the IDL-code.
                 Reply = specified in the IDL-code.

              The  default  value  for the Timeout option is infinity. IPv4 or IPv6 addresses are
              accepted as local Interface.

              The  configuration  context  is  used  to  override  the  global  SSL  client  side
              configuration.

              To  gain  access  to  #'IOP_ServiceContext'{}  record and the ?ORBER_GENERIC_CTX_ID
              macro, you must add -include_lib("orber/include/corba.hrl"). to your module.

CALLBACK FUNCTIONS

       The following functions should be exported from a CORBA callback module. Note, a  complete
       template  of the call-back module can be generated automatically by compiling the IDL-file
       with the IC option {be,erl_template}. One should also add the same  compile  options,  for
       example this or from, used when generating the stub/skeleton modules.

EXPORTS

       Module_Interface_impl:init(Env) -> CallReply

              Types:

                 Env = term()
                 CallReply = {ok, State} | {ok, State, Timeout} | ignore | {stop, StopReason}
                 State = term()
                 Timeout = int() >= 0 | infinity
                 StopReason = term()

              Whenever  a  new  server  is  started,  init/1  is the first function called in the
              specified call-back module.

       Module_Interface_impl:terminate(Reason, State) -> ok

              Types:

                 Reason = term()
                 State = term()

              This call-back function is called whenever the server is about to terminate.

       Module_Interface_impl:code_change(OldVsn, State, Extra) -> CallReply

              Types:

                 OldVsn = undefined | term()
                 State = term()
                 Extra = term()
                 CallReply = {ok, NewState}
                 NewState = term()

              Update the internal State.

       Module_Interface_impl:handle_info(Info, State) -> CallReply

              Types:

                 Info = term()
                 State = term()
                 CallReply = {noreply, State} | {noreply, State, Timeout}  |  {stop,  StopReason,
                 State}
                 Timeout = int() >= 0 | infinity
                 StopReason = normal | shutdown | term()

              If the configuration parameter {{handle_info, "Module::Interface"}, true} is passed
              to IC and process_flag(trap_exit,true) is set in the init() call-back this function
              must be exported.

          Note:
              To  be  able  to handle the Timeout option in CallReply in the call-back module the
              configuration parameter {{handle_info, "Module::Interface"}, true} must  be  passed
              to IC.

       Module_Interface_impl:own_functions(State, Arg1, ..., ArgN) -> CallReply
       Module_Interface_impl:own_functions(This, State, Arg1, ..., ArgN) -> CallReply
       Module_Interface_impl:own_functions(This, From, State, Arg1, ..., ArgN) -> ExtCallReply
       Module_Interface_impl:own_functions(From, State, Arg1, ..., ArgN) -> ExtCallReply

              Types:

                 This = the servers #object reference
                 State = term()
                 ArgX = specified in the IDL-code.
                 CallReply  =  {reply,  Reply,  State}  | {reply, Reply, State, Timeout} | {stop,
                 StopReason, Reply, State} | {stop, StopReason, State} | corba:raise(Exception)
                 ExtCallReply  =  CallReply  |  corba:reply(From,  Reply),  {noreply,  State}   |
                 corba:reply(From, Reply), {noreply, State, Timeout}
                 Reply = specified in the IDL-code.
                 Timeout = int() >= 0 | infinity
                 StopReason = normal | shutdown | term()

              All  two-way  functions  must  return one of the listed replies or raise any of the
              exceptions listed in the IDL code (i.e. raises(...)). If  the  IC  compile  options
              this  and/or  from  are  used,  the implementation must accept the This and/or From
              parameters.

       Module_Interface_impl:own_functions(State, Arg1, ..., ArgN) -> CastReply
       Module_Interface_impl:own_functions(This, State, Arg1, ..., ArgN) -> CastReply

              Types:

                 This = the servers #object reference
                 State = term()
                 CastReply = {noreply, State} | {noreply, State, Timeout}  |  {stop,  StopReason,
                 State}
                 ArgX = specified in the IDL-code.
                 Reply = specified in the IDL-code.
                 Timeout = int() >= 0 | infinity
                 StopReason = normal | shutdown | term()

              All  one-way  functions  must  return  one of the listed replies. If the IC compile
              option this is used, the implementation must accept the This parameter.