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. Pengkompilasi MIDL menggunakan file IDL aplikasi untuk menghasilkan prosedur penarikan server secara otomatis.

Setiap kali program server memanggil prosedur penarikan dalam stub-nya, prosedur penarikan menerima blok data dari klien. Ini membatalkan amarshal 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 berasal dari program Pipedemo yang terkandung dalam sampel yang disertakan dengan Kit Pengembangan Perangkat Lunak Platform (SDK). Ini menggambarkan 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