/* * Copyright 2011-2012 GRNET S.A. All rights reserved. * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * 1. Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. * * 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * The views and conclusions contained in the software and * documentation are those of the authors and should not be * interpreted as representing official policies, either expressed * or implied, of GRNET S.A. */ @namespace("gr.grnet.aquarium.message.avro.gen") protocol AquariumUserState { import idl "aquarium-policy.avdl"; import idl "aquarium-anyvalue.avdl"; import idl "aquarium-events.avdl"; record UserAgreementMsg { string id; union {string, null} relatedIMEventID; long @order("ascending") validFromMillis; long validToMillis; string role; union {FullPriceTableMsg, null} fullPriceTableRef; // If null, then get from aquarium policy } record WorkingResourceInstanceChargingStateMsg { map details; array previousEvents; array implicitlyIssuedStartEvents; double accumulatingAmount; double oldAccumulatingAmount; double previousValue; double currentValue; } record WorkingResourcesChargingStateMsg { map details; map stateOfResourceInstance; } record WorkingAgreementHistoryMsg { array agreements; } record ChargeslotMsg { long startMillis; long stopMillis; double unitPrice; string explanation = ""; double creditsToSubtract; } record WalletEntryMsg { string userID; double sumOfCreditsToSubtract; double oldTotalCredits; double newTotalCredits; long whenComputedMillis; long referenceStartMillis; long referenceStopMillis; int billingYear; int billingMonth; int billingDay; array chargeslots; array resourceEvents; // current is the last one ResourceTypeMsg resourceType; boolean isSynthetic = false; } record WorkingUserStateMsg { string userID; union {string, null} parentUserStateIDInStore; map resourceTypesMap; map workingStateOfResources; double totalCredits; WorkingAgreementHistoryMsg workingAgreementHistory; long latestUpdateMillis; long latestResourceEventOccurredMillis; long billingPeriodOutOfSyncResourceEventsCounter; array walletEntries; } }