本文整理汇总了Golang中github.com/Symantec/Dominator/lib/srpc.Client类的典型用法代码示例。如果您正苦于以下问题:Golang Client类的具体用法?Golang Client怎么用?Golang Client使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Client类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: sendUpdate
// Returns true if no update needs to be performed.
func (sub *Sub) sendUpdate(srpcClient *srpc.Client) (bool, subStatus) {
logger := sub.herd.logger
if !sub.pendingSafetyClear {
// Perform a cheap safety check.
if sub.requiredImage.Filter != nil &&
len(sub.fileSystem.InodeTable)>>1 >
len(sub.requiredImage.FileSystem.InodeTable) {
return false, statusUnsafeUpdate
}
}
var request subproto.UpdateRequest
var reply subproto.UpdateResponse
if idle, missing := sub.buildUpdateRequest(&request); missing {
return false, statusMissingComputedFile
} else if idle {
return true, statusSynced
}
if sub.mdb.DisableUpdates || sub.herd.updatesDisabledReason != "" {
return false, statusUpdatesDisabled
}
sub.status = statusSendingUpdate
sub.lastUpdateTime = time.Now()
if err := client.CallUpdate(srpcClient, request, &reply); err != nil {
srpcClient.Close()
logger.Printf("Error calling %s:Subd.Update(): %s\n", sub, err)
if err == srpc.ErrorAccessToMethodDenied {
return false, statusUpdateDenied
}
return false, statusFailedToUpdate
}
sub.pendingSafetyClear = false
return false, statusUpdating
}
开发者ID:keep94,项目名称:Dominator,代码行数:34,代码来源:sub.go
示例2: deleteUnreferencedObjects
func deleteUnreferencedObjects(client *srpc.Client, percentage uint8,
bytes uint64) error {
request := imageserver.DeleteUnreferencedObjectsRequest{percentage, bytes}
var reply imageserver.DeleteUnreferencedObjectsResponse
return client.RequestReply("ImageServer.DeleteUnreferencedObjects",
request, &reply)
}
开发者ID:keep94,项目名称:Dominator,代码行数:7,代码来源:deleteUnreferencedObjects.go
示例3: callPoll
func callPoll(client *srpc.Client, request sub.PollRequest,
reply *sub.PollResponse) error {
conn, err := client.Call("Subd.Poll")
if err != nil {
return err
}
defer conn.Close()
encoder := gob.NewEncoder(conn)
if err := encoder.Encode(request); err != nil {
return err
}
conn.Flush()
str, err := conn.ReadString('\n')
if err != nil {
return err
}
if str != "\n" {
return errors.New(str)
}
if err := gob.NewDecoder(conn).Decode(reply); err != nil {
return err
}
if reply.FileSystemFollows {
reply.FileSystem, err = filesystem.Decode(conn)
if err != nil {
return err
}
reply.ObjectCache, err = objectcache.Decode(conn)
if err != nil {
return err
}
}
return nil
}
开发者ID:datatonic,项目名称:Dominator,代码行数:34,代码来源:poll.go
示例4: fetch
func fetch(srpcClient *srpc.Client, hashesFilename string) error {
hashesFile, err := os.Open(hashesFilename)
if err != nil {
return err
}
defer hashesFile.Close()
scanner := bufio.NewScanner(hashesFile)
serverAddress := fmt.Sprintf("%s:%d",
*objectServerHostname, *objectServerPortNum)
hashes := make([]hash.Hash, 0)
for scanner.Scan() {
hashval, err := objectcache.FilenameToHash(scanner.Text())
if err != nil {
return err
}
hashes = append(hashes, hashval)
}
if err := scanner.Err(); err != nil {
return err
}
return srpcClient.RequestReply("Subd.Fetch", sub.FetchRequest{
ServerAddress: serverAddress,
Wait: true,
Hashes: hashes},
&sub.FetchResponse{})
}
开发者ID:keep94,项目名称:Dominator,代码行数:26,代码来源:fetch.go
示例5: configureSubs
func configureSubs(client *srpc.Client) error {
var request dominator.ConfigureSubsRequest
var reply dominator.ConfigureSubsResponse
request.ScanSpeedPercent = *scanSpeedPercent
request.NetworkSpeedPercent = *networkSpeedPercent
request.ScanExclusionList = scanExcludeList
return client.RequestReply("Dominator.ConfigureSubs", request, &reply)
}
开发者ID:keep94,项目名称:Dominator,代码行数:8,代码来源:configureSubs.go
示例6: disableUpdates
func disableUpdates(client *srpc.Client, reason string) error {
if reason == "" {
return errors.New("cannot disable updates: no reason given")
}
var request dominator.DisableUpdatesRequest
var reply dominator.DisableUpdatesResponse
request.Reason = reason
return client.RequestReply("Dominator.DisableUpdates", request, &reply)
}
开发者ID:keep94,项目名称:Dominator,代码行数:9,代码来源:disableUpdates.go
示例7: checkImage
func checkImage(client *srpc.Client, name string) (bool, error) {
request := imageserver.CheckImageRequest{name}
var reply imageserver.CheckImageResponse
err := client.RequestReply("ImageServer.CheckImage", request, &reply)
if err != nil {
return false, err
}
return reply.ImageExists, nil
}
开发者ID:keep94,项目名称:Dominator,代码行数:9,代码来源:checkImage.go
示例8: pollSubcommand
func pollSubcommand(getSubClient getSubClientFunc, args []string) {
var err error
var srpcClient *srpc.Client
for iter := 0; *numPolls < 0 || iter < *numPolls; iter++ {
if iter > 0 {
time.Sleep(time.Duration(*interval) * time.Second)
}
if srpcClient == nil {
srpcClient = getSubClient()
}
var request sub.PollRequest
var reply sub.PollResponse
request.ShortPollOnly = *shortPoll
pollStartTime := time.Now()
err = client.CallPoll(srpcClient, request, &reply)
fmt.Printf("Poll duration: %s\n", time.Since(pollStartTime))
if err != nil {
fmt.Fprintf(os.Stderr, "Error calling: %s\n", err)
os.Exit(1)
}
if *newConnection {
srpcClient.Close()
srpcClient = nil
}
fs := reply.FileSystem
if fs == nil {
if !*shortPoll {
fmt.Println("No FileSystem pointer")
}
} else {
fs.RebuildInodePointers()
if *debug {
fs.List(os.Stdout)
} else {
fmt.Println(fs)
}
fmt.Printf("Num objects: %d\n", len(reply.ObjectCache))
if *file != "" {
f, err := os.Create(*file)
if err != nil {
fmt.Fprintf(os.Stderr, "Error creating: %s: %s\n",
*file, err)
os.Exit(1)
}
encoder := gob.NewEncoder(f)
encoder.Encode(fs)
f.Close()
}
}
if reply.LastSuccessfulImageName != "" {
fmt.Printf("Last successful image: \"%s\"\n",
reply.LastSuccessfulImageName)
}
}
time.Sleep(time.Duration(*wait) * time.Second)
}
开发者ID:keep94,项目名称:Dominator,代码行数:56,代码来源:poll.go
示例9: setDefaultImage
func setDefaultImage(client *srpc.Client, imageName string) error {
var request dominator.SetDefaultImageRequest
var reply dominator.SetDefaultImageResponse
request.ImageName = imageName
if err := client.RequestReply("Dominator.SetDefaultImage", request,
&reply); err != nil {
return err
}
return nil
}
开发者ID:keep94,项目名称:Dominator,代码行数:10,代码来源:setDefaultImage.go
示例10: getSubsConfiguration
func getSubsConfiguration(client *srpc.Client) error {
var request dominator.GetSubsConfigurationRequest
var reply dominator.GetSubsConfigurationResponse
if err := client.RequestReply("Dominator.GetSubsConfiguration", request,
&reply); err != nil {
return err
}
fmt.Println(sub.Configuration(reply))
return nil
}
开发者ID:keep94,项目名称:Dominator,代码行数:10,代码来源:getSubsConfiguration.go
示例11: getDefaultImage
func getDefaultImage(client *srpc.Client) error {
var request dominator.GetDefaultImageRequest
var reply dominator.GetDefaultImageResponse
if err := client.RequestReply("Dominator.GetDefaultImage", request,
&reply); err != nil {
return err
}
if reply.ImageName != "" {
fmt.Println(reply.ImageName)
}
return nil
}
开发者ID:keep94,项目名称:Dominator,代码行数:12,代码来源:getDefaultImage.go
示例12: pollSubcommand
func pollSubcommand(srpcClient *srpc.Client, args []string) {
var err error
clientName := fmt.Sprintf("%s:%d", *subHostname, *subPortNum)
for iter := 0; *numPolls < 0 || iter < *numPolls; iter++ {
if iter > 0 {
time.Sleep(time.Duration(*interval) * time.Second)
}
if srpcClient == nil {
srpcClient, err = srpc.DialHTTP("tcp", clientName)
if err != nil {
fmt.Fprintf(os.Stderr, "Error dialing\t%s\n", err)
os.Exit(1)
}
}
var request sub.PollRequest
var reply sub.PollResponse
pollStartTime := time.Now()
err = client.CallPoll(srpcClient, request, &reply)
fmt.Printf("Poll duration: %s\n", time.Since(pollStartTime))
if err != nil {
fmt.Fprintf(os.Stderr, "Error calling\t%s\n", err)
os.Exit(1)
}
if *newConnection {
srpcClient.Close()
srpcClient = nil
}
fs := reply.FileSystem
if fs == nil {
fmt.Println("No FileSystem pointer")
} else {
fs.RebuildInodePointers()
if *debug {
fs.List(os.Stdout)
} else {
fmt.Println(fs)
}
fmt.Printf("Num objects: %d\n", len(reply.ObjectCache))
if *file != "" {
f, err := os.Create(*file)
if err != nil {
fmt.Fprintf(os.Stderr, "Error creating: %s\t%s\n",
*file, err)
os.Exit(1)
}
encoder := gob.NewEncoder(f)
encoder.Encode(fs)
f.Close()
}
}
}
time.Sleep(time.Duration(*wait) * time.Second)
}
开发者ID:datatonic,项目名称:Dominator,代码行数:53,代码来源:poll.go
示例13: newObjectAdderQueue
func newObjectAdderQueue(client *srpc.Client) (*ObjectAdderQueue, error) {
var objQ ObjectAdderQueue
var err error
objQ.conn, err = client.Call("ObjectServer.AddObjects")
if err != nil {
return nil, err
}
objQ.encoder = gob.NewEncoder(objQ.conn)
getResponseChan := make(chan bool, 65536)
errorChan := make(chan error, 1024)
objQ.getResponseChan = getResponseChan
objQ.errorChan = errorChan
objQ.sendSemaphore = make(chan bool, 1)
go readResponses(objQ.conn, getResponseChan, errorChan)
return &objQ, nil
}
开发者ID:keep94,项目名称:Dominator,代码行数:16,代码来源:queue.go
示例14: updateConfiguration
func (sub *Sub) updateConfiguration(srpcClient *srpc.Client,
pollReply subproto.PollResponse) {
if pollReply.ScanCount < 1 {
return
}
sub.herd.RLock()
newConf := sub.herd.configurationForSubs
sub.herd.RUnlock()
if compareConfigs(pollReply.CurrentConfiguration, newConf) {
return
}
if err := client.SetConfiguration(srpcClient, newConf); err != nil {
srpcClient.Close()
logger := sub.herd.logger
logger.Printf("Error setting configuration for sub: %s: %s\n",
sub, err)
return
}
}
开发者ID:keep94,项目名称:Dominator,代码行数:19,代码来源:sub.go
示例15: listDirectories
func listDirectories(client *srpc.Client) ([]image.Directory, error) {
conn, err := client.Call("ImageServer.ListDirectories")
if err != nil {
return nil, err
}
defer conn.Close()
directories := make([]image.Directory, 0)
decoder := gob.NewDecoder(conn)
for {
var directory image.Directory
if err := decoder.Decode(&directory); err != nil {
return nil, err
}
if directory.Name == "" {
break
}
directories = append(directories, directory)
}
return directories, nil
}
开发者ID:keep94,项目名称:Dominator,代码行数:20,代码来源:listDirectories.go
示例16: listImages
func listImages(client *srpc.Client) ([]string, error) {
conn, err := client.Call("ImageServer.ListImages")
if err != nil {
return nil, err
}
defer conn.Close()
images := make([]string, 0)
for {
line, err := conn.ReadString('\n')
if err != nil {
return nil, err
}
line = line[:len(line)-1]
if line == "" {
break
}
images = append(images, line)
}
return images, nil
}
开发者ID:keep94,项目名称:Dominator,代码行数:20,代码来源:listImages.go
示例17: callAddImage
func callAddImage(client *srpc.Client, request imageserver.AddImageRequest,
reply *imageserver.AddImageResponse) error {
conn, err := client.Call("ImageServer.AddImage")
if err != nil {
return err
}
defer conn.Close()
encoder := gob.NewEncoder(conn)
if err := encoder.Encode(request); err != nil {
return err
}
conn.Flush()
str, err := conn.ReadString('\n')
if err != nil {
return err
}
if str != "\n" {
return errors.New(str)
}
return gob.NewDecoder(conn).Decode(reply)
}
开发者ID:datatonic,项目名称:Dominator,代码行数:21,代码来源:addImage.go
示例18: listUnreferencedObjects
func listUnreferencedObjects(client *srpc.Client) (
map[hash.Hash]uint64, error) {
conn, err := client.Call("ImageServer.ListUnreferencedObjects")
if err != nil {
return nil, err
}
defer conn.Close()
objects := make(map[hash.Hash]uint64)
decoder := gob.NewDecoder(conn)
for {
var object imageserver.Object
if err := decoder.Decode(&object); err != nil {
return nil, err
}
if object.Size < 1 {
break
}
objects[object.Hash] = object.Size
}
return objects, nil
}
开发者ID:keep94,项目名称:Dominator,代码行数:21,代码来源:listUnreferencedObjects.go
示例19: callFetch
func callFetch(client *srpc.Client, request sub.FetchRequest,
reply *sub.FetchResponse) error {
conn, err := client.Call("Subd.Fetch")
if err != nil {
return err
}
defer conn.Close()
encoder := gob.NewEncoder(conn)
if err := encoder.Encode(request); err != nil {
return err
}
conn.Flush()
str, err := conn.ReadString('\n')
if err != nil {
return err
}
if str != "\n" {
return errors.New(str)
}
return gob.NewDecoder(conn).Decode(reply)
}
开发者ID:datatonic,项目名称:Dominator,代码行数:21,代码来源:fetch.go
示例20: cleanup
func (sub *Sub) cleanup(srpcClient *srpc.Client) {
logger := sub.herd.logger
unusedObjects := make(map[hash.Hash]bool)
for _, hash := range sub.objectCache {
unusedObjects[hash] = false // Potential cleanup candidate.
}
for _, inode := range sub.fileSystem.InodeTable {
if inode, ok := inode.(*filesystem.RegularInode); ok {
if inode.Size > 0 {
if _, ok := unusedObjects[inode.Hash]; ok {
unusedObjects[inode.Hash] = true // Must clean this one up.
}
}
}
}
image := sub.plannedImage
if image != nil {
for _, inode := range image.FileSystem.InodeTable {
if inode, ok := inode.(*filesystem.RegularInode); ok {
if inode.Size > 0 {
if clean, ok := unusedObjects[inode.Hash]; !clean && ok {
delete(unusedObjects, inode.Hash)
}
}
}
}
}
if len(unusedObjects) < 1 {
return
}
hashes := make([]hash.Hash, 0, len(unusedObjects))
for hash := range unusedObjects {
hashes = append(hashes, hash)
}
if err := client.Cleanup(srpcClient, hashes); err != nil {
srpcClient.Close()
logger.Printf("Error calling %s:Subd.Cleanup(): %s\n", sub, err)
}
}
开发者ID:keep94,项目名称:Dominator,代码行数:39,代码来源:sub.go
注:本文中的github.com/Symantec/Dominator/lib/srpc.Client类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论