+func idstring(trans fmt.Stringer, subs fmt.Stringer, err error) string {
+ var retval string = ""
+ var filler string = ""
+ if trans != nil {
+ retval += filler + trans.String()
+ filler = " "
+ }
+ if subs != nil {
+ retval += filler + subs.String()
+ filler = " "
+ }
+ if err != nil {
+ retval += filler + "err(" + err.Error() + ")"
+ filler = " "
+ }
+ return retval
+}
+
+func (c *Control) findSubs(ids []int) (*Subscription, error) {
+ var subs *Subscription = nil
+ for _, id := range ids {
+ if id >= 0 {
+ subs = c.registry.GetSubscription(uint16(id))
+ }
+ if subs != nil {
+ break
+ }
+ }
+ if subs == nil {
+ return nil, fmt.Errorf("No valid subscription found with ids %v", ids)
+ }
+ return subs, nil
+}
+
+func (c *Control) findSubsAndTrans(ids []int) (*Subscription, *Transaction, error) {
+ subs, err := c.findSubs(ids)
+ if err != nil {
+ return nil, nil, err
+ }
+ trans := subs.GetTransaction()
+ if trans == nil {
+ return subs, nil, fmt.Errorf("No ongoing transaction found from %s", idstring(nil, subs, nil))
+ }
+ return subs, trans, nil
+}