aboutsummaryrefslogtreecommitdiffstats
path: root/docs/modules/ROOT/pages/examples/telecom/Billing.java
diff options
context:
space:
mode:
Diffstat (limited to 'docs/modules/ROOT/pages/examples/telecom/Billing.java')
-rw-r--r--docs/modules/ROOT/pages/examples/telecom/Billing.java73
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;
- }
-}