first compile
authorRyan <ry@tinyclouds.org>
Fri, 20 Feb 2009 16:06:07 +0000 (17:06 +0100)
committerRyan <ry@tinyclouds.org>
Fri, 20 Feb 2009 16:06:07 +0000 (17:06 +0100)
Makefile
count-hosts.js [new file with mode: 0644]
js_http_request_processor.cc

index 11d51d4..700b950 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,18 +3,21 @@ V8INC = $(HOME)/src/v8/include
 V8LIB = $(HOME)/src/v8/libv8.a
 
 CFLAGS = -g -I$(V8INC) -Ideps/oi -DHAVE_GNUTLS=0 -Ideps/ebb 
-LDFLAGS = -lev #-lefence
+LDFLAGS = -lev -pthread #-lefence
 
 ifdef EVDIR
        CFLAGS += -I$(EVDIR)/include
        LDFLAGS += -L$(EVDIR)/lib
 endif
 
-server: server.o oi_socket.o ebb_request_parser.o
-       g++ $(LDFLAGS) $(V8LIB) $^ -o server 
+server: js_http_request_processor.o server.o oi_socket.o ebb_request_parser.o
+       g++ -o server $^ $(LDFLAGS)  $(V8LIB) 
 
 server.o: server.cc 
        g++ $(CFLAGS) -c $<
+       
+js_http_request_processor.o: js_http_request_processor.cc 
+       g++ $(CFLAGS) -c $<
 
 ebb_request_parser.o: ebb_request_parser.c deps/ebb/ebb_request_parser.h 
        gcc $(CFLAGS) -c $<
diff --git a/count-hosts.js b/count-hosts.js
new file mode 100644 (file)
index 0000000..e336476
--- /dev/null
@@ -0,0 +1,44 @@
+// Copyright 2008 the V8 project authors. All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+//       notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+//       copyright notice, this list of conditions and the following
+//       disclaimer in the documentation and/or other materials provided
+//       with the distribution.
+//     * Neither the name of Google Inc. nor the names of its
+//       contributors may be used to endorse or promote products derived
+//       from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+function Initialize() { }
+
+
+function Process(request) {
+  print("hello ");
+  if (options.verbose) {
+    log("Processing " + request.host + request.path +
+        " from " + request.referrer + "@" + request.userAgent);
+  }
+  if (!output[request.host]) {
+    output[request.host] = 1;
+  } else {
+    output[request.host]++
+  }
+}
+
+Initialize();
index 5c76f4b..dd3d832 100644 (file)
@@ -32,7 +32,7 @@
 #include <string>
 #include <map>
 
-#include <js_http_request_processor.h>
+#include "js_http_request_processor.h"
 
 using namespace std;
 using namespace v8;
@@ -459,115 +459,6 @@ void HttpRequestProcessor::Log
   printf("Logged: %s\n", event);
 }
 
-
-/**
- * A simplified http request.
- */
-class StringHttpRequest : public HttpRequest 
-{
-public:
-  StringHttpRequest
-    ( const string& path
-    , const string& referrer
-    , const string& host
-    , const string& user_agent
-    );
-  virtual const string& Path ()      { return path_; }
-  virtual const string& Referrer ()  { return referrer_; }
-  virtual const string& Host ()      { return host_; }
-  virtual const string& UserAgent () { return user_agent_; }
-private:
-  string path_;
-  string referrer_;
-  string host_;
-  string user_agent_;
-};
-
-
-StringHttpRequest::StringHttpRequest
-  ( const string& path
-  , const string& referrer
-  , const string& host 
-  , const string& user_agent
-  ) 
-  : path_       (path)
-  , referrer_   (referrer)
-  , host_       (host)
-  , user_agent_ (user_agent) 
-{ 
-}
-
-void ParseOptions
-  ( int argc
-  , char* argv[]
-  , map<string, string>& options
-  , string* file
-  )
-{
-  for (int i = 1; i < argc; i++) {
-    string arg = argv[i];
-    int index = arg.find('=', 0);
-    if (index == string::npos) {
-      *file = arg;
-    } else {
-      string key = arg.substr(0, index);
-      string value = arg.substr(index+1);
-      options[key] = value;
-    }
-  }
-}
-
-
-// Reads a file into a v8 string.
-Handle<String> ReadFile
-  ( const string& name
-  ) 
-{
-  FILE* file = fopen(name.c_str(), "rb");
-  if (file == NULL) return Handle<String>();
-
-  fseek(file, 0, SEEK_END);
-  int size = ftell(file);
-  rewind(file);
-
-  char* chars = new char[size + 1];
-  chars[size] = '\0';
-  for (int i = 0; i < size;) {
-    int read = fread(&chars[i], 1, size - i, file);
-    i += read;
-  }
-  fclose(file);
-  Handle<String> result = String::New(chars, size);
-  delete[] chars;
-  return result;
-}
-
-
-const int kSampleSize = 6;
-StringHttpRequest kSampleRequests[kSampleSize] = 
-  { StringHttpRequest("/process.cc", "localhost", "google.com", "firefox")
-  , StringHttpRequest("/", "localhost", "google.net", "firefox")
-  , StringHttpRequest("/", "localhost", "google.org", "safari")
-  , StringHttpRequest("/", "localhost", "yahoo.com", "ie")
-  , StringHttpRequest("/", "localhost", "yahoo.com", "safari")
-  , StringHttpRequest("/", "localhost", "yahoo.com", "firefox")
-  };
-
-
-bool ProcessEntries
-  ( HttpRequestProcessor* processor
-  , int count
-  , StringHttpRequest* reqs
-  ) 
-{
-  for (int i = 0; i < count; i++) {
-    if (!processor->Process(&reqs[i]))
-      return false;
-  }
-  return true;
-}
-
-
 void PrintMap
   ( map<string, string>* m
   )