Skip to main content
Skip table of contents

(v13) D_IP_CHANNEL_CLOSE

This page applies to Harlequin v13.1r0 and later; and to Harlequin MultiRIP but not Harlequin Core

D_IP_CHANNEL_CLOSE Selector

Parameter: ChannelCloseParam *param

Call type: Multi‐call

  • The RIP makes this call when there is no more data to be transferred through an open channel. This might be because:
  • The channel has reached the end of the file and the plugin has passed on this information to the RIP in the dataInStatus of the channelContext structure.
  • The file has been explicitly closed from some PostScript language code.
  • The file has been forcibly closed because of some fault; for example, a PostScript language error, or the user having terminated the job from the RIP.

Note: An encoding filter plugin must complete its transformation of the incoming data, write the result to the dataInBuffer and then wait for the buffer to empty before the multi‐call completes. This is because the close is being applied to the filter—which for encoding actions is the writing stream, dataOut ...—not the underlying file (the dataIn ... stream).

TEXT
      typedef struct channelCloseParam { int32 version ; ChannelContext *channelContext ; int32 abort ;
      uint32 openFlags ;
      int32 lastFile ; MultiCallData multi ; IPStatus status ;
    } ChannelCloseParam ;

version

The version field should be ignored.

channelContext

A pointer to data the RIP holds about the channel.

abort

The RIP sets this to zero if this is a normal end‐of‐file termination, and to a non‐zero value if the file is for some reason being closed prematurely, typically because of an error.

openFlags

The RIP sets this field to indicate whether the channel is to be closed in the read direction, the write direction, or both. It should be set to COF_READ , or COF_WRITE , or both ORed together, respectively.

If a read/write channel was opened with separate calls, it will be closed with separate calls.

lastFile

The RIP sets this flag to a non‐zero value before the call.

If the plugin needs to make sure the closing channel is the next channel the RIP polls, it should set this field to a non‐zero value.

This is important when implementing protocols where several interactions may make up a single job—for example logical files in AppleTalk—but it can also be used to tie the RIP to one input source for a while.

In this latter case, the dataAvailable field of the channelContext should be set to a non‐zero value. If for some reason the next job does not appear, dataAvailable can be set zero to allow other channels to proceed when next tickled.

multi

Controls the sequence of calls to the selector. See (v13) The MultiCallData structure .

status

The plugin should set the IPmajor field of this IPStatus structure to IPS_OK if the call was successful and IPS_FAIL if it failed.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.