Menerapkan Pipa Input di Server
Untuk mulai mengirim data ke server, klien memanggil salah satu prosedur jarak jauh server. Prosedur ini harus berulang kali memanggil prosedur penarikan di stub server. Kompiler MIDL menggunakan file IDL dari aplikasi untuk secara otomatis menghasilkan prosedur pull server.
Setiap kali program server memanggil prosedur penarikan di stub-nya, prosedur penarikan menerima blok data dari klien. Ini mengurai dan menyimpan data ke dalam buffer server. Prosedur jarak jauh server kemudian dapat memproses data ini dengan cara apa pun yang diperlukan. Perulangan berlanjut sampai server menerima buffer dengan panjang nol.
Contoh berikut adalah dari program Pipedemo yang terkandung dalam sampel yang disertakan dengan Kit Pengembangan Perangkat Lunak Platform (SDK). Ini mengilustrasikan prosedur server jarak jauh yang menggunakan pipa untuk menarik data dari klien ke server.
//file: server.c (fragment)
#include uc_server.c
#define PIPE_TRANSFER_SIZE 100 /* Transfer 100 pipe elements at one time */
void InPipe(LONG_PIPE long_pipe )
{
long local_pipe_buf[PIPE_TRANSFER_SIZE];
ulong actual_transfer_count = PIPE_TRANSFER_SIZE;
while(actual_transfer_count > 0) /* Loop to get all
the pipe data elements */
{
long_pipe.pull( long_pipe.state,
local_pipe_buf,
PIPE_TRANSFER_SIZE,
&actual_transfer_count);
/* process the elements */
} // end while
} //end InPipe