func (g *gregorHandler) InjectOutOfBandMessage(system string, body []byte) error { var err error defer g.G().Trace(fmt.Sprintf("gregorHandler.InjectOutOfBandMessage(%s)", system), func() error { return err }, )() uid := g.G().Env.GetUID() if uid.IsNil() { err = fmt.Errorf("Can't create new gregor items without a current UID.") return err } gregorUID := gregor1.UID(uid.ToBytes()) msg := gregor1.Message{ Oobm_: &gregor1.OutOfBandMessage{ Uid_: gregorUID, System_: gregor1.System(system), Body_: gregor1.Body(body), }, } incomingClient := gregor1.IncomingClient{Cli: g.cli} // TODO: Should the interface take a context from the caller? err = incomingClient.ConsumeMessage(context.TODO(), msg) return err }
func (g *pingGregorHandler) OnConnect(ctx context.Context, conn *rpc.Connection, cli rpc.GenericClient, srv *rpc.Server) error { g.G().Log.Debug("pingGregorHandler OnConnect") ac := gregor1.IncomingClient{Cli: cli} response, err := ac.Ping(ctx) if err != nil { g.pingErrors <- err } else if response != "pong" { g.pingErrors <- fmt.Errorf("Got an unexpected response from ping: %#v", response) } else { g.pingSuccess <- struct{}{} } return err }
func (g *gregorHandler) InjectItem(cat string, body []byte) (gregor.MsgID, error) { var err error defer g.G().Trace(fmt.Sprintf("gregorHandler.InjectItem(%s)", cat), func() error { return err }, )() creation, err := g.templateMessage() if err != nil { return nil, err } creation.Ibm_.StateUpdate_.Creation_ = &gregor1.Item{ Category_: gregor1.Category(cat), Body_: gregor1.Body(body), } incomingClient := gregor1.IncomingClient{Cli: g.cli} // TODO: Should the interface take a context from the caller? err = incomingClient.ConsumeMessage(context.TODO(), *creation) return creation.Ibm_.StateUpdate_.Md_.MsgID_, err }
func (g *gregorHandler) DismissItem(id gregor.MsgID) error { if id == nil { return nil } var err error defer g.G().Trace(fmt.Sprintf("gregorHandler.DismissItem(%s)", id.String()), func() error { return err }, )() dismissal, err := g.templateMessage() if err != nil { return err } dismissal.Ibm_.StateUpdate_.Dismissal_ = &gregor1.Dismissal{ MsgIDs_: []gregor1.MsgID{gregor1.MsgID(id.Bytes())}, } incomingClient := gregor1.IncomingClient{Cli: g.cli} // TODO: Should the interface take a context from the caller? err = incomingClient.ConsumeMessage(context.TODO(), *dismissal) return err }