Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const FrameWork <- class FrameWork
- field Nodes : Nodelist
- field Objects : array.of[clonable] <- Array.of[clonable].empty
- field UpdateTimes : array.of[Time] <- array.of[Time].empty
- field PrimaryIndex : Integer <- 0
- export operation Notify[TimeServer : Boolean]
- if TimeServer then
- for i : Integer <- 0 while i < Objects.upperbound+1 by i <- i + 1
- if i !== PrimaryIndex then
- Var currClonable: TimeServer <- View Objects.getelement[i] as TimeServer
- Var Prim: TimeServer <- View Objects.getelement[PrimaryIndex] as TimeServer
- currClonable$Data <- Array.of[Time].create[prim$data.upperbound+1]
- for j : Integer <- 0 while j < prim$data.upperbound+1 by j <- j + 1
- currClonable$Data.setelement[j, prim$data.getelement[j]]
- end for
- end if
- end for
- else
- for i : Integer <- 0 while i < Objects.upperbound+1 by i <- i + 1
- if i !== PrimaryIndex then
- Var currClonable: NameServer <- View Objects.getelement[i] as NameServer
- Var Prim: NameServer <- View Objects.getelement[PrimaryIndex] as NameServer
- currClonable$Data <- Array.of[String].create[prim$data.upperbound+1]
- for j : Integer <- 0 while j < prim$data.upperbound+1 by j <- j + 1
- currClonable$Data.setelement[j, prim$data.getelement[j]]
- end for
- end if
- end for
- end if
- end notify
- export operation GetPrimary[] -> [P : clonable]
- p <- Objects.getelement[PrimaryIndex]
- end GetPrimary
- end FrameWork
- const Clonable <- typeobject Clonable
- operation Clone[] -> [c : clonable]
- end Clonable
- const TimeServer <- class TimeServer [FW : FrameWork]
- field Data : Array.of[time] <- array.of[time].empty
- export operation Clone[] -> [C : TimeServer]
- c$Data <- Array.of[Time].create[Data.upperbound+1]
- for i : Integer <- 0 while i < Data.upperbound+1 by i <- i + 1
- c$Data.setelement[i, Data.getelement[i]]
- end for
- end Clone
- export operation addTime[t : Time]%//Maybe we should add a key?
- Data.addupper[t]
- FW.Notify[]
- end addTime
- end TimeServer
- const NameServer <- class NameServer [FW : FrameWork]
- field Data : Array.of[String] <- array.of[String].empty
- export operation Clone[] -> [C : NameServer]
- c$Data <- Array.of[String].create[Data.upperbound+1]
- for i : Integer <- 0 while i < Data.upperbound+1 by i <- i + 1
- c$Data.setelement[i, Data.getelement[i]]
- end for
- end Clone
- export operation addName[Name : String]%//Maybe we should add a key?
- Data.addupper[Name]
- FW.notify[]
- end addName
- end NameServer
- const Client <- object client
- initially
- end initially
- export operation ReplicateMe[o : Clonable, N : Integer] -> [FW : FrameWork]
- FW$Objects <- Array.of[clonable].create[n]
- FW$UpdateTimes <- Array.of[Time].create[n]
- %Add the object into all slots
- end ReplicateMe
- end client
Advertisement
Add Comment
Please, Sign In to add comment