func (c *Collections) Create(fid *srv.FFid, name string, perm uint32) (*srv.File, error) { if collection, ok := c.collections[name]; ok { return collection, nil } collection := new(srv.File) if err := collection.Add(&c.File, name, c.uid, nil, go9p.DMDIR|0555, collection); err != nil { return nil, err } query := new(Text) if err := query.Add(collection, "query", c.uid, nil, 0666, query); err != nil { return nil, err } mmap := new(Text) if err := mmap.Add(collection, "map", c.uid, nil, 0666, mmap); err != nil { return nil, err } reduce := new(Text) if err := reduce.Add(collection, "reduce", c.uid, nil, 0666, reduce); err != nil { return nil, err } documents := new(Documents) if err := documents.Add(collection, "documents", c.uid, nil, 0666, documents); err != nil { return nil, err } documents.collection = c.db.C(name) documents.query = query documents.mmap = mmap documents.reduce = reduce c.collections[name] = collection return collection, nil }
func main() { var err error var tm *Time var ntm *InfTime var s *srv.Fsrv flag.Parse() user := go9p.OsUsers.Uid2User(os.Geteuid()) root := new(srv.File) err = root.Add(nil, "/", user, nil, go9p.DMDIR|0555, nil) if err != nil { goto error } tm = new(Time) err = tm.Add(root, "time", go9p.OsUsers.Uid2User(os.Geteuid()), nil, 0444, tm) if err != nil { goto error } ntm = new(InfTime) err = ntm.Add(root, "inftime", go9p.OsUsers.Uid2User(os.Geteuid()), nil, 0444, ntm) if err != nil { goto error } s = srv.NewFileSrv(root) s.Dotu = true if *debug { s.Debuglevel = 1 } if *debugall { s.Debuglevel = 2 } s.Start(s) err = s.StartNetListener("tcp", *addr) if err != nil { goto error } return error: log.Println(fmt.Sprintf("Error: %s", err)) }
func start() error { session, err := mgo.Dial(*mongo) if err != nil { return err } defer session.Close() user := go9p.OsUsers.Uid2User(os.Geteuid()) root := new(srv.File) if err := root.Add(nil, "/", user, nil, go9p.DMDIR|0555, nil); err != nil { return err } if err := collections.Add(root, user, session.DB(*dbname)); err != nil { return err } s := srv.NewFileSrv(root) s.Dotu = true s.Start(s) //s.Debuglevel = srv.DbgPrintFcalls return s.StartNetListener("tcp", *addr) }