func (s *Contester) Identify(request *contester_proto.IdentifyRequest, response *contester_proto.IdentifyResponse) error { backend, err := storage.NewBackend(request.GetMongoHost()) if err != nil { return err } s.mu.Lock() if s.Storage != nil { s.Storage.Close() } s.Storage = backend s.mu.Unlock() response.InvokerId = &s.InvokerId response.Environment = &contester_proto.LocalEnvironment{ Variable: s.Env[:]} response.Sandboxes = make([]*contester_proto.SandboxLocations, len(s.Sandboxes)) for i, p := range s.Sandboxes { response.Sandboxes[i] = &contester_proto.SandboxLocations{ Compile: proto.String(p.Compile.Path), Run: proto.String(p.Run.Path)} } response.Platform = &s.Platform response.PathSeparator = &s.PathSeparator response.Disks = s.Disks response.ProgramFiles = s.ProgramFiles return nil }
func (s *Contester) Identify(request *contester_proto.IdentifyRequest, response *contester_proto.IdentifyResponse) error { if err := s.Storage.SetDefault(*request.MongoHost); err != nil { return err } response.InvokerId = &s.InvokerId response.Environment = &contester_proto.LocalEnvironment{ Variable: s.Env[:]} response.Sandboxes = make([]*contester_proto.SandboxLocations, len(s.Sandboxes)) for i, p := range s.Sandboxes { response.Sandboxes[i] = &contester_proto.SandboxLocations{ Compile: proto.String(p.Compile.Path), Run: proto.String(p.Run.Path)} } response.Platform = &s.Platform response.PathSeparator = &s.PathSeparator response.Disks = s.Disks response.ProgramFiles = s.ProgramFiles return nil }