func (t *srpcType) ListImages(conn *srpc.Conn) error { for _, name := range t.imageDataBase.ListImages() { if _, err := conn.WriteString(name + "\n"); err != nil { return err } } _, err := conn.WriteString("\n") return err }
func (t *srpcType) CheckObjects(conn *srpc.Conn, request objectserver.CheckObjectsRequest, reply *objectserver.CheckObjectsResponse) error { sizes, err := t.objectServer.CheckObjects(request.Hashes) if err != nil { _, err = conn.WriteString(err.Error() + "\n") return err } reply.ObjectSizes = sizes return nil }
func sendRequests(conn *srpc.Conn, filenames []string) error { for _, filename := range filenames { if _, err := conn.WriteString(filename + "\n"); err != nil { return err } } if _, err := conn.WriteString("\n"); err != nil { return err } return conn.Flush() }
func (t *rpcType) Poll(conn *srpc.Conn) error { defer conn.Flush() var request sub.PollRequest var response sub.PollResponse decoder := gob.NewDecoder(conn) if err := decoder.Decode(&request); err != nil { _, err = conn.WriteString(err.Error() + "\n") return err } if _, err := conn.WriteString("\n"); err != nil { return err } response.NetworkSpeed = t.networkReaderContext.MaximumSpeed() response.CurrentConfiguration = t.getConfiguration() t.rwLock.RLock() response.FetchInProgress = t.fetchInProgress response.UpdateInProgress = t.updateInProgress if t.lastFetchError != nil { response.LastFetchError = t.lastFetchError.Error() } if !t.updateInProgress { if t.lastUpdateError != nil { response.LastUpdateError = t.lastUpdateError.Error() } response.LastUpdateHadTriggerFailures = t.lastUpdateHadTriggerFailures } response.LastSuccessfulImageName = t.lastSuccessfulImageName t.rwLock.RUnlock() response.StartTime = startTime response.PollTime = time.Now() response.ScanCount = t.fileSystemHistory.ScanCount() response.DurationOfLastScan = t.fileSystemHistory.DurationOfLastScan() response.GenerationCount = t.fileSystemHistory.GenerationCount() fs := t.fileSystemHistory.FileSystem() if fs != nil && !request.ShortPollOnly && request.HaveGeneration != t.fileSystemHistory.GenerationCount() { response.FileSystemFollows = true } encoder := gob.NewEncoder(conn) if err := encoder.Encode(response); err != nil { return err } if response.FileSystemFollows { if err := fs.FileSystem.Encode(conn); err != nil { return err } if err := fs.ObjectCache.Encode(conn); err != nil { return err } } return nil }
func (t *rpcType) Poll(conn *srpc.Conn) error { defer conn.Flush() t.pollLock.Lock() defer t.pollLock.Unlock() var request sub.PollRequest var response sub.PollResponse decoder := gob.NewDecoder(conn) if err := decoder.Decode(&request); err != nil { _, err = conn.WriteString(err.Error() + "\n") return err } if _, err := conn.WriteString("\n"); err != nil { return err } response.NetworkSpeed = t.networkReaderContext.MaximumSpeed() t.rwLock.RLock() response.FetchInProgress = t.fetchInProgress response.UpdateInProgress = t.updateInProgress response.LastUpdateHadTriggerFailures = t.lastUpdateHadTriggerFailures t.rwLock.RUnlock() response.GenerationCount = t.fileSystemHistory.GenerationCount() fs := t.fileSystemHistory.FileSystem() if fs != nil && request.HaveGeneration != t.fileSystemHistory.GenerationCount() { response.FileSystemFollows = true } encoder := gob.NewEncoder(conn) if err := encoder.Encode(response); err != nil { return err } if response.FileSystemFollows { if err := fs.FileSystem.Encode(conn); err != nil { return err } if err := fs.ObjectCache.Encode(conn); err != nil { return err } } return nil }
func (t *rpcType) Update(conn *srpc.Conn) error { var request sub.UpdateRequest var response sub.UpdateResponse decoder := gob.NewDecoder(conn) if err := decoder.Decode(&request); err != nil { _, err = conn.WriteString(err.Error() + "\n") return err } if err := t.update(request, &response); err != nil { _, err = conn.WriteString(err.Error() + "\n") return err } if _, err := conn.WriteString("\n"); err != nil { return err } return gob.NewEncoder(conn).Encode(response) }
func (t *rpcType) Cleanup(conn *srpc.Conn) error { defer conn.Flush() var request sub.CleanupRequest var response sub.CleanupResponse decoder := gob.NewDecoder(conn) if err := decoder.Decode(&request); err != nil { _, err = conn.WriteString(err.Error() + "\n") return err } if err := t.cleanup(request, &response); err != nil { _, err = conn.WriteString(err.Error() + "\n") return err } if _, err := conn.WriteString("\n"); err != nil { return err } return gob.NewEncoder(conn).Encode(response) }
func (t *srpcType) DeleteImage(conn *srpc.Conn) error { defer conn.Flush() var request imageserver.DeleteImageRequest var response imageserver.DeleteImageResponse decoder := gob.NewDecoder(conn) if err := decoder.Decode(&request); err != nil { _, err = conn.WriteString(err.Error() + "\n") return err } if err := t.deleteImage(request, &response); err != nil { _, err = conn.WriteString(err.Error() + "\n") return err } if _, err := conn.WriteString("\n"); err != nil { return err } return gob.NewEncoder(conn).Encode(response) }