Provided by: afnix_2.5.1-1_amd64 bug

NAME

       csm - 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.

       # allocate a 1 hour slot
       const slot (appt:get-slot 3600)

       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.

       # allocate a 1 hour slot starting at 2AM
       const slot (appt:get-slot 7200 3600)

       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.

       # create a reference appointer
       const appt (afnix:csm:Appointer)
       # add a saturday and sunday blocked day rule
       appt:set-blocked-day 6
       appt:set-blocked-day 0
       # set the special days
       appt:set-special-day  1  1
       appt:set-special-day 12 25

       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.

       # set a valid block time between 8AM to 12AM
       const ambt (* 3600 8)
       const amet (* 3600 12)
       const pmbt (* 3600 14)
       # set a valid block time between 2PM to 6PM
       const pmet (* 3600 18)
       appt:set-valid-block-time ambt amet
       appt:set-valid-block-time pmbt pmet

       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.

       # create an assistant
       const name "Mr Smith"
       const info "The super assistant"
       const asst (afnix:csm:Assistant name info)
       # create a reference appointer
       const appt (afnix:csm:Appointer)
       # add 2 appointers by cloning
       asst:add-appointer (appt:clone)
       asst:add-appointer (appt:clone)

       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.