
  PROCEDURE [INLINE] dfp$fetch_server_state
    (    server_descriptor_p: dmt$p_server_descriptor;
     VAR server_state: dft$server_state);

    VAR
      index_valid: boolean,
      served_family_table_index:  dft$served_family_table_index,
      status: ost$status;


    status.normal := TRUE;
    served_family_table_index := server_descriptor_p^.header.served_family_table_index;

    index_valid := dfv$served_family_table_root.valid AND (dfv$served_family_table_root.
          number_of_active_pointers >= served_family_table_index.pointers_index) AND
          (dfv$served_family_table_root.p_family_list_pointer_array^
          [served_family_table_index.pointers_index].highest_valid_entry >= served_family_table_index.
          family_list_index);

    IF index_valid THEN
      server_state := dfv$served_family_table_root.p_family_list_pointer_array^
            [served_family_table_index.pointers_index].p_served_family_list^
            [served_family_table_index.family_list_index].server_state;
    ELSE
      osp$system_error ('Index not valid into served_family_table: DFP$FETCH_SERVER_STATE', ^status);
    IFEND;

  PROCEND dfp$fetch_server_state;

?? PUSH (LISTEXT := ON) ??
*copyc dft$server_state
*copyc dmt$server_descriptor
*copyc dfv$served_family_table_root
*copyc ost$status
*copyc osp$system_error
?? POP ??
