Пример #1
0
func getWorkerNew(serverAddrs_ []string) func(wg *sync.WaitGroup, ch chan int, stats *Stats) {
	config := memcache_new.ClientConfig{
		ConnectionsCount:        *connectionsCount,
		MaxPendingRequestsCount: *maxPendingRequestsCount,
		ReadBufferSize:          *readBufferSize,
		WriteBufferSize:         *writeBufferSize,
		OSReadBufferSize:        *osReadBufferSize,
		OSWriteBufferSize:       *osWriteBufferSize,
	}
	var client memcache_new.Cacher
	if len(serverAddrs_) < 2 {
		client = &memcache_new.Client{
			ServerAddr:   *serverAddrs,
			ClientConfig: config,
		}
		client.Start()
	} else {
		c := &memcache_new.DistributedClient{
			ClientConfig: config,
		}
		c.StartStatic(serverAddrs_)
		client = c
	}

	worker := workerGetMissNew
	switch *workerMode {
	case "GetHit":
		precreateItemsNew(client)
		worker = workerGetHitNew
	case "GetMiss":
		client.Delete(key)
		worker = workerGetMissNew
	case "Set":
		worker = workerSetNew
	case "GetSet":
		precreateItemsNew(client)
		worker = workerGetSetNew
	default:
		log.Fatalf("Unknown workerMode=[%s]", *workerMode)
	}
	return func(wg *sync.WaitGroup, ch chan int, stats *Stats) {
		worker(client, wg, ch, stats)
	}

}