/* @(#)85	1.3  src/examples/svc/timop_svc/timop_svc.idl, examples.src, os2dce21.dss, 960602a.1 8/13/95 14:32:39 
 *
 * COMPONENT_NAME:  examples.src
 *
 * FUNCTIONS: none
 *
 * ORIGINS: 72
 *
 * (C) COPYRIGHT International Business Machines Corp. 1995
 *  All Rights Reserved
 *  Licensed Materials - Property of IBM
 *
 *  US Government Users Restricted Rights - Use, duplication or
 *  disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 *
 * @OSF_COPYRIGHT@
 * COPYRIGHT NOTICE
 * Copyright (c) 1990, 1991, 1992, 1993, 1994 Open Software Foundation, Inc.
 * ALL RIGHTS RESERVED (DCE).  See the file named COPYRIGHT.DCE in the
 * src directory for the full copyright text.
 *
 */

/*
**	timop_svc.idl
**
**	IDL interface specification for remote time operations.
*/

/* We need explicit handles in timop because our client has multiple (actually,
   multi-threaded) RPCs bound to multiple explicitly-specified servers. */

[
uuid(0037ca63-2629-1de2-99b0-08002b0f59ba),
version(1.0)
]
interface timop_svc
{
	/* DTS timestamps are already in a universal format,
	   so are opaque to (the presentation layer of) the RPC
	   (16 = sizeof(utc_t)). */
	const small		SIZEOF_TIMESTAMP = 16;
	typedef byte		timestamp_t[SIZEOF_TIMESTAMP];

	const small		MESSAGE_SIZE = 80;

	/* Failure value for remote status indications. */
	const long		TIMOP_SVC_ERR = -1;

	/* Get the time span to do a job (random factorial). */
	[idempotent]
	void timop_svc_getspan(
		[in]	handle_t		handle,
		[in]	long			rand,
		[in,out,string] char		server_msg[MESSAGE_SIZE],
		[out]	timestamp_t		timestamp,
		[out]	long			*status_p,
		[in,out] error_status_t		*remote_status_p);

}
