PICTools Programmer's Reference
JPIP_UNION

JPIP_UNION: JPIP REQUEST FIELDS

Fields:

Name Description

Target

  • Corresponding flag in JPIPStringFlags is JSF_TARGET
  • Field is a pointer to a character string which must not contain the character '&'

  • Set to identify the target to be delivered, usually the filename of a JPEG2000 image on the server

  • Optional and only needed if target is not identified by any other means

  • Can include in first request of a session or in any stateless request

  • Set PF2_HexHexEncode in PicFlags2 to instruct OP_JPIPCLIENT to %-hex-hex encode (i.e., HTTP URL escape) those characters in this field that could cause HTTP URL problems if transmitted unencoded. This is particularly necessary if there are any spaces in the target string.

  • Not necessary if there is a target ID or channel ID in the request

  • Not necessary if target is identified by other means, such as the URL component of the HTTP request

TargetID

  • Corresponding flag in JPIPStringFlags is JSF_TARGET_ID

  • Field is a pointer to a character string which must not contain the character '&'

  • Set to identify the target by other than the target name

  • Recommended usage in first request is to set string to '0' to request that the server assign a target ID

  • Optional usage for later requests is to set string to the target ID previously returned by the server

JPIPChannelID

  • Corresponding flag in JPIPStringFlags is JSF_CHANNEL_ID

  • Field is a pointer to a character string which must not contain the character '&'

  • Set to identify the channel (and thereby the session containing the channel) to use for this request

  • Set string to the channel ID previously returned by the server

  • Must include in all requests after first request that are not stateless requests to identify the channel

  • Must omit if request is a stateless request

JPIPChannelIDsClose

  • Corresponding flag in JPIPStringFlags is JSF_CHANNEL_CLOSE

  • Field is a pointer to a character string which must not contain the character '&'

  • Set string to '*' to close all open channels

  • Set string to channel ID to close channel with that ID

  • Can include in the last request of a session

  • Must omit if request is a stateless request

RequestedJPIPChannelTransportsFlags

  • Corresponding flag in JPIPStringFlags is JSF_CHANNEL_NEW

  • Set to request that a new channel (and thereby a new session) be created

  • Set to 'OR' of desired JPIP Channel (Transports) Flags

  • JCF_HTTP               - use HTTP (recommended)
  • JCF_HTTPS             - use HTTPS
  • JCF_HTTP_TCP        - use combination HTTP and TCP
  • Must include in first request that is not stateless to create a new channel and a new session

  • Must omit to create a stateless request

ViewWindowFrameWidth

ViewWindowFrameHeight

ViewWindowFrameRoundDirection

  • Corresponding flag in JPIPStringFlags is JSF_FRAME_SIZE

  • Set to specify the frame size of the requested view window

  • Frame width and frame height must both be nonzero

  • Set ViewWindowFrameRoundDirection to one of:

    • JPIP_RoundDown
    • JPIP_RoundUp
    • JPIP_RoundClosest
  • Can include in any request

ViewWindowRegionOffsetX

ViewWindowRegionOffsetY

  • Corresponding flag in JPIPStringFlags is JSF_REGION_OFFSET

  • Set to specify the region offset of the requested view window

  • Can include in any request that also includes a frame size

ViewWindowRegionWidth

ViewWindowRegionHeight

  • Corresponding flag in JPIPStringFlags is JSF_REGION_SIZE

  • Set to specify the region size of the requested view window

  • Can include in any request that also includes a frame size

ViewWindowMinComponent

ViewWindowMaxComponent

  • Corresponding flag in JPIPStringFlags is JSF_COMPONENTS

  • Set to request specific components of the image

  • Each value is limited to a number between 0 and 16383, inclusive

  • Omit to request all components

  • Can include in any request that also includes a frame size

ViewWindowLayers

  • Corresponding flag in JPIPStringFlags is JSF_LAYERS

  • Set to request a limited number of quality layers of the image

  • Value is limited to a number between 0 and 65535, inclusive

  • Omit to request all layers

  • Can include in any request that also includes a frame size

JPIPServerResponseAlignment

  • Corresponding flag in JPIPStringFlags is JSF_ALIGN

  • Set TRUE or FALSE

  • Affects the details of how the server responses to this request are to be constructed and typically not of concern

  • Optional and typically not needed

  • Can include in any request

JPIPServerRequestWait

  • Corresponding flag in JPIPStringFlags is JSF_WAIT

  • Set TRUE or FALSE

  • Set to TRUE to request that the server wait until any current or pending requests are completed before processing this request

  • Omit or set to FALSE to request that the server preempt any current or pending requests and process this request instead (i.e., don't wait)

  • Can include in any request of a session

MediaTypeFlags

  • Corresponding flag in JPIPStringFlags is JSF_MEDIA_TYPE

  • Set to request the media type of the JPIP data the server returns

  • Set to 'OR' of desired JPIP (Media) Type Flags

    • JTF_JPP                 - jpp-stream (recommended)
    • JTF_JPP_EXT          - jpp-stream extended form
    • JTF_JPT                 - jpt-stream
    • JTF_JPT_EXT          - jpt-stream extended form
  • Omit to let server use its own default

  • Can include in first request of a session or in any stateless request

JPIPServerResponseMaxLength

  • Corresponding flag in JPIPStringFlags is JSF_MAX_LENGTH

  • Set to limit the byte length of the response to this request

  • Set to zero to request response headers only and no image data

  • If set to a nonzero value less than 64, OP_JPIPSERVER changes it to 64

  • Can include in any request

  • Omit for no response byte limit and then responses end when some other limit is reached or when all relevant data has been delivered

JPIP_UNION: OP_JPIPCLIENT

 
Copy Code
typedef struct {
   DWORD                          Reserved0;
   CHAR PICHUGE*                  JPIPRequestString;
   CHAR PICHUGE*                  JPIPResponseString;
   BYTE PICHUGE*                  EORMessageBody;
   CHAR PICHUGE*                  Target;
   CHAR PICHUGE*                  TargetID;
   CHAR PICHUGE*                  GrantedTargetID;
   CHAR PICHUGE*                  JPIPChannelID;
   CHAR PICHUGE*                  JPIPChannelIDsClose;
   PICFLAGS                       PicFlags;
   PICFLAGS                       PicFlags2;
   DWORD                          ImageWidth;
   DWORD                          ImageHeight;
   DWORD                          ImageXOff;
   DWORD                          ImageYOff;
   DWORD                          TileWidth;
   DWORD                          TileHeight;
   DWORD                          TileXOff;
   DWORD                          TileYOff;
   WORD                           NumComponents;
   WORD                           Action;
   DWORD                          EORMessageBodyLen;
   DWORD                          JPIPStringFlags;
   DWORD                          JPIPStringFlags2;
   DWORD                          JPIPServerStatusCode;
   DWORD                          JPIPChannelNumber;
   DWORD                          JPIPServerBlocksize;
   WORD                           AllowedJPIPChannelTransportsFlags;
   WORD                           RequestedJPIPChannelTransportsFlags;
   DWORD                          ViewWindowFrameWidth;
   DWORD                          ViewWindowFrameHeight;
   DWORD                          ViewWindowFrameRoundDirection;
   DWORD                          ViewWindowRegionOffsetX;
   DWORD                          ViewWindowRegionOffsetY;
   DWORD                          ViewWindowRegionWidth;
   DWORD                          ViewWindowRegionHeight;
   WORD                           ViewWindowMinComponent;
   WORD                           ViewWindowMaxComponent;
   WORD                           ViewWindowLayers;
   BYTE                           JPIPServerResponseAlignment;
   BYTE                           JPIPServerRequestWait;
   WORD                           DefaultMediaType;
   WORD                           MediaTypeFlags;
   DWORD                          JPIPServerResponseMaxLength;
   CHAR PICHUGE*                  Model;
   CHAR PICHUGE*                  GrantedJPIPChannelID;
   CHAR PICHUGE*                  GrantedJPIPChannelHost;
   CHAR PICHUGE*                  GrantedJPIPChannelPath;
   DWORD                          GrantedJPIPChannelPort;
   DWORD                          GrantedJPIPChannelAuxport;
   WORD                           GrantedJPIPChannelTransport;
   BYTE                           EORReasonCode;
   BYTE                           Reserved;
   BYTE PICHUGE*                  UpdatedTiles;
   DWORD                          UpdatedTilesSize;
   DWORD                          JPEG2000FileFormat;
   DWORD                          JPEG2000Profile;
} JPIP_UNION;

The JPIP_UNION structure supplies parameters to the OP_JPIPCLIENT and OP_JPIPSERVER opcodes for a client and server to request and deliver JPEG2000 images, respectively, using the JPIP protocol. 

Summary of JPIP_UNION Fields: When Each Is Set and by Whom

Field

Create Request

Input Response

Output Bitstream

JPIPRequestString

opcode

 

 

JPIPResponseString

 

client app

 

EORMessageBody

 

opcode

 

Target

client app

 

 

TargetID

client app

 

 

GrantedTargetID

 

opcode

 

JPIPChannelID

client app

 

 

JPIPChannelIDsClose

client app

 

 

PicFlags2

client app

opcode

 

ImageWidth

 

opcode

 

ImageHeight

 

opcode

 

ImageXOff

 

opcode

 

ImageYOff

 

opcode

 

TileWidth

 

opcode

 

TileHeight

 

opcode

 

TileXOff

 

opcode

 

TileYOff

 

opcode

 

NumComponents

 

opcode

 

Action

client app

client app

client app

EORMessageBodyLen

 

opcode

 

JPIPStringFlags

client app/opcode

opcode

 

JPIPServerStatusCode

 

 

 

JPIPChannelNumber

 

 

 

JPIPServerBlocksize

 

 

 

AllowedJPIPChannelTransportsFlags

 

 

 

RequestedJPIPChannelTransportsFlags

client app

 

 

ViewWindowFrameWidth

client app

opcode

 

ViewWindowFrameHeight

client app

opcode

 

ViewWindowFrameRoundDirection

client app

 

 

ViewWindowRegionOffsetX

client app

opcode

 

ViewWindowRegionOffsetY

client app

opcode

 

ViewWindowRegionWidth

client app

opcode

 

ViewWindowRegionHeight

client app

opcode

 

ViewWindowMinComponent

client app

opcode

 

ViewWindowMaxComponent

client app

opcode

 

ViewWindowLayers

client app

opcode

 

JPIPServerResponseAlignment

client app

 

 

JPIPServerRequestWait

client app

 

 

DefaultMediaType

 

 

 

MediaTypeFlags

client app

opcode

 

JPIPServerResponseMaxLength

client app

opcode

 

Model

 

 

 

GrantedJPIPChannelID

 

opcode

 

GrantedJPIPChannelHost

 

opcode

 

GrantedJPIPChannelPath

 

opcode

 

GrantedJPIPChannelPort

 

opcode

 

GrantedJPIPChannelAuxport

 

opcode

 

GrantedJPIPChannelTransport

 

opcode

 

EORReasonCode

 

opcode

 

UpdatedTiles

 

 

opcode

UpdatedTilesSize

 

opcode

 

Fields:

Name Description

Reserved0

This field is not currently used and must be set to 0.

JPIPRequestString

REQ_EXEC/JPIP_Action_Create_Request returns a pointer to a string that the client app can use directly as the query string for an HTTP GET request or as the body of an HTTP POST request. The client app incorporates this string in a complete HTTP request (or other transport, if it so chooses) that it then sends to the server. The client app can forego calling REQ_EXEC/JPIP_Action_Create_Request and instead can create the request string itself.  However, it is recommended that the client app let OP_JPIPCLIENT create this string.

JPIPResponseString

The client app extracts all HTTP headers out of the server's HTTP (or other transport) response and sets this field to point to that string. Call REQ_EXEC/JPIP_Action_Input_Response with this field set and OP_JPIPCLIENT will parse the string, set JPIPStringFlags to indicate what fields were found, and return the values of those fields in the corresponding JPIP_UNION fields. OP_JPIPCLIENT does not make any use of values found in the JPIPResponseString. Set this field to NULL to indicate that the client app will do the parsing itself and does not want OP_JPIPCLIENT to parse the response headers.

EORMessageBody

In this field, REQ_EXEC/JPIP_Action_Input_Response returns a pointer to a buffer containing the message body found in the EOR message at the end of the server's response but only if the server response included this optional data. The length of the data in this buffer is returned in EORMessageBodyLen. EORMessageBody points to valid data only if EORMessageBodyLen is nonzero.

Target

The client app uses this field to provide a value to REQ_EXEC/JPIP_Action_Create_Request to use in creating the JPIPRequestString. The client app must also set JSF_TARGET in JPIPStringFlags to tell OP_JPIPCLIENT to use this field.  Otherwise this field is ignored for this call. See the JPIP_UNION:JPIP REQUEST FIELDS section for additional information about how to use this field in a JPIP request.

TargetID

The client app uses this field to provide a value to REQ_EXEC/JPIP_Action_Create_Request to use in creating the JPIPRequestString. The client app must also set JSF_TARGET_ID in JPIPStringFlags to tell OP_JPIPCLIENT to use this field.  Otherwise this field is ignored for this call. See the JPIP_UNION:JPIP REQUEST FIELDS section for additional information about how to use this field in a JPIP request.

GrantedTargetID

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets this field if it finds a value in the JPIPResponseString and sets JSF_TARGET_ID in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when JSF_TARGET_ID is set.

JPIPChannelID

The client app uses this field to provide a value to REQ_EXEC/JPIP_Action_Create_Request to use in creating the JPIPRequestString. The client app must also set JSF_CHANNEL_ID in JPIPStringFlags to tell OP_JPIPCLIENT to use this field.  Otherwise this field is ignored for this call. See the JPIP_UNION:JPIP REQUEST FIELDS section for additional information about how to use this field in a JPIP request.

JPIPChannelIDsClose

The client app uses this field to provide a value to REQ_EXEC/JPIP_Action_Create_Request to use in creating the JPIPRequestString. The client app must also set JSF_CHANNEL_CLOSE in JPIPStringFlags to tell OP_JPIPCLIENT to use this field.  Otherwise this field is ignored for this call. See the JPIP_UNION:JPIP REQUEST FIELDS section for additional information about how to use this field in a JPIP request.

PicFlags

Not used.

PicFlags2

Value

Meaning

PF2_HexHexEncode

If set, then JPIP_Action_Create_Request will %-hex-hex encode (i.e., HTTP URL Escape) those characters in the Target field that could cause HTTP URL problems if transmitted unencoded.  OP_JPIPSERVER will automatically %-hex-hex decode the string before it returns the target string to the server application.

PF2_AnotherJPIPResponseAvailable

JPIP_Action_Input_Response sets this to signal that there is internally-buffered data remaining in OP_JPIPCLIENT.  The remaining data is part or all of the next response and the client application must call JPIP_Action_Input_Response again for this next response.

ImageWidth

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client.  It is the width of the actual image data on the JPEG2000 reference canvas.  It is returned to the client app by REQ_EXEC/JPIP_Action_Input_Response.

ImageHeight

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client.  It is the height of the actual image data on the JPEG2000 reference canvas.  It is returned to the client app by REQ_EXEC/JPIP_Action_Input_Response.

ImageXOff

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client.  It is the horizontal offset of the top-left-corner of the actual image data on the JPEG2000 reference canvas.  It is returned to the client app by REQ_EXEC/JPIP_Action_Input_Response.

ImageYOff

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client.  It is the vertical offset of the top-left-corner of the actual image data on the JPEG2000 reference canvas.  It is returned to the client app by REQ_EXEC/JPIP_Action_Input_Response.

TileWidth

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client. It is the nominal width of image tiles on the JPEG2000 reference canvas.  It is returned to the client app by REQ_EXEC/JPIP_Action_Input_Response.

TileHeight

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client. It is the nominal height of image tiles on the JPEG2000 reference canvas.  It is returned to the client app by REQ_EXEC/JPIP_Action_Input_Response.

TileXOff

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client. It is the horizontal offset of the top-left-corner tile on the JPEG2000 reference canvas.  It is returned to the client app by REQ_EXEC/JPIP_Action_Input_Response.

TileYOff

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client. It is the vertical offset of the top-left-corner tile on the JPEG2000 reference canvas.  It is returned to the client app by REQ_EXEC/JPIP_Action_Input_Response.

NumComponents

This field is the number of components extracted from the header of the JPEG2000 image read in at the server and delivered to the client. It is returned to the client app by REQ_EXEC/JPIP_Action_Input_Response. A nonzero value further indicates that OP_JPIPCLIENT has received enough data to return valid values for ImageWidth, ImageHeight, ImageXoff, ImageYoff, TileWidth, TileHeight, TileXoff, TileYoff, and NumComponents.

Action

Tells OP_JPIPCLIENT what particular action to perform in REQ_EXEC:

Value

Meaning

JPIP_Action_Create_Request

Create a request

JPIP_Action_Input_Response

Input and process the server's response

JPIP_Action_Output_Bitstream

Output the JPEG2000 bitstream

JPIP_Action_Input_Output

Does both JPIP_Action_Input_Response and JPIP_Action_Output_Bitstream in one Action

EORMessageBodyLen

In this field, REQ_EXEC/JPIP_Action_Input_Response returns the length in bytes of the data in EORMessageBody, if any.

JPIPStringFlags

The client app sets one or more JSF_ flags in this field to indicate to REQ_EXEC/JPIP_Action_Create_Request what fields the client app wants OP_JPIPCLIENT to include in the JPIPRequestString. Note that the flag JSF_META_REQUEST has no corresponding field but can be set to instruct REQ_EXEC/JPIP_Action_Create_Request to include in the JPIPRequestString a request for the server to deliver all metadata found in the JPEG2000 image; ordinarily, only limited metadata is delivered. The client app should set the JSF_META_REQUEST flag if it wants to be sure to receive all available image data and an EORReasonCode of JPIP_EOR_ImageDone.

REQ_EXEC/JPIP_Action_Create_Request sets one or more JSF_ flags in this field to indicate to the client app what fields OP_JPIPCLIENT has put in the JPIPRequestString, if successful. If an error occurs while creating the request, however, the field is assigned the JSF_ flag that indicates which field was invalid and could not be put into the JPIPRequestString.

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets one or more JSF_ flags in this field to indicate to the client app what fields OP_JPIPCLIENT has found in the JPIPResponseString.

JPIPStringFlags2

Not used.

JPIPServerStatusCode

JPIPChannelNumber

JPIPServerBlocksize

AllowedJPIPChannelTransportsFlags

Not used by OP_JPIPCLIENT.

RequestedJPIPChannelTransportsFlags

The client app uses this field to provide a value to REQ_EXEC/JPIP_Action_Create_Request to use in creating the JPIPRequestString. The client app must also set JSF_CHANNEL_NEW in JPIPStringFlags to tell OP_JPIPCLIENT to use this field.  Otherwise this field is ignored for this call. See the JPIP_UNION:JPIP REQUEST FIELDS section for additional information about how to use this field in a JPIP request.

ViewWindowFrameWidth

ViewWindowFrameHeight

ViewWindowFrameRoundDirection

The client app uses these fields to provide values to REQ_EXEC/JPIP_Action_Create_Request to use in creating the JPIPRequestString. The client app must also set JSF_FRAME_SIZE in JPIPStringFlags to tell OP_JPIPCLIENT to use these fields.  Otherwise these fields are ignored for this call. See the JPIP_UNION:JPIP REQUEST FIELDS section for additional information about how to use these fields in a JPIP request.

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets the fields ViewWindowFrameWidth and ViewWindowFrameHeight if it finds values in the JPIPResponseString and sets JSF_FRAME_SIZE in JPIPStringFlags to indicate that it found these fields in the string. The fields ViewWindowFrameWidth and ViewWindowFrameHeight have valid data only when JSF_FRAME_SIZE is set.

ViewWindowRegionOffsetX

ViewWindowRegionOffsetY

The client app uses these fields to provide values to REQ_EXEC/JPIP_Action_Create_Request to use in creating the JPIPRequestString. The client app must also set JSF_REGION_OFFSET in JPIPStringFlags to tell OP_JPIPCLIENT to use these fields.  Otherwise these fields are ignored for this call. See the JPIP_UNION:JPIP REQUEST FIELDS section for additional information about how to use these fields in a JPIP request.

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets these fields if it finds values in the JPIPResponseString and sets JSF_REGION_OFFSET in JPIPStringFlags to indicate that it found these fields in the string. These fields have valid data only when JSF_REGION_OFFSET is set.

ViewWindowRegionWidth

ViewWindowRegionHeight

The client app uses these fields to provide values to REQ_EXEC/JPIP_Action_Create_Request to use in creating the JPIPRequestString. The client app must also set JSF_REGION_SIZE in JPIPStringFlags to tell OP_JPIPCLIENT to use these fields.  Otherwise these fields are ignored for this call. See the JPIP_UNION:JPIP REQUEST FIELDS section for additional information about how to use these fields in a JPIP request.

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets these fields if it finds values in the JPIPResponseString and sets JSF_REGION_SIZE in JPIPStringFlags to indicate that it found these fields in the string. These fields have valid data only when JSF_REGION_SIZE is set.

ViewWindowMinComponent

ViewWindowMaxComponent

The client app uses these fields to provide values to REQ_EXEC/JPIP_Action_Create_Request to use in creating the JPIPRequestString. The client app must also set JSF_COMPONENTS in JPIPStringFlags to tell OP_JPIPCLIENT to use these fields.  Otherwise these fields are ignored for this call. See the JPIP_UNION:JPIP REQUEST FIELDS section for additional information about how to use these fields in a JPIP request.

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets these fields if it finds values in the JPIPResponseString and sets JSF_COMPONENTS in JPIPStringFlags to indicate that it found these fields in the string. These fields have valid data only when JSF_COMPONENTS is set.

ViewWindowLayers

The client app uses this field to provide a value to REQ_EXEC/JPIP_Action_Create_Request to use in creating the JPIPRequestString. The client app must also set JSF_LAYERS in JPIPStringFlags to tell OP_JPIPCLIENT to use this field.  Otherwise this field is ignored for this call. See the JPIP_UNION:JPIP REQUEST FIELDS section for additional information about how to use this field in a JPIP request.

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets this field if it finds a value in the JPIPResponseString and sets JSF_LAYERS in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when JSF_LAYERS is set.

JPIPServerResponseAlignment

The client app uses this field to provide a value to REQ_EXEC/JPIP_Action_Create_Request to use in creating the JPIPRequestString. The client app must also set JSF_ALIGN in JPIPStringFlags to tell OP_JPIPCLIENT to use this field.  Otherwise this field is ignored for this call. See the JPIP_UNION:JPIP REQUEST FIELDS section for additional information about how to use this field in a JPIP request.

JPIPServerRequestWait

The client app uses this field to provide a value to REQ_EXEC/JPIP_Action_Create_Request to use in creating the JPIPRequestString. The client app must also set JSF_WAIT in JPIPStringFlags to tell OP_JPIPCLIENT to use this field.  Otherwise this field is ignored for this call. See the JPIP_UNION:JPIP REQUEST FIELDS section for additional information about how to use this field in a JPIP request.

DefaultMediaType

Not used by OP_JPIPCLIENT.

MediaTypeFlags

The client app uses this field to provide a value to REQ_EXEC/JPIP_Action_Create_Request to use in creating the JPIPRequestString. The client app must also set JSF_MEDIA_TYPE in JPIPStringFlags to tell OP_JPIPCLIENT to use this field.  Otherwise this field is ignored for this call. See the JPIP_UNION:JPIP REQUEST FIELDS section for additional information about how to use this field in a JPIP request.

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets this field if it finds a value in the JPIPResponseString and sets JSF_MEDIA_TYPE in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when JSF_MEDIA_TYPE is set.

JPIPServerResponseMaxLength

The client app uses this field to provide a value to REQ_EXEC/JPIP_Action_Create_Request to use in creating the JPIPRequestString. The client app must also set JSF_MAX_LENGTH in JPIPStringFlags to tell OP_JPIPCLIENT to use this field.  Otherwise this field is ignored for this call. See the JPIP_UNION:JPIP REQUEST FIELDS section for additional information about how to use this field in a JPIP request.

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets this field if it finds a value in the JPIPResponseString and sets JSF_MAX_LENGTH in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when JSF_MAX_LENGTH is set.

Model

Reserved for internal and future use.

GrantedJPIPChannelID

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets this field if it finds a value in the JPIPResponseString and sets JSF_CHANNEL_NEW in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when its value is nonzero and JSF_CHANNEL_NEW is set.

GrantedJPIPChannelHost

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets this field if it finds a value in the JPIPResponseString and sets JSF_CHANNEL_NEW in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when its value is nonzero and JSF_CHANNEL_NEW is set.

GrantedJPIPChannelPath

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets this field if it finds a value in the JPIPResponseString and sets JSF_CHANNEL_NEW in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when its value is nonzero and JSF_CHANNEL_NEW is set.

GrantedJPIPChannelPort

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets this field if it finds a value in the JPIPResponseString and sets JSF_CHANNEL_NEW in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when its value is nonzero and JSF_CHANNEL_NEW is set.

GrantedJPIPChannelAuxport

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets this field if it finds a value in the JPIPResponseString and sets JSF_CHANNEL_NEW in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when its value is nonzero and JSF_CHANNEL_NEW is set.

GrantedJPIPChannelTransport

If the client app calls REQ_EXEC/JPIP_Action_Input_Response with a JPIPResponseString, then OP_JPIPCLIENT sets this field if it finds a value in the JPIPResponseString and sets JSF_CHANNEL_NEW in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when its value is nonzero and JSF_CHANNEL_NEW is set.

EORReasonCode

In this field REQ_EXEC/JPIP_Action_Input_Response returns the EOR reason code it found at end of the server's response or sets to JPIP_EOR_None if REQ_EXEC/JPIP_Action_Input_Response returned before the reason code was reached, thereby indicating that the client app needs to call OP_JPIPCLIENT REQ_EXEC/JPIP_Action_Input_Response again with additional data from the server. Possible reason codes returned are:

  • JPIP_EOR_ImageDone
  • JPIP_EOR_WindowDone
  • JPIP_EOR_WindowChange
  • JPIP_EOR_ByteLimitReached
  • JPIP_EOR_QualityLimitReached
  • JPIP_EOR_UnspecifiedReason

Reserved

This field is not currently used and must be set to 0.

UpdatedTiles

UpdatedTiles is a bitmap indicating the updated 64x64 pixel subrectangles of the JPEG2000 image output by REQ_EXEC/JPIP_Action_Output_Bitstream.  Only those subrectangles denoted by a "1" bit contain new data since the last call to REQ_EXEC/JPIP_Action_Output_Bitstream. The client app must provide a buffer of UpdatedTilesSize bytes to use this feature; leave set to NULL to disable it. The UpdatedTiles buffer is passed by the app to OP_J2KE along with the output bitstream and is used by OP_J2KE to improve its decompression performance.

UpdatedTilesSize

This field is the required byte size of the UpdatedTiles buffer. If the client app wishes to make use of UpdatedTiles, then it uses this value to properly allocate the UpdatedTiles buffer. This field is returned to the client app by REQ_EXEC/JPIP_Action_Input_Response.

JPEG2000FileFormat

This field reports the JPEG2000 file format of the JPEG2000 image read in at the server and delivered to the client. It is returned to the client app by REQ_EXEC/JPIP_Action_Input_Response. JPX is not currently supported.

Value

Meaning

JPEG2000FileFormat_J2K

Input/Output is a JPEG2000 raw codestream image.

JPEG2000FileFormat_JP2

Input/Output is a JPEG2000 JP2 file format image.

JPEG2000FileFormat_JPX

Input is a JPEG2000 JPX file format image.

JPEG2000Profile

This field reports the JPEG2000 profile as determined from indicators in the JPEG2000 image read in at the server and delivered to the client. It is returned to the client app by REQ_EXEC/JPIP_Action_Input_Response. See the JPEG2000 ISO standard for more information about these profiles. Part-2 is not currently supported.

Value

Meaning

JPEG2000Profile_None

No profile - no restrictions (Part-1)

JPEG2000Profile_0

Profile-0 - most restrictive (Part-1)

JPEG2000Profile_1

Profile-1 - some restrictions (Part-1)

JPEG2000Profile_2

Same as JPEG2000Profile_None

JPEG2000Profile_Part2_Full

Requires full capabilities of JPEG2000 Part-2

JPEG2000Profile_Part2_JPXBaseline

Conforms to JPEG2000 JPX baseline (Part-2)

 

JPIP_UNION: OP_JPIPSERVER

 
Copy Code
typedef struct {
   DWORD                          Reserved0;
   CHAR PICHUGE*                  JPIPRequestString;
   CHAR PICHUGE*                  JPIPResponseString;
   BYTE PICHUGE*                  EORMessageBody;
   CHAR PICHUGE*                  Target;
   CHAR PICHUGE*                  TargetID;
   CHAR PICHUGE*                  GrantedTargetID;
   CHAR PICHUGE*                  JPIPChannelID;
   CHAR PICHUGE*                  JPIPChannelIDsClose;
   PICFLAGS                       PicFlags;
   PICFLAGS                       PicFlags2;
   DWORD                          ImageWidth;
   DWORD                          ImageHeight;
   DWORD                          ImageXOff;
   DWORD                          ImageYOff;
   DWORD                          TileWidth;
   DWORD                          TileHeight;
   DWORD                          TileXOff;
   DWORD                          TileYOff;
   WORD                           NumComponents;
   WORD                           Action;
   DWORD                          EORMessageBodyLen;
   DWORD                          JPIPStringFlags;
   DWORD                          JPIPStringFlags2;
   DWORD                          JPIPServerStatusCode;
   DWORD                          JPIPChannelNumber;
   DWORD                          JPIPServerBlocksize;
   WORD                           AllowedJPIPChannelTransportsFlags;
   WORD                           RequestedJPIPChannelTransportsFlags;
   DWORD                          ViewWindowFrameWidth;
   DWORD                          ViewWindowFrameHeight;
   DWORD                          ViewWindowFrameRoundDirection;
   DWORD                          ViewWindowRegionOffsetX;
   DWORD                          ViewWindowRegionOffsetY;
   DWORD                          ViewWindowRegionWidth;
   DWORD                          ViewWindowRegionHeight;
   WORD                           ViewWindowMinComponent;
   WORD                           ViewWindowMaxComponent;
   WORD                           ViewWindowLayers;
   BYTE                           JPIPServerResponseAlignment;
   BYTE                           JPIPServerRequestWait;
   WORD                           DefaultMediaType;
   WORD                           MediaTypeFlags;
   DWORD                          JPIPServerResponseMaxLength;
   CHAR PICHUGE*                  Model;
   CHAR PICHUGE*                  GrantedJPIPChannelID;
   CHAR PICHUGE*                  GrantedJPIPChannelHost;
   CHAR PICHUGE*                  GrantedJPIPChannelPath;
   DWORD                          GrantedJPIPChannelPort;
   DWORD                          GrantedJPIPChannelAuxport;
   WORD                           GrantedJPIPChannelTransport;
   BYTE                           EORReasonCode;
   BYTE                           Reserved;
   BYTE PICHUGE*                  UpdatedTiles;
   DWORD                          UpdatedTilesSize;
   DWORD                          JPEG2000FileFormat;
   DWORD                          JPEG2000Profile;
} JPIP_UNION;

The JPIP_UNION structure supplies parameters to the OP_JPIPCLIENT and OP_JPIPSERVER opcodes for a client and server to request and deliver JPEG2000 images, respectively, using the JPIP protocol.

Summary of JPIP_UNION Fields: When Each Is Set and by Whom

Field

REQ_INIT

Input Request

Output Response

JPIPRequestString

server app

server app

 

JPIPResponseString

 

 

opcode

EORMessageBody

 

 

 

Target

opcode

opcode

 

TargetID

opcode(1)

opcode(1)

 

GrantedTargetID

 

 

server app

JPIPChannelID

opcode

opcode(1)

 

JPIPChannelIDsClose

opcode

opcode(1)

 

PicFlags2

 

 

 

ImageWidth

opcode

 

 

ImageHeight

opcode

 

 

ImageXOff

opcode

 

 

ImageYOff

opcode

 

 

TileWidth

opcode

 

 

TileHeight

opcode

 

 

TileXOff

opcode

 

 

TileYOff

opcode

 

 

NumComponents

opcode

 

 

Action

 

server app

server app

EORMessageBodyLen

 

 

 

JPIPStringFlags

server app/opcode

opcode(1)

server app/opcode

JPIPServerStatusCode

opcode

opcode

 

JPIPChannelNumber

 

Opcode

server app

JPIPServerBlocksize

 

 

server app

AllowedJPIPChannelTransportsFlags

server app/opcode

server app/opcode

 

RequestedJPIPChannelTransportsFlags

opcode(1)

opcode(1)

 

ViewWindowFrameWidth

opcode

opcode(1)

opcode

ViewWindowFrameHeight

opcode

opcode(1)

opcode

ViewWindowFrameRoundDirection

opcode

opcode(1)

 

ViewWindowRegionOffsetX

opcode

opcode(1)

opcode

ViewWindowRegionOffsetY

opcode

opcode(1)

opcode

ViewWindowRegionWidth

opcode

opcode(1)

opcode

ViewWindowRegionHeight

opcode

opcode(1)

opcode

ViewWindowMinComponent

opcode

opcode(1)

opcode

ViewWindowMaxComponent

opcode

opcode(1)

opcode

ViewWindowLayers

opcode

opcode(1)

opcode

JPIPServerResponseAlignment

opcode

opcode(1)

 

JPIPServerRequestWait

opcode

opcode(1)

 

DefaultMediaType

server app/opcode

 

 

MediaTypeFlags

opcode(1)

opcode(1)

flags(2)

JPIPServerResponseMaxLength

opcode

opcode(1)

opcode

GrantedJPIPChannelID

 

 

server app

GrantedJPIPChannelHost

 

 

server app

GrantedJPIPChannelPath

 

 

server app

GrantedJPIPChannelPort

 

 

server app

GrantedJPIPChannelAuxport

 

 

server app

GrantedJPIPChannelTransport

 

 

server app

Model

 

 

 

EORReasonCode

 

opcode

opcode

UpdatedTiles

 

 

 

UpdatedTilesSize

 

 

 

(1)  ordinarily opcode because the server app ordinarily supplies a JPIPRequestString, however the server app may set this field instead of the opcode when the server app doesn't supply a JPIPRequestString

(2) server app may set the bit in JPIPStringFlags but does not supply a field value

 

Fields:

Name Description

Reserved0

This field is not currently used and must be set to 0.

JPIPRequestString

The server app extracts the query string out of the client's HTTP (or other transport) request and sets this field to point to that string. Call REQ_INIT and/or REQ_EXEC/JPIP_Action_Input_Request with this field set and OP_JPIPSERVER will %‑hex‑hex decode any %‑hex‑hex encodings (i.e., HTTP URL escaped characters) found in the string, parse the decoded string, set JPIPStringFlags to indicate what fields were found, return the values of those fields in the corresponding JPIP_UNION fields, and then use those values to initiate processing of the request. Set this field to NULL if the server app has parsed the query string itself and has input the values in the relevant JPIP_UNION fields and has set JPIPStringFlags to indicate those fields be used by OP_JPIPSERVER to initiate request processing. It is recommended that the server app provide this string to OP_JPIPSERVER and not set the request fields individually.

JPIPResponseString

In this field, REQ_EXEC/JPIP_Action_Output_Response returns a pointer to a string containing JPIP response headers for the server app to include in the position of HTTP response headers in the HTTP (or other transport) response structure. A server app that wishes to create its own JPIP response headers can ignore this field and instead use the JPIPStringFlags and the relevant JPIP_UNION fields indicated by those flags to find the values it needs to construct the JPIP headers itself. It is recommended that the server app use this string.

EORMessageBody

Not used by OP_JPIPSERVER.

Target

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets this field if it finds a value in the JPIPRequestString and sets JSF_TARGET in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when JSF_TARGET is set.

TargetID

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets this field if it finds a value in the JPIPRequestString and sets JSF_TARGET_ID in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when JSF_TARGET_ID is set.

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with JPIPRequestString set to NULL indicating that it has parsed the query string itself, then the server app sets this field if it found a value in the JPIPRequestString and it sets JSF_TARGET_ID in JPIPStringFlags to indicate that this field has a valid value for OP_JPIPSERVER to use to initiate processing of this request.

GrantedTargetID

The server app uses this field to provide a value to REQ_EXEC/ JPIP_Action_Output_Response to use in creating the JPIPResponseString. The server app must also set JSF_TARGET_ID in JPIPStringFlags to tell OP_JPIPSERVER to use this field; otherwise, this field is ignored for this call. Set to point to a string containing a target ID for the client to use to identify the target in future requests. Important: Set JSF_TARGET_ID in the first call to REQ_EXEC/ JPIP_Action_Output_Response and do not set in any subsequent calls.

JPIPChannelID

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets this field if it finds a value in the JPIPRequestString and sets JSF_CHANNEL_ID in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when JSF_CHANNEL_ID is set.

If the server app calls REQ_EXEC/JPIP_Action_Input_Request with JPIPRequestString set to NULL indicating that it has parsed the query string itself, then the server app sets this field if it found a value in the JPIPRequestString and it sets JSF_CHANNEL_ID in JPIPStringFlags to indicate that this field has a valid value for OP_JPIPSERVER to use to initiate processing of this request.

JPIPChannelIDsClose

If the server app calls REQ_INIT or REQ_EXEC/ JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets this field if it finds a value in the JPIPRequestString and sets JSF_CHANNEL_CLOSE in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when JSF_CHANNEL_CLOSE is set.

If the server app calls REQ_EXEC/ JPIP_Action_Input_Request with JPIPRequestString set to NULL indicating that it has parsed the query string itself, then the server app sets this field if it found a value in the JPIPRequestString and it sets JSF_CHANNEL_CLOSE in JPIPStringFlags to indicate that this field has a valid value for OP_JPIPSERVER to use to initiate processing of this request.

PicFlags

Not used.

PicFlags2

Value

Meaning

PF2_OmitPICMetaData

Set at REQ_INIT to suppress adding Accusoft informational metadata (UUID box) to the server output. It is recommended that this flag not be set.

ImageWidth

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client.  It is the width of the actual image data on the JPEG2000 reference canvas. It is returned by REQ_INIT to the server app.

ImageHeight

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client.  It is the height of the actual image data on the JPEG2000 reference canvas. It is returned by REQ_INIT to the server app.

ImageXOff

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client.  It is the horizontal offset of the top-left-corner of the actual image data on the JPEG2000 reference canvas. It is returned by REQ_INIT to the server app.

ImageYOff

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client.  It is the vertical offset of the top-left-corner of the actual image data on the JPEG2000 reference canvas. It is returned by REQ_INIT to the server app.

TileWidth

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client. It is the nominal width of image tiles on the JPEG2000 reference canvas. It is returned by REQ_INIT to the server app.

TileHeight

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client. It is the nominal height of image tiles on the JPEG2000 reference canvas. It is returned by REQ_INIT to the server app.

TileXOff

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client. It is the horizontal offset of the top-left-corner tile on the JPEG2000 reference canvas. It is returned by REQ_INIT to the server app.

TileYOff

This field is extracted from the header of the JPEG2000 image read in at the server and delivered to the client. It is the vertical offset of the top-left-corner tile on the JPEG2000 reference canvas. It is returned by REQ_INIT to the server app.

NumComponents

This field is the number of components extracted from the header of the JPEG2000 image read in at the server and delivered to the client. It is returned by REQ_INIT to the server app. A nonzero value further indicates that OP_JPIPSERVER has read enough data to return valid values for ImageWidth, ImageHeight, ImageXoff, ImageYoff, TileWidth, TileHeight, TileXoff, TileYoff, and NumComponents.

Action

Tells OP_JPIPSERVER what particular action to perform in REQ_EXEC:

Value

Meaning

JPIP_Action_Input_Request

Input and process the client's request

JPIP_Action_Output_Response

Output the server's response

EORMessageBodyLen

Not used by OP_JPIPSERVER.

JPIPStringFlags

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets one or more JSF_ flags in this field to indicate to the server app what fields OP_JPIPSERVER has found in the JPIPRequestString and will use to initiate processing of this request.

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with JPIPRequestString set to NULL indicating that it has parsed the query string itself, then the server app sets one or more JSF_ flags in this field to indicate to OP_JPIPSERVER what fields the server app wants OP_JPIPSERVER to use to initiate processing of this request.

The server app sets one or more JSF_ flags in this field to indicate to REQ_EXEC/JPIP_Action_Output_Response what fields the server app wants OP_JPIPSERVER to include in the JPIPResponseString. Set these flags when making the first call to REQ_EXEC/JPIP_Action_Output_Response and do not set them in any subsequent calls. OP_JPIPSERVER recognizes these flags only:

Value

Meaning

JSF_TARGET_ID

the server app is providing a value in TargetID to return to the client

JSF_CHANNEL_NEW

the server app is providing one or more fields to characterize the granted channel

JSF_MEDIA_TYPE

the server app will not return an HTTP Content-Type header to the client and therefore requests a JPIP-type response header be included in the JPIPResponseString; note that if this flag is set here, a value is not needed in MediaTypeFlags.

REQ_EXEC/JPIP_Action_Output_Response sets one or more JSF_ flags in this field to indicate to the server app what fields OP_JPIPSERVER has put in the JPIPResponseString.

JPIPStringFlags2

Not used.

JPIPServerStatusCode

OP_JPIPSERVER (REQ_INIT) and REQ_EXEC/JPIP_Action_Input_Request use this field to report the status of the input request processing. OP_JPIPSERVER returns JPIP_SSCode_OK if the request was good and will be serviced. OP_JPIPSERVER returns JPIP_SSCode_NotImplemented if the request was good but asked for a feature that is not currently implemented in the opcode; that unimplemented element of the request is being ignored and the remainder of the request will be serviced. If OP_JPIPSERVER encounters a problem with the request and is unable to proceed, it aborts the request and returns one of these status codes:

  • JPIP_SSCode_BadRequest
  • JPIP_SSCode_NotAcceptable
  • JPIP_SSCode_UnsupportedMediaType
  • JPIP_SSCode_InternalServerError
  • JPIP_SSCode_ServiceUnavailable

The server app can then use this field to formulate the status-code and reason-phrase of the HTTP status line of the response it sends to the client. The server app can also check PIC_PARM.Status for further details of the error condition.

JPIPChannelNumber

In this field, REQ_EXEC/JPIP_Action_Input_Request returns a number for the server app to use in subsequent calls to REQ_EXEC/JPIP_Action_Output_Response to output the response to this request. For stateless requests, this number will always be zero. Otherwise, this number is assigned by OP_JPIPSERVER when a channel is opened and then used to identify subsequent requests and responses using that channel.

This is set to indicate to REQ_EXEC/JPIP_Action_Output_Response which channel OP_JPIPSERVER is to deliver output for. It is set to the value returned from an earlier call to REQ_EXEC/JPIP_Action_Input_Request that input the request for this channel.

JPIPServerBlocksize

Tells REQ_EXEC/JPIP_Action_Output_Response to return after this many bytes have been output to the Put queue. Output can be continued by a subsequent call to REQ_EXEC/JPIP_Action_Output_Response. The server app can then perform other tasks and can make calls to REQ_EXEC/JPIP_Action_Input_Request between calls to REQ_EXEC/JPIP_Action_Output_Response.  See also the description of the EORReasonCode field.

AllowedJPIPChannelTransportsFlags

Set to inform REQ_INIT and REQ_EXEC/JPIP_Action_Input_Request about which transports the server app will allow for the client to use for a new channel. If OP_JPIPSERVER finds a match between this field and the RequestedJPIPChannelTransportsFlags found in the client's new channel request, then OP_JPIPSERVER proceeds with processing the new channel request. OP_JPIPSERVER sets this to JCF_NONE if it has determined this to be a stateless request; otherwise, it is unchanged from how the server app had set it. Set to one or more of:

Value

Meaning

JCF_DENY

Don't allow a new channel but instead treat the request as stateless

JCF_HTTP

Allow HTTP

JCF_HTTPS

Allow HTTP

JCF_HTTP_TCP

Allow combination HTTP and TCP

RequestedJPIPChannelTransportsFlags

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets this field if it finds a value in the JPIPRequestString and sets JSF_CHANNEL_NEW in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when JSF_CHANNEL_NEW is set.

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with JPIPRequestString set to NULL indicating that it has parsed the query string itself, then the server app sets this field if it found a value in the JPIPRequestString and it sets JSF_CHANNEL_NEW in JPIPStringFlags to indicate that this field has a valid value for OP_JPIPSERVER to use to initiate processing of this request.

ViewWindowFrameWidth

ViewWindowFrameHeight

ViewWindowFrameRoundDirection

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets these fields if it finds values in the JPIPRequestString and sets JSF_FRAME_SIZE in JPIPStringFlags to indicate that it found these fields in the string. These fields have valid data only when JSF_FRAME_SIZE is set.

If the server app calls REQ_EXEC/JPIP_Action_Input_Request with JPIPRequestString set to NULL indicating that it has parsed the query string itself, then the server app sets these fields if it found values in the JPIPRequestString and it sets JSF_FRAME_SIZE in JPIPStringFlags to indicate that these fields have valid values for OP_JPIPSERVER to use to initiate processing of this request.

In the fields ViewWindowFrameWidth and ViewWindowFrameHeight, REQ_EXEC/JPIP_Action_Output_Response returns values that characterize the view window it is delivering data for whenever it delivers a view window. If OP_JPIPSERVER modified these values from what had been requested by the client, it includes a JPIP response header for the fields ViewWindowFrameWidth and ViewWindowFrameHeight in JPIPResponseString and sets JSF_FRAME_SIZE in JPIPStringFlags to indicate that it has done so.

ViewWindowRegionOffsetX

ViewWindowRegionOffsetY

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets these fields if it finds values in the JPIPRequestString and sets JSF_REGION_OFFSET in JPIPStringFlags to indicate that it found these fields in the string. These fields have valid data only when JSF_REGION_OFFSET is set.

If the server app calls REQ_EXEC/JPIP_Action_Input_Request with JPIPRequestString set to NULL indicating that it has parsed the query string itself, then the server app sets these fields if it found values in the JPIPRequestString and it sets JSF_REGION_OFFSET in JPIPStringFlags to indicate that these fields have valid values for OP_JPIPSERVER to use to initiate processing of this request.

In these fields, REQ_EXEC/JPIP_Action_Output_Response returns values that characterize the view window it is delivering data for whenever it delivers a view window. If OP_JPIPSERVER modified these values from what had been requested by the client, it includes a JPIP response header for these fields in JPIPResponseString and sets JSF_REGION_OFFSET in JPIPStringFlags to indicate that it has done so.

ViewWindowRegionWidth

ViewWindowRegionHeight

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets these fields if it finds values in the JPIPRequestString and sets JSF_REGION_SIZE in JPIPStringFlags to indicate that it found these fields in the string. These fields have valid data only when JSF_REGION_SIZE is set.

If the server app calls REQ_EXEC/JPIP_Action_Input_Request with JPIPRequestString set to NULL indicating that it has parsed the query string itself, then the server app sets these fields if it found values in the JPIPRequestString and it sets JSF_REGION_SIZE in JPIPStringFlags to indicate that these fields have valid values for OP_JPIPSERVER to use to initiate processing of this request.

In these fields, REQ_EXEC/JPIP_Action_Output_Response returns values that characterize the view window it is delivering data for whenever it delivers a view window. If OP_JPIPSERVER modified these values from what had been requested by the client, it includes a JPIP response header for these fields in JPIPResponseString and sets JSF_REGION_SIZE in JPIPStringFlags to indicate that it has done so.

ViewWindowMinComponent

ViewWindowMaxComponent

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets these fields if it finds values in the JPIPRequestString and sets JSF_COMPONENTS in JPIPStringFlags to indicate that it found these fields in the string. These fields have valid data only when JSF_COMPONENTS is set.

If the server app calls REQ_EXEC/JPIP_Action_Input_Request with JPIPRequestString set to NULL indicating that it has parsed the query string itself, then the server app sets these fields if it found values in the JPIPRequestString and it sets JSF_COMPONENTS in JPIPStringFlags to indicate that these fields have valid values for OP_JPIPSERVER to use to initiate processing of this request.

In these fields, REQ_EXEC/JPIP_Action_Output_Response returns values that characterize the view window it is delivering data for whenever it delivers a view window. If OP_JPIPSERVER modified these values from what had been requested by the client, it includes a JPIP response header for these fields in JPIPResponseString and sets JSF_COMPONENTS in JPIPStringFlags to indicate that it has done so.

ViewWindowLayers

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets this field if it finds a value in the JPIPRequestString and sets JSF_LAYERS in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when JSF_LAYERS is set.

If the server app calls REQ_EXEC/JPIP_Action_Input_Request with JPIPRequestString set to NULL indicating that it has parsed the query string itself, then the server app sets this field if it found a value in the JPIPRequestString and it sets JSF_LAYERS in JPIPStringFlags to indicate that this field has a valid value for OP_JPIPSERVER to use to initiate processing of this request.

In this field, REQ_EXEC/JPIP_Action_Output_Response returns a value that characterizes the view window it is delivering data for whenever it delivers a view window. If OP_JPIPSERVER modified this value from what had been requested by the client, it includes a JPIP response header for this field in JPIPResponseString and sets JSF_LAYERS in JPIPStringFlags to indicate that it has done so.

JPIPServerResponseAlignment

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets this field if it finds a value in the JPIPRequestString and sets JSF_ALIGN in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when JSF_ALIGN is set.

If the server app calls REQ_EXEC/JPIP_Action_Input_Request with JPIPRequestString set to NULL indicating that it has parsed the query string itself, then the server app sets this field if it found a value in the JPIPRequestString and it sets JSF_ALIGN in JPIPStringFlags to indicate that this field has a valid value for OP_JPIPSERVER to use to initiate processing of this request.

JPIPServerRequestWait

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets this field if it finds a value in the JPIPRequestString and sets JSF_WAIT in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when JSF_WAIT is set.

If the server app calls REQ_EXEC/JPIP_Action_Input_Request with JPIPRequestString set to NULL indicating that it has parsed the query string itself, then the server app sets this field if it found a value in the JPIPRequestString and it sets JSF_WAIT in JPIPStringFlags to indicate that this field has a valid value for OP_JPIPSERVER to use to initiate processing of this request.

DefaultMediaType

Set to inform OP_JPIPSERVER (REQ_INIT) about what media type OP_JPIPSERVER should default to if the client does not request one. If the client does request a media type, then this field is the type that the server app wants OP_JPIPSERVER to honor. OP_JPIPSERVER (REQ_INIT) returns this field set to the media type actually used if the server app sets it to JTF_NONE. Set to one of these values:

Value

Meaning

JTF_NONE

Let opcode use its own default

(currently, jpp-stream)

JTF_JPP

jpp-stream (preferred)

JTF_JPP_EXT

jpp-stream extended form

JTF_JPT

jpt-stream

JTF_JPT_EXT

jpt-stream extended form

MediaTypeFlags

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets this field if it finds a value in the JPIPRequestString and sets JSF_MEDIA_TYPE in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when JSF_MEDIA_TYPE is set.

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with JPIPRequestString set to NULL indicating that it has parsed the query string itself, then the server app sets this field if it found a value in the JPIPRequestString and it sets JSF_MEDIA_TYPE in JPIPStringFlags to indicate that this field has a valid value for OP_JPIPSERVER to use to initiate processing of this request.

JPIPServerResponseMaxLength

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with a JPIPRequestString, then OP_JPIPSERVER sets this field if it finds a value in the JPIPRequestString and sets JSF_MAX_LENGTH in JPIPStringFlags to indicate that it found this field in the string. This field has valid data only when JSF_MAX_LENGTH is set.

If the server app calls REQ_INIT or REQ_EXEC/JPIP_Action_Input_Request with JPIPRequestString set to NULL indicating that it has parsed the query string itself, then the server app sets this field if it found a value in the JPIPRequestString and it sets JSF_MAX_LENGTH in JPIPStringFlags to indicate that this field has a valid value for OP_JPIPSERVER to use to initiate processing of this request.

In this field, REQ_EXEC/JPIP_Action_Output_Response returns a value that characterizes the response. If OP_JPIPSERVER modified this value from what had been requested by the client, it includes a JPIP response header for this field in JPIPResponseString and sets JSF_MAX_LENGTH in JPIPStringFlags to indicate that it has done so. For example, OP_JPIPSERVER changes any nonzero requested value less than 64 to 64.

GrantedJPIPChannelID

The server app uses this field to provide a value to REQ_EXEC/JPIP_Action_Output_Response to use in creating the JPIPResponseString. The server app must also set JSF_CHANNEL_NEW in JPIPStringFlags to tell OP_JPIPSERVER to use this field.  Otherwise, this field is ignored for this call. Set to point to a string containing a channel ID for the client to use to identify the channel in future requests to this channel. Important: Set JSF_CHANNEL_NEW in the first call to REQ_EXEC/JPIP_Action_Output_Response and do not set in any subsequent calls.

GrantedJPIPChannelHost

The server app uses this field to provide an optional value to REQ_EXEC/JPIP_Action_Output_Response to use in creating the JPIPResponseString. The server app must also set JSF_CHANNEL_NEW in JPIPStringFlags to tell OP_JPIPSERVER to use this field.  Otherwise, this field is ignored for this call. Set to point to a string containing the name or IP address of the host to use for requests to this channel.  Set to NULL if the host does not need to change and therefore this value does not need to be included in the response.

GrantedJPIPChannelPath

The server app uses this field to provide an optional value to REQ_EXEC/JPIP_Action_Output_Response to use in creating the JPIPResponseString. The server app must also set JSF_CHANNEL_NEW in JPIPStringFlags to tell OP_JPIPSERVER to use this field.  Otherwise, this field is ignored for this call. Set to point to a string containing the path component of the URL to use for requests to this channel.  Set to NULL if the path does not need to change and therefore this value does not need to be included in the response.

GrantedJPIPChannelPort

The server app uses this field to provide an optional value to REQ_EXEC/JPIP_Action_Output_Response to use in creating the JPIPResponseString. The server app must also set JSF_CHANNEL_NEW in JPIPStringFlags to tell OP_JPIPSERVER to use this field.  Otherwise, this field is ignored for this call. Set to the port number to use for requests to this channel.  Set to 0 if the port does not need to change and therefore this value does not need to be included in the response.

GrantedJPIPChannelAuxport

The server app uses this field to provide an optional value to REQ_EXEC/JPIP_Action_Output_Response to use in creating the JPIPResponseString. The server app must also set JSF_CHANNEL_NEW in JPIPStringFlags to tell OP_JPIPSERVER to use this field.  Otherwise, this field is ignored for this call. Set to an auxiliary port number, if needed, to use for requests to this channel.  Set to 0 if the auxiliary port does not need to change or be specified and therefore this value does not need to be included in the response.

GrantedJPIPChannelTransport

The server app uses this field to provide an optional value to REQ_EXEC/JPIP_Action_Output_Response to use in creating the JPIPResponseString. The server app must also set JSF_CHANNEL_NEW in JPIPStringFlags to tell OP_JPIPSERVER to use this field.  Otherwise, this field is ignored for this call. Set to the transport protocol to use for requests to this channel (one of JCF_HTTP, JCF_HTTPS, or JCF_HTTP_TCP).  Set to 0 if the transport does not need to be specified and therefore this value does not need to be included in the response.

Model

Reserved for internal and future use.

EORReasonCode

REQ_EXEC/JPIP_Action_Output_Response uses this field to indicate the reason for its return. It sets this field to JPIP_EOR_None if it returned because JPIPServerBlocksize bytes have been output before the end of the response was reached; otherwise, all data has been output and OP_JPIPSERVER sets this field to the same value it used for the EOR reason code that it appended to the end of the response. Possible values are:

  • JPIP_EOR_ImageDone
  • JPIP_EOR_WindowDone
  • JPIP_EOR_ByteLimitReached
  • JPIP_EOR_QualityLimitReached
  • JPIP_EOR_UnspecifiedReason

REQ_EXEC/JPIP_Action_Input_Request sets this field to JPIP_EOR_WindowChange (and outputs three bytes to the Put queue) whenever a new request is input that is preempting the current response in progress for this channel. The additional bytes available in the Put queue provide the EOR reason code that had not yet been output but is now needed to terminate that current response in progress for this channel.

Reserved

This field is not currently used and must be set to 0.

UpdatedTiles

UpdatedTilesSize

Not used by OP_JPIPSERVER.

JPEG2000FileFormat

This field reports the JPEG2000 file format of the JPEG2000 image read in at the server and delivered to the client. It is returned by REQ_INIT to the server app. JPX is not currently supported.

Value

Meaning

JPEG2000FileFormat_J2K

Input/Output is a JPEG2000 raw codestream image.

JPEG2000FileFormat_JP2

Input/Output is a JPEG2000 JP2 file format image.

JPEG2000FileFormat_JPX

Input is a JPEG2000 JPX file format image.

JPEG2000Profile

This field reports the JPEG2000 profile as determined from indicators in the JPEG2000 image read in at the server and delivered to the client. It is returned by REQ_INIT to the server app. See the JPEG2000 ISO standard for more information about these profiles. Part-2 is not currently supported.

Value

Meaning

JPEG2000Profile_None

No profile - no restrictions (Part-1)

JPEG2000Profile_0

Profile-0 - most restrictive (Part-1)

JPEG2000Profile_1

Profile-1 - some restrictions (Part-1)

JPEG2000Profile_2

Same as JPEG2000Profile_None

JPEG2000Profile_Part2_Full

Requires full capabilities of JPEG2000 Part-2

JPEG2000Profile_Part2_JPXBaseline

Conforms to JPEG2000 JPX baseline (Part-2)

 

 


©2022. Accusoft Corporation. All Rights Reserved.

Send Feedback