Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The CloudOS Subscription Event Protocol provides an event based model for managing subscriptions between Personal Clouds. The current implementation of the protocol will create a symmetric relationship between both Personal Clouds. In addition, the target Personal Cloud will automatically create (approve) the subscription request from the originating Personal Cloud. In other words there is no user approval required. Optional user approval is the next major feature that will be added to the Subscription Event Protocol specification. In order to used the Subscription Event Protocol the CloudOS ruleset must be installed in the Personal Cloud for both the originating and target.

...

The system:subscribe event is used to create a Personal Channel between two Personal Clouds.

  • domain: systemcloudos
  • type: subscribe
  • attributes:
    • channelName
    • namespace
    • relationship
    • targetChannel
  • The channelName attribute is a label associated with the subscription that should convey meaning to developer. The channelName is only used as a component in the creation of the channel token. If no channelName is specified the value of "orphan" will be used.
  • The namespace attribute is provided as a means for the developer to group subscriptions within a single, or group, or applications. The namespace is used to filter the list of subscriptions returned by the subscriptionList() function. If not namespace is specified the value of "shared" will be used.
  • The relationship attribute is provided as a means for the developer to characterize the relationship between the originating and target Personal Cloud. The relationship attribute should be specified as a pair of values separated by a dash (e.g. parent-child, peer-peer, master-slave). The first value of the relationship attribute will be stored with the originating Personal Cloud subscription, the second value will be stored with the target Personal Cloud subscription. The relationship attribute values are used to filter the list of subscriptions returned by the subscriptionList() function. If not relationship is specified the value of "peer-peer" will be used.
  • The targetChannel attribute is the Personal Channel token for the target Personal Cloud to which the subscription is to be made.
During the processing of creating the Personal Channels between the two Personal Clouds callback events are raised The sending Personal Cloud will have the following event raised to signal that the subscription request has been received:

  • domain: cloudos
  • type: subscriptionRequestAdded
  • attributes: targetChannel, backChannel, namespace, relationship, channelName
The Personal Cloud receiving the subscription request will have the following event raised to signal the receipt of a pending subscription request:
  • domain: cloudos
  • type: subscriptionRequestPending
  • attributes: eventChannel, namespace, relationship, channelName

Subscription Approval or Rejection

With the subscription request pending approval, the Personal Cloud which received the request can either approve or reject the request. To approve the subscription request the following event should be raised:
  • domain: cloudos
  • type: subscriptionRequestApproved
  • attributes: eventChannel
Once the subscription request is approved both Personal Clouds will receive a callback events raised within each respective Personal Cloud. These events are raised to enable the developer to take additional actions when the Personal Channels are actually created.
  • domain: explicitcloudos
  • type: CloudOS_subscriptionAdded
  • attributes: eventChannel, backChannel
The eventChannel attribute is the Personal Channel token for the remote Personal Cloud, while the backChannel is the Personal Channel token for the current Personal Cloud.
 
  • , namespace, relationship, channelName
To reject the subscription request the following event should be raised:
  • domain: cloudos
  • type: subscriptionRequestRejected
  • attributes: eventChannel
When the subscription request is rejected the following event will be raised with the Personal Cloud:
  • domain: cloudos
  • type: subscriptionRejected
  • attributes: eventChannel, namespace, relationship, channelName
And the following event will be raised in the Personal Cloud which made the subscription request:
  • domain: cloudos
  • type: subscriptionRejected
  • attributes: backChannel, namespace, relationship, channelName
Code Block
themeConfluence
languagejavascript
fired {
  raise systemcloudos event subscribe
    with channelName   = "Coworkers Bob+Ted"
    and  namespace     = "DocSample"
    and  relationship  = "friend-friend"
    and  targetChannel = "3f15b820-af7f-012f-4c6e-00163ebczzzz"
    and  _api = "sky";
}

 

...

The system:unsubscribe event is used to remove the Personal Channels between two Personal Clouds.

  • domain: systemcloudos
  • type: unsubscribe
  • attribute: backChannel

...

During the processing of removing the Personal Channels bewteen the two Personal Clouds callback events are raised within each respective Personal Cloud. These events are raised to enable the developer to take additional actions when the Personal Channels are actually being removed.
  • domain: explicitcloudos
  • type: CloudOS_subscriptionRemoved
  • attributes: eventChannel, backChannel, namespace, relationship, channelName
The eventChannel attribute is the Personal Channel token for the remote Personal Cloud, while the backChannel is the Personal Channel token for the current Personal Cloud.

 

Code Block
themeConfluence
languagejavascript
always {
  raise system event unsubscribe
    with backChannel = "3f15b820-af7f-012f-4c6e-00163ebcfddfd"
    and  _api = "sky";
}

 

...