diff --git a/index/server.go b/index/server.go index 1328029f0..4887038e7 100644 --- a/index/server.go +++ b/index/server.go @@ -12,90 +12,25 @@ import ( "log" ) -var ( - fragments[] *Fragment -) -type Pilosa interface{ - Union([]uint64) IBitmap - Intersect([] uint64) IBitmap - // SetBit(id uint64, bit_pos int64)bool +type FragmentContainer struct { + fragments map[string] *Fragment +} +func NewFragmentContainer() *FragmentContainer{ + return &FragmentContainer{make( map[string]*Fragment)} +} + +func (a *FragmentContainer) ServeHTTP(w http.ResponseWriter, r *http.Request) { + handler(w , r,a.fragments) } -type RequestJSON struct { - Request string - FragmentIndex int - Args json.RawMessage -} -type Fragment struct { - requestChan chan Command - shardkey int - impl Pilosa +func (a *FragmentContainer) AddFragment(frame string, db string, slice int, frag_guid string) { + f :=&Fragment{make(chan Command),frag_guid, NewGeneral(db,slice,NewMemoryStorage())} + a.fragments[frag_guid] = f + go f.ServeFragment() } -func (f *Fragment) ServeFragment() { - for { - req := <-f.requestChan - start := time.Now() - answer := `""` - answer = req.Execute(f) - delta := time.Since(start) - var buffer bytes.Buffer - buffer.WriteString(`{ "results":`) - buffer.WriteString(answer) - buffer.WriteString(fmt.Sprintf(`,"query type": "%s"`, req.QueryType())) - buffer.WriteString(fmt.Sprintf(`, "elapsed": "%s"}`, delta)) - req.ResponseChannel() <- buffer.String() - } -} - -func handler(w http.ResponseWriter, r *http.Request) { - log.Println("GOT MESSAGE") - if r.Method == "POST" { - var f RequestJSON - - bin, _ := ioutil.ReadAll(r.Body) - err := json.Unmarshal(bin, &f) - - if err != nil { - w.Header().Set("Content-Type", "application/json") - fmt.Fprintf(w, fmt.Sprintf(`{ "error":"%s"}`, err)) - - } - decoder := json.NewDecoder(bytes.NewReader(f.Args)) - request := BuildCommandFactory(&f, decoder) - w.Header().Set("Content-Type", "application/json") - if request != nil { - output:=`{"Error":"Invalid FragmentIndex"}` - if f.FragmentIndex>>>DONE") + */ + + + r, err := http.NewRequest("POST", "http://api/foo", strings.NewReader(msg)) + if err != nil { + log.Fatal(err) + } + + w := httptest.NewRecorder() + dummy:=FragmentContainer{make(map[string]*Fragment)} + dummy.AddFragment("general", "25", 0, "AAA-BBB-CCC") + + dummy.ServeHTTP(w , r ) + log.Printf("%d - %s", w.Code, w.Body.String()) + - } func TestServer(t *testing.T) { Convey("Run Server", t, func() { - Stop := make(chan bool) - Start := make(chan bool) - go StartServer(":8089",Stop,Start) - select{ - case <-Start: + // Stop := make(chan bool) + // Start := make(chan bool) + // go StartServer(":8089",Stop,Start) + // select{ + // case <-Start: simple() - case <-time.After(time.Duration(5) * time.Second): - } - Stop<- true + // case <-time.After(time.Duration(5) * time.Second): + // } + // Stop<- true So(0, ShouldEqual, 0) }) }