Skip to main content
Glama
events.go.backup1.37 kB
package events import ( "fmt" "sync" "time" ) type EventType string const ( ProcessStarted EventType = "process.started" ProcessExited EventType = "process.exited" LogLine EventType = "log.line" ErrorDetected EventType = "error.detected" BuildEvent EventType = "build.event" TestFailed EventType = "test.failed" TestPassed EventType = "test.passed" MCPActivity EventType = "mcp.activity" MCPConnected EventType = "mcp.connected" MCPDisconnected EventType = "mcp.disconnected" ) type Event struct { ID string Type EventType ProcessID string Timestamp time.Time Data map[string]interface{} } type Handler func(event Event) type EventBus struct { handlers map[EventType][]Handler mu sync.RWMutex } func NewEventBus() *EventBus { return &EventBus{ handlers: make(map[EventType][]Handler), } } func (eb *EventBus) Subscribe(eventType EventType, handler Handler) { eb.mu.Lock() defer eb.mu.Unlock() eb.handlers[eventType] = append(eb.handlers[eventType], handler) } func (eb *EventBus) Publish(event Event) { event.Timestamp = time.Now() event.ID = generateEventID() eb.mu.RLock() handlers := eb.handlers[event.Type] eb.mu.RUnlock() for _, handler := range handlers { go handler(event) } } func generateEventID() string { return fmt.Sprintf("%d", time.Now().UnixNano()) }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/standardbeagle/brummer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server