diff options
Diffstat (limited to 'docs/modules/ROOT/pages/examples/telecom/Billing.java')
-rw-r--r-- | docs/modules/ROOT/pages/examples/telecom/Billing.java | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/docs/modules/ROOT/pages/examples/telecom/Billing.java b/docs/modules/ROOT/pages/examples/telecom/Billing.java deleted file mode 100644 index 651d64b36..000000000 --- a/docs/modules/ROOT/pages/examples/telecom/Billing.java +++ /dev/null @@ -1,73 +0,0 @@ -/* -Copyright (c) Xerox Corporation 1998-2002. All rights reserved. - -Use and copying of this software and preparation of derivative works based -upon this software are permitted. Any distribution of this software or -derivative works must comply with all applicable United States export control -laws. - -This software is made available AS IS, and Xerox Corporation makes no warranty -about the software, its performance or its conformity to any specification. -*/ - -package telecom; -/** - * The Billing aspect deals with... billing. - * How much money did each connection cost? - * How much money did each call cost? - * How much money is being debited to a customer? - * This aspect can be used by other parts of the system. (not in this example) - * - * Billing can depend many things, such as timing, the type of the connection, - * some special discounts the customer has, special features, etc. In here, - * it depends only on timing and on the type of the connection. - */ -public aspect Billing { - // precedence required to get advice on endtiming in the right order - declare precedence: Billing, Timing; - - public static final long LOCAL_RATE = 3; - public static final long LONG_DISTANCE_RATE = 10; - - public Customer Connection.payer; - public Customer getPayer(Connection conn) { return conn.payer; } - /** - * Caller pays for the call - */ - after(Customer cust) returning (Connection conn): - args(cust, ..) && call(Connection+.new(..)) { - conn.payer = cust; - } - - /** - * Connections give the appropriate call rate - */ - public abstract long Connection.callRate(); - - - public long LongDistance.callRate() { return LONG_DISTANCE_RATE; } - public long Local.callRate() { return LOCAL_RATE; } - - - /** - * When timing stops, calculate and add the charge from the - * connection time - */ - after(Connection conn): Timing.endTiming(conn) { - long time = Timing.aspectOf().getTimer(conn).getTime(); - long rate = conn.callRate(); - long cost = rate * time; - getPayer(conn).addCharge(cost); - } - - - /** - * Customers have a bill paying aspect with state - */ - public long Customer.totalCharge = 0; - public long getTotalCharge(Customer cust) { return cust.totalCharge; } - - public void Customer.addCharge(long charge){ - totalCharge += charge; - } -} |