| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 const string& host, | 567 const string& host, |
| 568 const string& user_agent) | 568 const string& user_agent) |
| 569 : path_(path), | 569 : path_(path), |
| 570 referrer_(referrer), | 570 referrer_(referrer), |
| 571 host_(host), | 571 host_(host), |
| 572 user_agent_(user_agent) { } | 572 user_agent_(user_agent) { } |
| 573 | 573 |
| 574 | 574 |
| 575 void ParseOptions(int argc, | 575 void ParseOptions(int argc, |
| 576 char* argv[], | 576 char* argv[], |
| 577 map<string, string>& options, | 577 map<string, string>* options, |
| 578 string* file) { | 578 string* file) { |
| 579 for (int i = 1; i < argc; i++) { | 579 for (int i = 1; i < argc; i++) { |
| 580 string arg = argv[i]; | 580 string arg = argv[i]; |
| 581 size_t index = arg.find('=', 0); | 581 size_t index = arg.find('=', 0); |
| 582 if (index == string::npos) { | 582 if (index == string::npos) { |
| 583 *file = arg; | 583 *file = arg; |
| 584 } else { | 584 } else { |
| 585 string key = arg.substr(0, index); | 585 string key = arg.substr(0, index); |
| 586 string value = arg.substr(index+1); | 586 string value = arg.substr(index+1); |
| 587 options[key] = value; | 587 (*options)[key] = value; |
| 588 } | 588 } |
| 589 } | 589 } |
| 590 } | 590 } |
| 591 | 591 |
| 592 | 592 |
| 593 // Reads a file into a v8 string. | 593 // Reads a file into a v8 string. |
| 594 Handle<String> ReadFile(Isolate* isolate, const string& name) { | 594 Handle<String> ReadFile(Isolate* isolate, const string& name) { |
| 595 FILE* file = fopen(name.c_str(), "rb"); | 595 FILE* file = fopen(name.c_str(), "rb"); |
| 596 if (file == NULL) return Handle<String>(); | 596 if (file == NULL) return Handle<String>(); |
| 597 | 597 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 639 pair<string, string> entry = *i; | 639 pair<string, string> entry = *i; |
| 640 printf("%s: %s\n", entry.first.c_str(), entry.second.c_str()); | 640 printf("%s: %s\n", entry.first.c_str(), entry.second.c_str()); |
| 641 } | 641 } |
| 642 } | 642 } |
| 643 | 643 |
| 644 | 644 |
| 645 int main(int argc, char* argv[]) { | 645 int main(int argc, char* argv[]) { |
| 646 v8::V8::InitializeICU(); | 646 v8::V8::InitializeICU(); |
| 647 map<string, string> options; | 647 map<string, string> options; |
| 648 string file; | 648 string file; |
| 649 ParseOptions(argc, argv, options, &file); | 649 ParseOptions(argc, argv, &options, &file); |
| 650 if (file.empty()) { | 650 if (file.empty()) { |
| 651 fprintf(stderr, "No script was specified.\n"); | 651 fprintf(stderr, "No script was specified.\n"); |
| 652 return 1; | 652 return 1; |
| 653 } | 653 } |
| 654 Isolate* isolate = Isolate::New(); | 654 Isolate* isolate = Isolate::New(); |
| 655 Isolate::Scope isolate_scope(isolate); | 655 Isolate::Scope isolate_scope(isolate); |
| 656 HandleScope scope(isolate); | 656 HandleScope scope(isolate); |
| 657 Handle<String> source = ReadFile(isolate, file); | 657 Handle<String> source = ReadFile(isolate, file); |
| 658 if (source.IsEmpty()) { | 658 if (source.IsEmpty()) { |
| 659 fprintf(stderr, "Error reading '%s'.\n", file.c_str()); | 659 fprintf(stderr, "Error reading '%s'.\n", file.c_str()); |
| 660 return 1; | 660 return 1; |
| 661 } | 661 } |
| 662 JsHttpRequestProcessor processor(isolate, source); | 662 JsHttpRequestProcessor processor(isolate, source); |
| 663 map<string, string> output; | 663 map<string, string> output; |
| 664 if (!processor.Initialize(&options, &output)) { | 664 if (!processor.Initialize(&options, &output)) { |
| 665 fprintf(stderr, "Error initializing processor.\n"); | 665 fprintf(stderr, "Error initializing processor.\n"); |
| 666 return 1; | 666 return 1; |
| 667 } | 667 } |
| 668 if (!ProcessEntries(&processor, kSampleSize, kSampleRequests)) | 668 if (!ProcessEntries(&processor, kSampleSize, kSampleRequests)) |
| 669 return 1; | 669 return 1; |
| 670 PrintMap(&output); | 670 PrintMap(&output); |
| 671 } | 671 } |
| OLD | NEW |