Skip to content

Commit 4ab45b9

Browse files
committed
Added cleaner parent factory interface
Can now just specify an entire factory and not just its new function
1 parent 6574c77 commit 4ab45b9

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ lotteryStream.Broadcast(everyoneLosesEvent)
4545
```
4646

4747
### Auto subscribe certain routes to topics
48-
`Stream` implements an `http.Handler` but by default just registers clients for broadcasts.
48+
`Stream` implements an `http.Handler` but by default just registers clients for broadcasts.
4949

5050
Use `TopicHandler` to create another handler for that stream that will subscribe clients to topics as well as broadcasts.
5151
```go
@@ -94,7 +94,7 @@ func ServeHTTP(w http.ResponseWriter, r *http.Request) {
9494
http.Error(...)
9595
return
9696
}
97-
97+
9898
client.Wait()
9999
}
100100
```
@@ -149,7 +149,7 @@ typeFact := &eventsource.EventTypeFactory{
149149
// then with incrementing ID's
150150
idFact := &eventsource.EventIdFactory{
151151
Next: 0,
152-
NewFunc: typeFact.New,
152+
NewFact: typeFact,
153153
}
154154

155155
// then generate as many events as you want with

event_factory.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ type EventFactory interface {
1414
// sequential ID fields.
1515
// If NewFunc is set, the factory uses it to create events before setting
1616
// their IDs
17+
// If NewFunc is not set, NewFact will be used. If neither is set, a new
18+
// event is created from scratch
1719
type EventIdFactory struct {
20+
NewFact EventFactory
1821
NewFunc func() *Event
1922
Next uint64
2023
}
@@ -24,6 +27,8 @@ func (f *EventIdFactory) New() *Event {
2427
var e *Event
2528
if f.NewFunc != nil {
2629
e = f.NewFunc()
30+
} else if f.NewFact != nil {
31+
e = f.NewFact.New()
2732
} else {
2833
e = &Event{}
2934
}
@@ -35,17 +40,22 @@ func (f *EventIdFactory) New() *Event {
3540

3641
// EventTypeFactory creates events of a specific type
3742
type EventTypeFactory struct {
43+
NewFact EventFactory
3844
NewFunc func() *Event
3945
Type string
4046
}
4147

4248
// New creates an event with the event type set
4349
// If NewFunc is set, the factory uses it to create events before setting
4450
// their event types
51+
// If NewFunc is not set, NewFact will be used. If neither is set, a new
52+
// event is created from scratch
4553
func (f *EventTypeFactory) New() *Event {
4654
var e *Event
4755
if f.NewFunc != nil {
4856
e = f.NewFunc()
57+
} else if f.NewFact != nil {
58+
e = f.NewFact.New()
4959
} else {
5060
e = &Event{}
5161
}

0 commit comments

Comments
 (0)