Enahanced Work() without Ready() behaviour:

Now if you try to call Work() without calling Ready(), it will trigger an attempt to run Ready(), and will only panic if there is an error.
This commit is contained in:
draxil 2014-06-01 16:59:57 +01:00
父節點 3232b11d83
當前提交 6688c29c37
共有 2 個檔案被更改,包括 32 行新增1 行删除

查看文件

@ -183,7 +183,11 @@ func (worker *Worker) Ready() (err error) {
// Most of time, this should be evaluated in goroutine.
func (worker *Worker) Work() {
if ! worker.ready {
panic( "worker: Work() called before Ready()")
// didn't run Ready beforehand, so we'll have to do it:
err := worker.Ready()
if err != nil {
panic( err )
}
}
defer func() {

查看文件

@ -77,6 +77,33 @@ func TestWork(t *testing.T) {
wg.Wait()
}
func TestWorkerClose(t *testing.T) {
worker.Close()
}
func TestWorkWithoutReady(t * testing.T){
other_worker := New(Unlimited)
var wg sync.WaitGroup
if err := other_worker.AddServer(Network, "127.0.0.1:4730"); err != nil {
t.Error(err)
}
if err := other_worker.AddFunc("foobar", foobar, 0); err != nil {
t.Error(err)
}
other_worker.JobHandler = func( j Job ) error {
if( ! other_worker.ready ){
t.Error("Worker not ready as expected");
}
wg.Done()
return nil
}
go other_worker.Work();
wg.Add(1)
worker.Echo([]byte("Hello"))
wg.Wait();
}