# File lib/mcollective/message.rb, line 133
    def encode!
      case type
        when :reply
          raise "Cannot encode a reply message if no request has been associated with it" unless request
          raise 'callerid in original request is not valid, surpressing reply to potentially forged request' unless PluginManager["security_plugin"].valid_callerid?(request.payload[:callerid])

          @requestid = request.payload[:requestid]
          @payload = PluginManager["security_plugin"].encodereply(agent, payload, requestid, request.payload[:callerid])
        when :request, :direct_request
          validate_compound_filter(@filter["compound"]) unless @filter["compound"].empty?

          @requestid = create_reqid unless @requestid
          @payload = PluginManager["security_plugin"].encoderequest(Config.instance.identity, payload, requestid, filter, agent, collective, ttl)
        else
          raise "Cannot encode #{type} messages"
      end
    end