Overflow scenariobuffer1 : Bufferchunk1 : Bufferbuffer2 : Bufferchunk2 : BufferClientClientsome : Parsersome : Parserbuffer1 : Bufferbuffer2 : Bufferchunk1 : Bufferchunk2 : Bufferallocatebuffer1 : Bufferinitialize with buffer1readchunk1 : Bufferfeed chunk1pull n tokenssome tokenoverflowsecond token didn't fit into buffer1allocatebuffer2 : Bufferrealloc with buffer2some part of buffer1 may be copied to buffer2freepull n tokensstarvingreadchunk2 : Bufferfeed chunk2pull n tokenssome tokenstarving
@startuml
skinparam activity {
BackgroundColor<<New>> Cyan
}
title test -
note left: test
(*) --> "test"
if "" then
-> [condition] ==IF1==
--> ==IF1M1==
-left-> ==IF1M2==
else
end if
--> ==IF1M2==
if "" then
-> [condition] ==IF2==
--> ==IF2M1==
-left-> ==IF2M2==
else
end if
--> ==IF2M2==
--> (*)
@enduml
ACTIVITY DIAGRAM
5890300820062208
la:LoadActionzw:ZoneWriterzd_new:ZoneDatanew:MemorySegment(Mapped):bundy-memmgr:bundy-memmgr:ConfigurableClientList:ConfigurableClientList:CacheConfig:CacheConfig:ZoneTableSegment(Mapped):ZoneTableSegment(Mapped)existing:MemorySegment(Mapped)existing:MemorySegment(Mapped)new:MemorySegment(Mapped):ZoneTable:ZoneTablezw:ZoneWriterla:LoadActionzd_existing:ZoneDatazd_existing:ZoneDatazd_new:ZoneDatareload(zonename)getCachedZoneWriter(zone_name)isWritable()truegetLoadAction()<<construct>>la:LoadActionla<<construct>> (la)zw:ZoneWriterzwload()(funcall)<<construct>> via helperszd_new:ZoneDatazd_newinstall()addZone(zd_new)zd_existing (old data)cleanup()<<destroy>>command tomodules(datasrc_name,segmentparam)ack from allmodulesresetMemorySegment(datasrc_name,READ_WRITE,segmentparam)reset(READ_WRITE,segmentparam)<<destroy>><<construct>>new:MemorySegment(Mapped)(repeat thesame sequencefor loading to theother segment)getCachedZoneWriter(zone_name)
SEQUENCE DIAGRAM
5895559604862976
la:LoadActionzw:ZoneWriterzd_new:ZoneDatanew:MemorySegment(Mapped):bundy-memmgr:bundy-memmgr:ConfigurableClientList:ConfigurableClientList:CacheConfig:CacheConfig:ZoneTableSegment(Mapped):ZoneTableSegment(Mapped)existing:MemorySegment(Mapped)existing:MemorySegment(Mapped)new:MemorySegment(Mapped):ZoneTable:ZoneTablezw:ZoneWriterla:LoadActionzd_existing:ZoneDatazd_existing:ZoneDatazd_new:ZoneDatareload(zonename)getCachedZoneWriter(zone_name)isWritable()truegetLoadAction()<<construct>>la:LoadActionla<<construct>> (la)zw:ZoneWriterzwload()(funcall)<<construct>> via helperszd_new:ZoneDatazd_newinstall()addZone(zd_new)zd_existing (old data)cleanup()<<destroy>>command tomodules(datasrc_name,segmentparam)ack from allmodulesresetMemorySegment(datasrc_name,READ_WRITE,segmentparam)reset(READ_WRITE,segmentparam)<<destroy>><<construct>>new:MemorySegment(Mapped)(repeat thesame sequencefor loading to theother segment)getCachedZoneWriter(zone_name)
@startuml
participant memmgr as ":bundy-memmgr"
[-> memmgr: reload\n(zonename)
activate memmgr
participant list as ":Configurable\nClientList"
memmgr -> list: getCachedZoneWriter\n(zone_name)
activate list
participant CacheConfig as ":CacheConfig"
participant zt_segment as ":ZoneTable\nSegment\n(Mapped)"
participant segment as "existing:Memory\nSegment\n(Mapped)"
participant segment2 as "new:Memory\nSegment\n(Mapped)"
list -> zt_segment: isWritable()
activate zt_segment
zt_segment --> list: true
deactivate zt_segment
list -> CacheConfig: getLoadAction()
activate CacheConfig
participant ZoneTable as ":ZoneTable"
participant ZoneWriter as "zw:ZoneWriter"
participant LoadAction as "la:LoadAction"
create LoadAction
CacheConfig -> LoadAction: <<construct>>
CacheConfig --> list: la
deactivate CacheConfig
create ZoneWriter
list -> ZoneWriter: <<construct>> (la)
list --> memmgr: zw
deactivate list
memmgr -> ZoneWriter: load()
activate ZoneWriter
ZoneWriter -> LoadAction: (funcall)
activate LoadAction
participant ZoneData as "zd_existing\n:ZoneData"
participant ZoneData2 as "zd_new\n:ZoneData"
create ZoneData2
LoadAction -> ZoneData2: <<construct>> via helpers
LoadAction --> ZoneWriter: zd_new
deactivate LoadAction
deactivate ZoneWriter
memmgr -> ZoneWriter: install()
activate ZoneWriter
ZoneWriter -> ZoneTable: addZone(zd_new)
activate ZoneTable
ZoneTable --> ZoneWriter: zd_existing (old data)
deactivate ZoneTable
deactivate ZoneWriter
memmgr -> ZoneWriter: cleanup()
activate ZoneWriter
ZoneWriter -> ZoneData: <<destroy>>
destroy ZoneData
deactivate ZoneWriter
[<- memmgr: command to\nmodules\n(datasrc_name,\nsegmentparam)
[--> memmgr: ack from all\nmodules
memmgr -> list: resetMemorySegment\n(datasrc_name,\nREAD_WRITE,\nsegmentparam)
activate list
list -> zt_segment: reset\n(READ_WRITE,\nsegmentparam)
activate zt_segment
zt_segment -> segment: <<destroy>>
destroy segment
create segment2
zt_segment -> segment2: <<construct>>
deactivate zt_segment
deactivate list
note left of memmgr: (repeat the\nsame sequence\nfor loading to the\nother segment)
memmgr -> list: getCachedZoneWriter\n(zone_name)
...
@enduml
SEQUENCE DIAGRAM
5895559604862976
Medias CRUD (Create ReadUpdateDelete)UserUserWebUIWebUIOrchestraOrchestraStorageStorageLoginGET /user/login (auth d@f.com:pass)Get user from MongoDBOK 200{"status"=200"value"={"_id": "<uuid>", "name": "David Fischer", ...}}'Successfull login'Medias Tabloop[every N seconds (AJAX)]GET /media (auth d@f.com:pass)Get medias from MongoDBOK 200{"status"=200,"value"=[{"_id": "<uuid>", "user_id": "<uuid>", ...}, ...]}<< Show/update medias list >>Add a media (with upload form, file transfer not shown)<< copy file into uploads path >><< operation terminated >>POST /media (auth d@f.com:pass){"uri": "glusterfs://...", "metadata": {"title": "Tabby"}, ...}<< check if file exist + rename & move it to medias path >><< operation terminated >>Save media (not the content (!)) to MongoDBOK 200{"status"=200,"value"={"_id": "<uuid_of_media>", "status": "READY", ...}}<< Flash info message'The media "Tabby" has been added.' >>Download a media<< read file from medias path >><< chunk 1/N of the file >><< chunk 2/N of the file >><< chunk N/N of the file >><< end of file >>alt[if auth. user is media's author (user._id == media.user_id)]Remove a mediaDELETE (auth d@f.com:pass) /media/id/<uuid_of_media>Set media status=DELETED into MongoDB<< delete file from medias path >><< operation terminated >>OK 200{"status"=200,"value"="The media \"Hotel Transylvania\" has been deleted."}<< Flash info message'The media "Hotel Transylvania" has been deleted.' >>
SEQUENCE DIAGRAM
5903267460546560
Medias CRUD (Create ReadUpdateDelete)UserUserWebUIWebUIOrchestraOrchestraStorageStorageLoginGET /user/login (auth d@f.com:pass)Get user from MongoDBOK 200{"status"=200"value"={"_id": "<uuid>", "name": "David Fischer", ...}}'Successfull login'Medias Tabloop[every N seconds (AJAX)]GET /media (auth d@f.com:pass)Get medias from MongoDBOK 200{"status"=200,"value"=[{"_id": "<uuid>", "user_id": "<uuid>", ...}, ...]}<< Show/update medias list >>Add a media (with upload form, file transfer not shown)<< copy file into uploads path >><< operation terminated >>POST /media (auth d@f.com:pass){"uri": "glusterfs://...", "metadata": {"title": "Tabby"}, ...}<< check if file exist + rename & move it to medias path >><< operation terminated >>Save media (not the content (!)) to MongoDBOK 200{"status"=200,"value"={"_id": "<uuid_of_media>", "status": "READY", ...}}<< Flash info message'The media "Tabby" has been added.' >>Download a media<< read file from medias path >><< chunk 1/N of the file >><< chunk 2/N of the file >><< chunk N/N of the file >><< end of file >>alt[if auth. user is media's author (user._id == media.user_id)]Remove a mediaDELETE (auth d@f.com:pass) /media/id/<uuid_of_media>Set media status=DELETED into MongoDB<< delete file from medias path >><< operation terminated >>OK 200{"status"=200,"value"="The media \"Hotel Transylvania\" has been deleted."}<< Flash info message'The media "Hotel Transylvania" has been deleted.' >>
@startuml
skin BlueModern
title Medias CRUD (Create Read <s>Update</s> Delete)
actor User
participant "WebUI" as W
participant "Orchestra" as O
participant "Storage" as S
'participant "Transform" as T
'participant "Publisher" as P
User -> W: Login
activate W
W -> O: GET /user/login (auth d@f.com:pass)
activate O
O -> O: Get user from MongoDB
O --> W: <b>OK 200</b> {"status"=200\n "value"={"_id": "<uuid>", "name": "David Fischer", ...}}
deactivate O
W --> User: 'Successfull login'
deactivate W
User -> W: Medias Tab
activate W
loop every N seconds (AJAX)
W -> O: GET /media (auth d@f.com:pass)
activate O
O -> O: Get medias from MongoDB
O --> W: <b>OK 200</b> {"status"=200,\n "value"=[{"_id": "<uuid>", "user_id": "<uuid>", ...}, ...]}
deactivate O
W --> User: << Show/update medias list >>
end
deactivate W
User -> W: Add a media (with upload form, file transfer not shown)
activate W
W -> S: << copy file into uploads path >>
activate S
S --> W: << operation terminated >>
deactivate S
W -> O: POST /media (auth d@f.com:pass)\n {"uri": "glusterfs://...", "metadata": {"title": "Tabby"}, ...}
activate O
O -> S: << check if file exist + rename & move it to medias path >>
activate S
S --> O: << operation terminated >>
deactivate S
O -> O: Save media (not the content (!)) to MongoDB
O --> W: <b>OK 200</b> {"status"=200,\n "value"={"_id": "<uuid_of_media>", "status": "READY", ...}}
deactivate O
W --> User: << Flash info message\n'The media "Tabby" has been added.' >>
deactivate W
User -> W: Download a media
activate W
W -> S: << read file from medias path >>
activate S
W --> User: << chunk 1/N of the file >>
W --> User: << chunk 2/N of the file >>
W --> User: << chunk N/N of the file >>
S --> W: << end of file >>
deactivate S
deactivate W
alt if auth. user is media's author (user._id == media.user_id)
User -> W: Remove a media
activate W
activate O
W -> O: DELETE (auth d@f.com:pass) /media/id/<uuid_of_media>
O -> O: Set media status=DELETED into MongoDB
O -> S: << delete file from medias path >>
activate S
S --> O: << operation terminated >>
deactivate S
O --> W: <b>OK 200</b> {"status"=200,\n "value"="The media \\"Hotel Transylvania\\" has been deleted."}
deactivate O
W --> User: << Flash info message\n'The media "Hotel Transylvania" has been deleted.' >>
deactivate W
end
@enduml
SEQUENCE DIAGRAM
5903267460546560
This is a notefoo1This note is on severallinesand cancontainHTMLCalling the methodfoo()is prohibitedfoo2
ACTIVITY DIAGRAM
5906085495963648
This is a notefoo1This note is on severallinesand cancontainHTMLCalling the methodfoo()is prohibitedfoo2
@startuml
start
:foo1;
note left: This is a note
:foo2;
note right
This note is on several
//lines// and can
contain <b>HTML</b>
====
* Calling the method ""foo()"" is prohibited
end note
stop
@enduml
@startuml
title Dodawanie service
actor UI #red
box "Kontroler" #LightBlue
control kontroler
database kontrolerDB
end box
box "Monitor" #DarkSalmon
control monitor
database monitorDB
end box
autonumber
UI -> kontroler: POST /service
kontroler -> kontroler: Walidacja danych
alt dane poprawne
kontroler -> kontrolerDB: dodaj do bazy
kontroler -> monitor: POST /service
monitor -> monitor: Walidacja danych
alt dane poprane
monitor -> monitorDB: Dodaj do bazy
monitor --> kontroler: status 201
kontroler --> UI: status 201
else dane niepoprawne
monitor -> kontroler: status 400
kontroler --> UI: status 400
end
else danie niepoprawne
kontroler --> UI: status 400
end
@enduml
SEQUENCE DIAGRAM
5911127250698240
IModalDialogServiceShowModal() : bool?IModalDialogService`1TResult : T «get»
CLASS DIAGRAM
5914238149197824
IModalDialogServiceShowModal() : bool?IModalDialogService`1TResult : T «get»
@startuml
left to right direction
component "Приложение" as application
component "Авторизационный компонент Dropbox" as dropboxAuth
application --> dropboxAuth
@enduml
COMPONENT DIAGRAM
5914969367379968
" Main "" Record "" Delete "" Update "" Find "" Print "addressBookaddressBookaddressBookaddressBookaddressBookaddressBookaddressBookindexesaddressBook
COMPONENT DIAGRAM
5915947546181632
" Main "" Record "" Delete "" Update "" Find "" Print "addressBookaddressBookaddressBookaddressBookaddressBookaddressBookaddressBookindexesaddressBook
@startuml
Player -> Simon: Start Game
loop while ! end of game
Simon -> User: Show Sequence
Player -> Simon: Select Sequence
end
User -> Database: Send Score
@enduml
SEQUENCE DIAGRAM
5916087803707392
NodeIdeaQuestionEvidenceSourceKnowledgeraisesinspiressuggestsexistence ofdefineslack ofsuggests pathtowards new
CLASS DIAGRAM
5917793308377088
NodeIdeaQuestionEvidenceSourceKnowledgeraisesinspiressuggestsexistence ofdefineslack ofsuggests pathtowards new