| 
					
				 | 
			
			
				@@ -7,50 +7,62 @@ skinparam usecase { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     BorderColor<< Publisher >> Red 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     BackgroundColor<< Subscriber >> YellowGreen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     BorderColor<< Subscriber >> Green 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    BackgroundColor<< Interrupt >> Pink 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    BorderColor<< Interrupt >> Red 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-component PublisherSite { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+skinparam component { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    PublisherSite 24 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+component "PublisherSite" as PublisherSite{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (Parent) as (parentPub) << Publisher >> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    usecase "Parent" as parentPub 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    [PublisherObservable] as PublisherObs #Pink;line:Red;line.bold;text:Black 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    port "Proxy" as proxy1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    database "buffer" as buffer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    usecase "**Parent**" as parentPub 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    card PublisherObservable as PublisherObs #Pink;line:Red;line.bold;text:Black 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    port "**Proxy**" as proxy1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    database "**buffer**" as buffer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-component SubscriberSite { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+component SubscriberSite as SubscriberSite{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (Parent) as (parentSub) << Subscriber >> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    [SubscriberObservable] as SubscriberObs1   #YellowGreen;line:green;line.bold;text:Black 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    [SubscriberObservable] as SubscriberObs2   #cyan;line:blue;line.bold;text:Black 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    port "Proxy" as proxy2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    port "Proxy" as proxy3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    usecase "**Parent**" as parentSub 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    card SubscriberObservable as SubscriberObs1   #YellowGreen;line:green;line.bold;text:Black 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    card SubscriberObservable as SubscriberObs2   #cyan;line:blue;line.bold;text:Black 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    port "**Proxy**" as proxy2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    port "**Proxy**" as proxy3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+' (X) as (interrupt) << Interrupt >> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+' usecase "X" as interrupt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 proxy1 *- PublisherObs #line:Red;text:Red : Publish data to \ndesignated subsriber \nover proxy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 PublisherObs --> parentPub : If internet is \ndown, NOTIFY \nparent publisher 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 parentPub --> parentSub #line:blue;line.bold;text:Blue : Notify Internet \nWas Offline \nPlease Subscribe \nAgain 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-proxy1 *..* proxy2 #line:Red;text:Red : Internet Connection \nInterruption 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-proxy1 == buffer : Store data \nin buffer should \nthe internet connection \nstatus is offline 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+' proxy1 *..* interrupt #line:Red;text:Red 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+' interrupt *..* proxy2 #line:Red;text:Red 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+proxy1 *.(0).> proxy2 #line:Red;text:Red : Internet Disconnected 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+' destroy proxy1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+proxy1 == buffer : Store data \nin buffer should \nthe internet \nbe disconnected 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-proxy2 -* SubscriberObs1  #line:Red;text:Red : Receive data \nfrom Publisher 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+proxy2 -* SubscriberObs1  #line:Red;text:Red : Subscribe and \nReceive data  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 proxy3 *- SubscriberObs2 #line:Blue;text:Blue : Subcribe to Publisher \nvia new Proxxy or \nexisting Proxy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-proxy2 *- SubscriberObs2 #line:Blue;text:Blue  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+' proxy2 *- SubscriberObs2 #line:Blue;text:Blue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 proxy1 *..* proxy3 #line:Blue;text:Blue : Subscribe to proxy \n to continue receiving \ndata 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-parentSub -> SubscriberObs2 #line:Orange;text:Orange : Instantiate a \nnew Subscriber upon \nreceiving notification \nfrom Publisher's parent 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-parentSub <- SubscriberObs1 : Persists data \nreceived from \nPublisher 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+parentSub => SubscriberObs2 #line:DarkGreen;line.bold;text:DarkGreen : Instantiate a \nnew Subscriber upon \nreceiving notification \nfrom Publisher's parent 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+parentSub -> SubscriberObs1 : Persists data \nreceived from \nPublisher 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @enduml 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /' Briedf description 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Follow the red line first. It represents a normal flow of data/message transfer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-during an ideal situation.  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+during an ideal situation. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 The blue lines represents when the internet is done and provides direction as to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 how the components handle the situation. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 So here, the the publisher will produce it's messages/payload to the subscriber 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-using the imported library to enable remote transmission of the data via proxy.  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using the imported library to enable remote transmission of the data via proxy. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 The same thing also for the other side, to which they will also need to use the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-same library in order to receive the transmitted data.  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+same library in order to receive the transmitted data. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Now, assuming the internet connection is interrupted for whatever reason, then the  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Now, assuming the internet connection is interrupted for whatever reason, then the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 data will then be stored in the the buffer so to speak or whatever that the publisher 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 wants to deal with it. The parent component will then keep track of the records 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 and send it's notification to the subscriber's parents once the internet is back 
			 |