Bagikan melalui


struktur WS_CHANNEL_DECODER (webservices.h)

Struktur yang digunakan untuk menentukan sekumpulan panggilan balik yang dapat mengubah jenis konten dan byte yang dikodekan dari pesan yang diterima.

Sintaks

typedef struct _WS_CHANNEL_DECODER {
  void                                 *createContext;
  WS_CREATE_DECODER_CALLBACK           createDecoderCallback;
  WS_DECODER_GET_CONTENT_TYPE_CALLBACK decoderGetContentTypeCallback;
  WS_DECODER_START_CALLBACK            decoderStartCallback;
  WS_DECODER_DECODE_CALLBACK           decoderDecodeCallback;
  WS_DECODER_END_CALLBACK              decoderEndCallback;
  WS_FREE_DECODER_CALLBACK             freeDecoderCallback;
} WS_CHANNEL_DECODER;

Anggota

createContext

Konteks yang akan diteruskan ke WS_CREATE_DECODER_CALLBACK.

createDecoderCallback

Panggilan balik WS_CREATE_DECODER_CALLBACK yang membuat instans dekoder.

decoderGetContentTypeCallback

Panggilan balik WS_DECODER_GET_CONTENT_TYPE_CALLBACK yang dipanggil untuk mendapatkan jenis konten pesan.

decoderStartCallback

Panggilan balik WS_DECODER_START_CALLBACK yang dipanggil pada awal pendekodean pesan.

decoderDecodeCallback

Panggilan balik WS_DECODER_DECODE_CALLBACK yang dipanggil untuk mendekode pesan.

decoderEndCallback

Panggilan balik WS_DECODER_END_CALLBACK yang dipanggil di akhir pendekodean pesan.

freeDecoderCallback

Panggilan balik WS_FREE_DECODER_CALLBACK yang membebaskan instans dekoder.

Keterangan

WS_CHANNEL mungkin ingin mendekompresi, memodifikasi, atau mengubah byte pesan yang dikodekan segera setelah diterima. WS_CHANNEL_DECODER menyediakan kait yang diperlukan untuk mencegat dan melakukan modifikasi ini.

Saat membuat saluran, WS_CHANNEL_PROPERTY_DECODER harus diatur dengan fungsi yang sesuai.

Panggilan balik yang ditentukan akan dipanggil sesuai dengan tata bahasa berikut:


decodercalls := create decoderloop* free
decoderloop  := decodestart
             |  decodestart getcontenttype
             |  decodestart getcontenttype (decode*)
             |  decodestart getcontenttype (decode*) decodeend

Dekoder mungkin tidak melihat urutan dekode lengkap untuk pesan jika saluran atau dekoder mengalami kesalahan saat membaca pesan. Dekoder harus siap untuk menangani transisi ke status yang sesuai berdasarkan panggilan balik yang dipanggil.

Saat menggunakan WS_TCP_CHANNEL_BINDING dengan WS_CHANNEL_TYPE_SESSION, jenis konten diperbaiki untuk saluran. Dalam hal ini, WS_DECODER_GET_CONTENT_TYPE_CALLBACK harus mengembalikan nilai yang sama persis untuk jenis konten setiap pesan.

WS_DECODER_END_CALLBACK tidak akan dipanggil sampai WS_DECODER_DECODE_CALLBACK mengembalikan 0 byte.

Ketika saluran selesai menggunakan instans decoder, saluran akan membebaskannya melalui WS_FREE_DECODER_CALLBACK.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 R2 [hanya aplikasi desktop]
Header webservices.h