| Standard Cloud Session Management Service

Standard Cloud Session Management Service

The Standard Cloud Session Management service is an original implementation of various objects dedicated to the management of events eventually associated with a session controller. In its classical way, the objects can be used to manage an agenda, schedule events and perform associated actions. In a more elaborated way, a session group can be used to manage different group of objects bound to one or several users or groups.

General concepts

The `afnix-csm` provides the support for manipulating cloud session data. Information data are generally personal information that are used to manage time and constraints or global session information bound to one or several users. In the time domain, the session management is related to the concept of time slot and agenda.

Slot

The concept of slot is central in the csm service. A slot is a combination of time and duration. A slot is allocated by an appointer to indicate the next available slot. For an agenda, the concept of slot can be derived to describe an appointment.

Appointer

An appointer is a slot generator. The appointer can be designed to respond automatically with respect to a certain number of rules. Common rules found in an appointer are closed days like week-end and time allocation period.

Assistant

An assistant is a combination of csm object like appointers. An assistant can be used for example, to manage several appointers.

Appointer operations

The `Appointer` class is designed to allocate slots with respect to a certain duration or from a certain time with a duration. The appointer operates with rules which describe the operating calendar and daily schedule. such rules are designed to mimic real-life situations like week-end blocked days or Christmas vacation day.

Slot allocation

A slot is allocated with the `get-slot` method. This method is common to the `Appointer` and `Assistant` classes.

In the example above, a 1 hour slot is allocated at the current appointer time. Note that the time and duration are always given in seconds. If the slot needs to be allocated starting at a certain time, the 2 arguments form can be used.

In the presence of an `Assistant` object the `get-slot` is the same but selects the appropriate appointer with the help of an internal index which rotated after each call. This method permits an equal distribution for all appointers within an assistant.

Appointer rules

There are basically, two types of appointer's rules. The first type of rule is used for blocking a day as a whole. The second type of rule is designed to describe valid periods of allocation time. The first type of rules is called the and rules since all rules must be valid in order to allocate a slot at the requested time. The second type is a called the or rules since only one rule needs to be valid in order to allocate a slot.

The example above defines an appointer object. The first 2 rules defines Saturday and Sunday as blocked days. The other 2 rules, defines Jan 1st and Dec 25th as special days. No slot can be allocated in a blocked or special day.

the above example defines two valid periods for allocating time. The first period runs from 8AM to 12AM and the second one runs from 2PM to 6PM. Note that the time is also expressed in second. The time arguments are always rounded to the maximum number of seconds per day.

Assistant operations

An assistant object is build by adding object to it. In general, a reference object is created, and several of them are added to the assistant by cloning the reference object.

Assistant integration

Once an assistant object has been created, the object can be added by cloning.

In the case of an `Appointer` object, the appointer is cloned with all its rules attached to it. This method is particularly useful when an assistant needs to be setup for several person that shares the same calendar.

Standard Cloud Session Management Reference

Slot

The `Slot` class is a base class designed to handle a basic time slot event. The class is defined with a date and a duration. The slot class is primarily used to build an agenda.

Predicate

    slot-p

Inheritance

    Object

Constructors

Slot (none)

The Slot constructor creates an empty slot initialized at time 0 with duration 0.

Slot (Integer Integer)

The Slot constructor creates a slot with a time and duration. The first argument is the slot time. The second argument is the slot duration.

Methods

reset (→ none) (none)

The reset method reset the slot to time 0 with duration 0.

set-time (→ none) (Integer)

The set-time method sets the slot time.

get-time (→ Integer) (none)

The get-time method returns the slot time.

set-duration (→ none) (Integer)

The set-duration method sets the slot duration.

get-duration (→ Integer) (none)

The get-duration method returns the slot duration.

set-slot (→ none) (Integer Integer)

The set-slot method sets the slot time and duration at once. The first argument is the slot time. The second argument is the slot duration.

Appointer

The `Appointer` class is a class design to allocate time slot in a calendar in order to fill an agenda. The appointer do not store the slot but rather acts as a generator. the appointer algorithm operates with rules that permits to allocate the next available slot. The basic rules permits to define regular blocked days and special blocked days. Another rule permits to define an operating time period. Multiple time periods are allowed. A maximum daily slots rule is also available.

Predicate

    appointer-p

Inheritance

    Object

Constructors

Appointer (none)

The Appointer constructor creates a default appointer initialized at time 0. There is no rule installed by the constructor.

Appointer (Integer)

The Appointer constructor creates an appointer with an initial time. The time is set as he starting time to allocate slots. There is no rule installed by the constructor.

Methods

reset (→ none) (none)

The reset method reset the appointer slot number and daily slot counter. The rules are not touched by this method.

set-time (→ none) (Integer)

The set-time method set the appointer time. During the next operation, the newly allocated slots have their time starting at least at this time.

get-time (→ Integer) (none)

The get-time method returns the current appointer time.

set-date (→ none) (Date)

The set-date method set the appointer time by converting the date argument to a time.

get-date (→ Integer) (none)

The get-date method returns the current appointer date.

get-slot (→ Slot) (Integer|Integer Integer)

The get-slot method returns a new slot allocated by the appointer. with one argument the argument is taken as the slot duration. With 2 arguments, the first arguments is the requested slot time and the second argument is the slot duration. The slot allocation algorithm operates by finding the appropriate day and time which satisfies the appointer rules. If the slot cannot be found within one week, the allocation is assumed to have failed.

get-slot-number (→ Integer) (none)

The get-slot-number method returns the total number of slots allocated by the appointer.

set-blocked-day (→ none) (Integer)

The set-blocked-day method sets a regular weekly block day. The method uses the week day index as its argument. Sunday has index 0 and Saturday has index 6. No slot is allocated in a blocked day.

set-special-day (→ none) (Integer Integer)

The set-special-day method sets a special year day. The method uses the year month and the month day index as its arguments. The first argument is the year month which must be in the range of 1 to 12. The second argument is the month day which must be in the range of 1 to 31. No slot is allocated in a special day.

set-maximum-slots (→ none) (Integer)

The set-maximum-slots method sets a daily maximum slots number. When the daily maximum slot number is reached, the slot allocation proceed to the next day.

set-valid-block-time (→ none) (Integer Integer)

The set-valid-block-time method sets a valid block time in which the slot can be allocated. By default, a slot can be allocated anytime during the day. When this rule is set, at least once, the slot is allocated in this block. Multiple valid block time can be defined. The first argument is the valid block time lower bound expressed in seconds from 12PM. The second argument is the valid block time upper bound. All time are expressed in seconds and rounded to a day second which is 84600 seconds in 24 hours. For example, a valid block time is from 8AM to 12AM. Another would be from 2PM to 6PM.

Assistant

The `Assistant` class class is a generic class designed to hold various csm component and manage them like an assistant will do. For example, the class can store several `Appointer` objects and distribute slot for all of them.

Predicate

    assistant-p

Inheritance

    Object

Constructors

Assistant (none)

The Assistant constructor creates a default assistant.

Assistant (String)

The Assistant constructor creates a default assistant by name.

Assistant (String String)

The Assistant constructor creates a default assistant by name and information. The first argument is the assistant name. the second argument is the assistant information string.

Methods

reset (→ none) (none)

The reset method reset the assistant by. All objects attached to the assistant are reset by this method.

get-name (→ String) (none)

The get-name method returns the assistant name.

get-info (→ String) (none)

The get-info method returns the assistant information string.

pushback (→ none) (Slot)

The pushback method pushbaks a slot in the appointer list. The assistant manages internally an index which is used to select the appointer where the slot is pushed-back.

get-slot (→ Slot) (Integer|Integer Integer)

The get-slot method returns he next available slot from the appointer list. The assistant manages internally an index which is used to select the appointer from which the slot is obtained. With one argument, the method operates with a slot duration. with 2 arguments, the method operates by time and duration. The time is the minimum time for which the slot is allocated. If the slot cannot be allocated, an exception is raised.

add-appointer (→ none) (Appointer)

The add-appointer method adds an appointer object to the assistant.

get-appointer (→ Appointer) (Integer)

The get-appointer method returns an appointer object by index. If the appointer object cannot be found, an exception is raised.

length-appointer (→ Integer) (none)

The length-appointer method returns the number of appointers attached to the assistant.

get-slot-number (→ Integer) (none)

The get-slot-number method returns the total number of slot allocated by the assistant at the time of the call. The number is computed by summing all slot numbers for each appointers. attached to the assistant.

get-appointer-time (→ Integer) (none)

The get-appointer-time method returns the average appointer time for the attached appointers. At the time of the call, each appointer has a time which corresponds to the next slot available time. The average time for all appointers is the result of this method which corresponds to the average time of the next available slot.

Session

The `Session` class that defines a session to be associated with a cloud transaction. The session object is designed to be persistent so that its data information can be retrieved at any time. A session object has also the particularity to have a limited lifetime. A session object is created by name with an identifier. If a path is given, such path will be used as the session file name.

Predicate

    session-p

Inheritance

    Serial

Constructors

Session (String)

The Session constructor creates a session by name. The string argument is the session name.

Session (String String)

The Session constructor creates a session with a name and a user. The first argument is the session name. The second argument is the user name.

Session (String String Integer)

The Session constructor creates a session with a name, a user and a maximum age. The first argument is the session name. The second argument is the session user name. The third argument is the session maximum age expressed in seconds.

Methods

expire-p (→ Boolean) (none)

The expire-p predicate returns true if the session has expired.

get-name (→ String) (none)

The get-name method returns the session name.

set-user (→ none) (String)

The set-user method sets the session user name.

get-session-rid (→ String) (none)

The get-session-rid method returns the session rid.

set-session-rid (→ none) (String)

The set-session-rid method sets the session rid.

get-user (→ String) (none)

The get-user method returns the session user name.

set-hash-id (→ none) (String)

The set-hash-id method sets the session hash identifier. The session hash id must be unique and secured enough so that the session name cannot be derived from it.

get-hash-id (→ String) (none)

The get-hash-id method returns the session hash identifier.

set-path (→ none) (String)

The set-path method sets the session path.

get-path (→ String) (none)

The get-path method returns the session path.

get-max-age (→ Integer) (none)

The get-max-age method returns the session maximum age.

set-max-age (→ none) (Integer)

The set-max-age method sets the session maximum age. The maximum age is an integer in seconds relative to the current time. If the maximum age is set to 0, the session is closed.

get-remaining-time (→ Integer) (none)

The get-remaining-time method returns the remaining valid session time.

get-expire-time (→ Integer) (none)

The get-expire-time method returns the session expiration time in seconds. The expiration time is an absolute time.

set-expire-time (→ none) (Integer)

The set-expire-time method sets the session expiration time. The expiration time is an absolute time in seconds.

get-creation-time (→ Integer) (none)

The get-creation-time method returns the session creation time. The creation time is an absolute time in seconds.

get-modification-time (→ Integer) (none)

The get-modification-time method returns the session creation time. The modification time is an absolute time in seconds.

get-cookie (→ Cookie) (name)

The get-cookie method bakes a session cookie. The string argument is the cookie name those value is the session hash id value.

close (→ Cookie) (name)

The close method close a session by reseting the session maximum age to 0. The method returns a cookie that can be used for closing the session on the peer side. The string argument is the cookie name those value is the session hash id value.