1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22/* 23 * db_vers_c.x 24 * 25 * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 26 * Use is subject to license terms. 27 */ 28 29%#pragma ident "%Z%%M% %I% %E% SMI" 30 31#if RPC_HDR 32%#ifndef _DB_VERS_H 33%#define _DB_VERS_H 34#endif /* RPC_HDR */ 35 36%/* 'vers' is the version identifier. */ 37 38% 39%#include "nisdb_rw.h" 40% 41#if RPC_HDR || RPC_XDR 42#ifdef USINGC 43struct vers { 44 u_int vers_high; 45 u_int vers_low; 46 u_int time_sec; 47 u_int time_usec; 48 __nisdb_rwlock_t vers_rwlock; 49}; 50#endif /* USINGC */ 51#endif /* RPC_HDR */ 52 53#ifndef USINGC 54#ifdef RPC_HDR 55%class vers { 56% unsigned int vers_high; /* major version number, tracks checkpoints */ 57% unsigned int vers_low; /* minor version number, tracks updates. */ 58% unsigned int time_sec; /* time stamp */ 59% unsigned int time_usec; 60% STRUCTRWLOCK(vers); 61% public: 62%/* No argument constructor. All entries initialized to zero. */ 63% vers() { 64% vers_high = vers_low = time_sec = time_usec = 0; 65% INITRW(vers); 66% } 67% 68%/* Constructor that makes copy of 'other'. */ 69% vers( vers *other ); 70% 71%/* Constructor: create version with specified version numbers */ 72% vers( unsigned int high, unsigned int low) { 73% vers_high = high; vers_low = low; time_sec = time_usec = 0; 74% INITRW(vers); 75% } 76% 77%/* Creates new 'vers' with next higher minor version. 78% If minor version exceeds MAXLOW, bump up major version instead. 79% Set timestamp to that of the current time. */ 80% vers* nextminor(); 81% 82%/* Creates new 'vers' with next higher major version. 83% Set timestamp to that of the current time. */ 84% vers* nextmajor(); 85% 86%/* Set this 'vers' to hold values found in 'others'. */ 87% void assign( vers *other ); 88% 89%/* Predicate indicating whether this vers is earlier than 'other' in 90% terms of version numbers. */ 91% bool_t earlier_than( vers *other ); 92% 93%/* Print the value of this 'vers' to specified file. */ 94% void print( FILE *file ); 95% 96%/* Zero out this vers. */ 97% void zero(); 98% 99%/* Predicate indicating whether this vers is equal to 'other'. */ 100% bool_t equal( vers *other); 101% 102%/* Locking methods */ 103% 104% int acqexcl(void) { 105% return (WLOCK(vers)); 106% } 107% 108% int relexcl(void) { 109% return (WULOCK(vers)); 110% } 111% 112% int acqnonexcl(void) { 113% return (RLOCK(vers)); 114% } 115% 116% int relnonexcl(void) { 117% return (RULOCK(vers)); 118% } 119%}; 120#endif /* RPC_HDR */ 121#endif /* USINGC */ 122 123#if RPC_HDR 124%#endif /* VERS_H */ 125#endif /* RPC_HDR */ 126