def service(self):        
        act_evt_map = self.local_endpoint._act_event_map

        try:
            act_event = act_evt_map.get_or_create_endpoint_called_event(
                self.endpoint_making_call,self.event_uuid,self.result_queue)
        except util.StoppedException:
            self.result_queue.put(
                waldoCallResults._StopAlreadyCalledEndpointCallResult())
            return
        
        import waldoVariableStore
        evt_ctx = waldoExecutingEvent._ExecutingEventContext(
            self.local_endpoint._global_var_store,
            # should not have any sequence local data from an endpoint
            # call.
            waldoVariableStore._VariableStore(
                self.local_endpoint._host_uuid) )
        # receiving endpoint must know that this call was an endpoint
        # call.  This is so that it can ensure to make deep copies of
        # all non-external arguments (including lists,maps, and user
        # structs).
        evt_ctx.set_from_endpoint_true()
        exec_event = waldoExecutingEvent._ExecutingEvent(
            self.to_exec,act_event,evt_ctx,self.result_queue,
            *self.args)

        # don't start as separte thread
        exec_event.run()
    def run(self):
        if __debug__:
            logging_info = {
                'mod': 'ReceiveEndpointCallAction',
                'endpoint_string': self.local_endpoint._endpoint_uuid_str
                }
            log_msg = 'Start receive endpoint call action ' + str(self.event_uuid)
            util.get_logger().info(log_msg,extra=logging_info)

        
        act_evt_map = self.local_endpoint._act_event_map
        act_event = act_evt_map.get_or_create_endpoint_called_event(
            self.endpoint_making_call,self.event_uuid,self.result_queue)
        
        import waldoVariableStore
        evt_ctx = waldoExecutingEvent._ExecutingEventContext(
            self.local_endpoint._global_var_store,
            # should not have any sequence local data from an endpoint
            # call.
            waldoVariableStore._VariableStore(
                self.local_endpoint._host_uuid) )
        # receiving endpoint must know that this call was an endpoint
        # call.  This is so that it can ensure to make deep copies of
        # all non-external arguments (including lists,maps, and user
        # structs).
        evt_ctx.set_from_endpoint_true()
        exec_event = waldoExecutingEvent._ExecutingEvent(
            self.to_exec,act_event,evt_ctx,self.result_queue,
            *self.args)

        exec_event.start()
        
        if __debug__:
            log_msg = 'End receive endpoint call action ' + act_event.str_uuid
            util.get_logger().info(log_msg,extra=logging_info)