@startuml OfflineTranmission
header Message OfflineTranmission
left to right direction
skinparam actorStyle awesome
skinparam usecase {
BackgroundColor<< Publisher >> Pink
BorderColor<< Publisher >> Red
BackgroundColor<< Subscriber >> YellowGreen
BorderColor<< Subscriber >> Green
}
package PublisherSite {
actor "Publisher" as Publisher #pink;line:red;line.bold;text:red
(Parent) as (parentPub) << Publisher >>
usecase "Parent" as parentPub
() "Proxy" as proxy1
}
package SubscriberSite {
() "Proxy" as proxy2
() "Proxy" as proxy3
(Parent) as (parentSub) << Subscriber >>
actor "Subscriber" as Subscriber1 #YellowGreen;line:green;line.bold;text:Green
actor "Subscriber" as Subscriber2 #cyan;line:blue;line.bold;text:blue
}
' note "Blue COLOR is the \nfirst triggering mechanism for \noffline transmission." as N1
' note "Red COLOR is the \nfirst line of streaming." as N2
' note "Internet Connection Interrupted" as N3
proxy1 <-- Publisher #line:Red;text:Red : Publish data to \ndesignated subsriber \nover proxy
parentPub <-- Publisher : If internet is \ndown, NOTIFY \nparent publisher
proxy2 --> Subscriber1 #line:Red;text:Red : Receive data \nfrom Publisher
parentPub --> parentSub #line:blue;line.bold;text:Blue : Notify Internet \nWas Offline \nPlease Subscribe \nAgain
proxy2 . proxy1 #line:Red;text:Red : Internet Connection \nInterruption
' N3 . proxy2 #line:Red;text:Red
proxy3 <-- Subscriber2 #line:Blue;text:Blue : Subcribe to Publisher \nvia new Proxxy
proxy1 . proxy3 #line:Blue;text:Blue : Subscribe to proxy \n to continue receiving \ndata
Subscriber2 <-- parentSub #line:Blue;text:Blue : Instantiate a \nnew Subsscriber
parentSub <-- Subscriber1 : Persists data \nreceived from \nPublisher
@enduml