func (ctx *Context) UnavailableImageHandler(handler func(*Image)) *Context {
	ctx.unavailableImageHandler = handler
	return ctx
}
UnavailableImageHandler sets an optional callback for unavailable image notification
package aeron
import (
	"time"
	"github.com/lirm/aeron-go/aeron/counters"
	"github.com/lirm/aeron-go/aeron/idlestrategy"
)
type Context struct {
	aeronDir      string
	mediaDriverTo time.Duration
	errorHandler func(error)
	newPublicationHandler   NewPublicationHandler
	newSubscriptionHandler  NewSubscriptionHandler
	availableImageHandler   AvailableImageHandler
	unavailableImageHandler UnavailableImageHandler
	resourceLingerTo        time.Duration
	publicationConnectionTo time.Duration
	interServiceTo          time.Duration
	idleStrategy idlestrategy.Idler
}
func NewContext() *Context {
	ctx := new(Context)
	ctx.aeronDir = DefaultAeronDir + "/aeron-" + UserName
	ctx.errorHandler = func(err error) { logger.Error(err) }
	ctx.newPublicationHandler = func(string, int32, int32, int64) {}
	ctx.newSubscriptionHandler = func(string, int32, int64) {}
	ctx.availableImageHandler = func(*Image) {}
	ctx.unavailableImageHandler = func(*Image) {}
	ctx.mediaDriverTo = time.Second * 5
	ctx.resourceLingerTo = time.Second * 3
	ctx.publicationConnectionTo = time.Second * 5
	ctx.interServiceTo = time.Second * 10
	ctx.idleStrategy = idlestrategy.Sleeping{SleepFor: time.Millisecond * 4}
	return ctx
}
func (ctx *Context) ErrorHandler(handler func(error)) *Context {
	ctx.errorHandler = handler
	return ctx
}
func (ctx *Context) AeronDir(dir string) *Context {
	ctx.aeronDir = dir
	return ctx
}
func (ctx *Context) MediaDriverTimeout(to time.Duration) *Context {
	ctx.mediaDriverTo = to
	return ctx
}
func (ctx *Context) ResourceLingerTimeout(to time.Duration) *Context {
	ctx.resourceLingerTo = to
	return ctx
}
func (ctx *Context) InterServiceTimeout(to time.Duration) *Context {
	ctx.interServiceTo = to
	return ctx
}
func (ctx *Context) PublicationConnectionTimeout(to time.Duration) *Context {
	ctx.publicationConnectionTo = to
	return ctx
}
func (ctx *Context) NewSubscriptionHandler(handler func(string, int32, int64)) *Context {
	ctx.newSubscriptionHandler = handler
	return ctx
}
func (ctx *Context) NewPublicationHandler(handler func(string, int32, int32, int64)) *Context {
	ctx.newPublicationHandler = handler
	return ctx
}
func (ctx *Context) AvailableImageHandler(handler func(*Image)) *Context {
	ctx.availableImageHandler = handler
	return ctx
}