github.com/bhojpur/cache@v0.0.4/templates/ego.go (about) 1 package templates 2 3 // Copyright (c) 2018 Bhojpur Consulting Private Limited, India. All rights reserved. 4 5 // Permission is hereby granted, free of charge, to any person obtaining a copy 6 // of this software and associated documentation files (the "Software"), to deal 7 // in the Software without restriction, including without limitation the rights 8 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 // copies of the Software, and to permit persons to whom the Software is 10 // furnished to do so, subject to the following conditions: 11 12 // The above copyright notice and this permission notice shall be included in 13 // all copies or substantial portions of the Software. 14 15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 // THE SOFTWARE. 22 23 import ( 24 "fmt" 25 "io" 26 "net/http" 27 "path/filepath" 28 "strings" 29 "unsafe" 30 31 memcache "github.com/bhojpur/cache/pkg/memory" 32 ) 33 34 //line error.ego:1 35 func Error(w io.Writer, err error) error { 36 //line error.ego:2 37 if _, err := fmt.Fprintf(w, "\n\n"); err != nil { 38 return err 39 } 40 //line error.ego:3 41 if _, err := fmt.Fprintf(w, "<!DOCTYPE html>\n"); err != nil { 42 return err 43 } 44 //line error.ego:4 45 if _, err := fmt.Fprintf(w, "<html lang=\"en\">\n "); err != nil { 46 return err 47 } 48 //line error.ego:5 49 if _, err := fmt.Fprintf(w, "<head>\n "); err != nil { 50 return err 51 } 52 //line error.ego:6 53 if _, err := fmt.Fprintf(w, "<meta charset=\"utf-8\">\n "); err != nil { 54 return err 55 } 56 //line error.ego:7 57 if _, err := fmt.Fprintf(w, "<title>Bhojpur Cache - Introspection Dashboard"); err != nil { 58 return err 59 } 60 //line error.ego:7 61 if _, err := fmt.Fprintf(w, "</title>\n "); err != nil { 62 return err 63 } 64 //line error.ego:8 65 if _, err := fmt.Fprintf(w, "</head>\n\n "); err != nil { 66 return err 67 } 68 //line error.ego:10 69 if _, err := fmt.Fprintf(w, "<body class=\"error\">\n "); err != nil { 70 return err 71 } 72 //line error.ego:11 73 if _, err := fmt.Fprintf(w, "<div class=\"container\">\n "); err != nil { 74 return err 75 } 76 //line error.ego:12 77 if _, err := fmt.Fprintf(w, "<div class=\"header\">\n "); err != nil { 78 return err 79 } 80 //line error.ego:13 81 if _, err := fmt.Fprintf(w, "<h3 class=\"text-muted\">Error"); err != nil { 82 return err 83 } 84 //line error.ego:13 85 if _, err := fmt.Fprintf(w, "</h3>\n "); err != nil { 86 return err 87 } 88 //line error.ego:14 89 if _, err := fmt.Fprintf(w, "</div>\n\n An error has occurred: "); err != nil { 90 return err 91 } 92 //line error.ego:16 93 if _, err := fmt.Fprintf(w, "%v", err); err != nil { 94 return err 95 } 96 //line error.ego:17 97 if _, err := fmt.Fprintf(w, "\n "); err != nil { 98 return err 99 } 100 //line error.ego:17 101 if _, err := fmt.Fprintf(w, "</div> "); err != nil { 102 return err 103 } 104 //line error.ego:17 105 if _, err := fmt.Fprintf(w, "<!-- /container -->\n "); err != nil { 106 return err 107 } 108 //line error.ego:18 109 if _, err := fmt.Fprintf(w, "</body>\n"); err != nil { 110 return err 111 } 112 //line error.ego:19 113 if _, err := fmt.Fprintf(w, "</html>\n"); err != nil { 114 return err 115 } 116 return nil 117 } 118 119 //line head.ego:1 120 func head(w io.Writer, tx *memcache.Tx) error { 121 //line head.ego:2 122 if _, err := fmt.Fprintf(w, "\n\n"); err != nil { 123 return err 124 } 125 //line head.ego:4 126 if _, err := fmt.Fprintf(w, "\n"); err != nil { 127 return err 128 } 129 //line head.ego:5 130 if _, err := fmt.Fprintf(w, "\n\n"); err != nil { 131 return err 132 } 133 //line head.ego:6 134 if _, err := fmt.Fprintf(w, "<head>\n "); err != nil { 135 return err 136 } 137 //line head.ego:7 138 if _, err := fmt.Fprintf(w, "<meta charset=\"utf-8\">\n "); err != nil { 139 return err 140 } 141 //line head.ego:8 142 if _, err := fmt.Fprintf(w, "<title>Bhojpur Cache - "); err != nil { 143 return err 144 } 145 //line head.ego:8 146 if _, err := fmt.Fprintf(w, "%v", filepath.Base(tx.DB().Path())); err != nil { 147 return err 148 } 149 //line head.ego:8 150 if _, err := fmt.Fprintf(w, "</title>\n\n "); err != nil { 151 return err 152 } 153 //line head.ego:10 154 if _, err := fmt.Fprintf(w, "<style>\n table {\n border-collapse:collapse;\n }\n \n table, th, td {\n border: 1px solid black;\n }\n\n th, td { \n min-width: 100px;\n padding: 2px 5px;\n }\n "); err != nil { 155 return err 156 } 157 //line head.ego:23 158 if _, err := fmt.Fprintf(w, "</style>\n"); err != nil { 159 return err 160 } 161 //line head.ego:24 162 if _, err := fmt.Fprintf(w, "</head>\n"); err != nil { 163 return err 164 } 165 return nil 166 } 167 168 //line index.ego:1 169 func Index(w io.Writer) error { 170 //line index.ego:2 171 if _, err := fmt.Fprintf(w, "\n\n"); err != nil { 172 return err 173 } 174 //line index.ego:3 175 if _, err := fmt.Fprintf(w, "<!DOCTYPE html>\n"); err != nil { 176 return err 177 } 178 //line index.ego:4 179 if _, err := fmt.Fprintf(w, "<html lang=\"en\">\n "); err != nil { 180 return err 181 } 182 //line index.ego:5 183 if _, err := fmt.Fprintf(w, "<head>\n "); err != nil { 184 return err 185 } 186 //line index.ego:6 187 if _, err := fmt.Fprintf(w, "<meta http-equiv=\"refresh\" content=\"0; url=page\">\n "); err != nil { 188 return err 189 } 190 //line index.ego:7 191 if _, err := fmt.Fprintf(w, "</head>\n\n "); err != nil { 192 return err 193 } 194 //line index.ego:9 195 196 197 if _, err := fmt.Fprintf(w, "<body>redirecting..."); err != nil { 198 return err 199 } 200 //line index.ego:9 201 if _, err := fmt.Fprintf(w, "</body>\n"); err != nil { 202 return err 203 } 204 //line index.ego:10 205 if _, err := fmt.Fprintf(w, "</html>\n"); err != nil { 206 return err 207 } 208 return nil 209 } 210 211 //line nav.ego:1 212 func nav(w io.Writer, tx *memcache.Tx) error { 213 //line nav.ego:2 214 if _, err := fmt.Fprintf(w, "\n\n"); err != nil { 215 return err 216 } 217 //line nav.ego:4 218 if _, err := fmt.Fprintf(w, "\n"); err != nil { 219 return err 220 } 221 //line nav.ego:5 222 if _, err := fmt.Fprintf(w, "\n\n"); err != nil { 223 return err 224 } 225 //line nav.ego:6 226 if _, err := fmt.Fprintf(w, "<h1>"); err != nil { 227 return err 228 } 229 //line nav.ego:6 230 if _, err := fmt.Fprintf(w, "%v", filepath.Base(tx.DB().Path())); err != nil { 231 return err 232 } 233 //line nav.ego:6 234 if _, err := fmt.Fprintf(w, "</h1>\n"); err != nil { 235 return err 236 } 237 return nil 238 } 239 240 //line page.ego:1 241 func Page(w io.Writer, r *http.Request, tx *memcache.Tx, indexes []int, directID int, showUsage bool) error { 242 //line page.ego:2 243 if _, err := fmt.Fprintf(w, "\n\n"); err != nil { 244 return err 245 } 246 //line page.ego:4 247 if _, err := fmt.Fprintf(w, "\n"); err != nil { 248 return err 249 } 250 //line page.ego:5 251 if _, err := fmt.Fprintf(w, "\n"); err != nil { 252 return err 253 } 254 //line page.ego:6 255 if _, err := fmt.Fprintf(w, "\n"); err != nil { 256 return err 257 } 258 //line page.ego:7 259 if _, err := fmt.Fprintf(w, "\n\n"); err != nil { 260 return err 261 } 262 //line page.ego:9 263 p, ids, err := find(tx, directID, indexes) 264 if err != nil { 265 return err 266 } 267 268 // Generate page stats. 269 pageSize := tx.DB().Info().PageSize 270 stats := p.stats(pageSize) 271 272 // Generate histogram of all nested page usage. 273 var histogram map[int]int 274 if showUsage { 275 histogram = usage(tx, p.id) 276 } 277 278 //line page.ego:25 279 if _, err := fmt.Fprintf(w, "\n\n"); err != nil { 280 return err 281 } 282 //line page.ego:26 283 if _, err := fmt.Fprintf(w, "<!DOCTYPE html>\n"); err != nil { 284 return err 285 } 286 //line page.ego:27 287 if _, err := fmt.Fprintf(w, "<html lang=\"en\">\n "); err != nil { 288 return err 289 } 290 //line page.ego:28 291 head(w, tx) 292 //line page.ego:29 293 if _, err := fmt.Fprintf(w, "\n\n "); err != nil { 294 return err 295 } 296 //line page.ego:30 297 if _, err := fmt.Fprintf(w, "<body>\n "); err != nil { 298 return err 299 } 300 //line page.ego:31 301 nav(w, tx) 302 //line page.ego:32 303 if _, err := fmt.Fprintf(w, "\n\n "); err != nil { 304 return err 305 } 306 //line page.ego:33 307 if _, err := fmt.Fprintf(w, "<h2>\n "); err != nil { 308 return err 309 } 310 //line page.ego:34 311 for i, id := range ids { 312 //line page.ego:35 313 if _, err := fmt.Fprintf(w, "\n "); err != nil { 314 return err 315 } 316 //line page.ego:35 317 if i > 0 { 318 //line page.ego:35 319 if _, err := fmt.Fprintf(w, "»"); err != nil { 320 return err 321 } 322 //line page.ego:35 323 } 324 //line page.ego:36 325 if _, err := fmt.Fprintf(w, "\n "); err != nil { 326 return err 327 } 328 //line page.ego:36 329 if _, err := fmt.Fprintf(w, "<a href=\""); err != nil { 330 return err 331 } 332 //line page.ego:36 333 if _, err := fmt.Fprintf(w, "%v", pagelink(indexes[:i+1])); err != nil { 334 return err 335 } 336 //line page.ego:36 337 if _, err := fmt.Fprintf(w, "\">#"); err != nil { 338 return err 339 } 340 //line page.ego:36 341 if _, err := fmt.Fprintf(w, "%v", id); err != nil { 342 return err 343 } 344 //line page.ego:36 345 if _, err := fmt.Fprintf(w, "</a>\n "); err != nil { 346 return err 347 } 348 //line page.ego:37 349 } 350 //line page.ego:38 351 if _, err := fmt.Fprintf(w, "\n "); err != nil { 352 return err 353 } 354 //line page.ego:38 355 if _, err := fmt.Fprintf(w, "</h2>\n\n "); err != nil { 356 return err 357 } 358 //line page.ego:40 359 if _, err := fmt.Fprintf(w, "<h3>Bhojpur Cache - Page Information"); err != nil { 360 return err 361 } 362 //line page.ego:40 363 if _, err := fmt.Fprintf(w, "</h3>\n "); err != nil { 364 return err 365 } 366 //line page.ego:41 367 if _, err := fmt.Fprintf(w, "<p>\n "); err != nil { 368 return err 369 } 370 //line page.ego:42 371 if _, err := fmt.Fprintf(w, "<strong>ID:"); err != nil { 372 return err 373 } 374 //line page.ego:42 375 if _, err := fmt.Fprintf(w, "</strong> "); err != nil { 376 return err 377 } 378 //line page.ego:42 379 if _, err := fmt.Fprintf(w, "%v", comma(int(p.id))); err != nil { 380 return err 381 } 382 //line page.ego:42 383 if _, err := fmt.Fprintf(w, "<br/>\n "); err != nil { 384 return err 385 } 386 //line page.ego:43 387 if _, err := fmt.Fprintf(w, "<strong>Type:"); err != nil { 388 return err 389 } 390 //line page.ego:43 391 if _, err := fmt.Fprintf(w, "</strong> "); err != nil { 392 return err 393 } 394 //line page.ego:43 395 if _, err := fmt.Fprintf(w, "%v", fmt.Sprintf("%s (%x)", p.typ(), p.flags)); err != nil { 396 return err 397 } 398 //line page.ego:43 399 if _, err := fmt.Fprintf(w, "<br/>\n "); err != nil { 400 return err 401 } 402 //line page.ego:44 403 if _, err := fmt.Fprintf(w, "<strong>Overflow:"); err != nil { 404 return err 405 } 406 //line page.ego:44 407 if _, err := fmt.Fprintf(w, "</strong> "); err != nil { 408 return err 409 } 410 //line page.ego:44 411 if _, err := fmt.Fprintf(w, "%v", p.overflow); err != nil { 412 return err 413 } 414 //line page.ego:44 415 if _, err := fmt.Fprintf(w, "<br/>"); err != nil { 416 return err 417 } 418 //line page.ego:44 419 if _, err := fmt.Fprintf(w, "<br/>\n\n "); err != nil { 420 return err 421 } 422 //line page.ego:46 423 if _, err := fmt.Fprintf(w, "<strong>Alloc:"); err != nil { 424 return err 425 } 426 //line page.ego:46 427 if _, err := fmt.Fprintf(w, "</strong> "); err != nil { 428 return err 429 } 430 //line page.ego:46 431 if _, err := fmt.Fprintf(w, "%v", comma(stats.alloc)); err != nil { 432 return err 433 } 434 //line page.ego:46 435 if _, err := fmt.Fprintf(w, "<br/>\n "); err != nil { 436 return err 437 } 438 //line page.ego:47 439 if _, err := fmt.Fprintf(w, "<strong>In Use:"); err != nil { 440 return err 441 } 442 //line page.ego:47 443 if _, err := fmt.Fprintf(w, "</strong> "); err != nil { 444 return err 445 } 446 //line page.ego:47 447 if _, err := fmt.Fprintf(w, "%v", comma(stats.inuse)); err != nil { 448 return err 449 } 450 //line page.ego:47 451 if _, err := fmt.Fprintf(w, "<br/>\n "); err != nil { 452 return err 453 } 454 //line page.ego:48 455 if _, err := fmt.Fprintf(w, "<strong>Utilization:"); err != nil { 456 return err 457 } 458 //line page.ego:48 459 if _, err := fmt.Fprintf(w, "</strong> "); err != nil { 460 return err 461 } 462 //line page.ego:48 463 if _, err := fmt.Fprintf(w, "%v", fmt.Sprintf("%.2f%%", stats.utilization*100)); err != nil { 464 return err 465 } 466 //line page.ego:48 467 if _, err := fmt.Fprintf(w, "<br/>\n "); err != nil { 468 return err 469 } 470 //line page.ego:49 471 if _, err := fmt.Fprintf(w, "</p>\n\n "); err != nil { 472 return err 473 } 474 //line page.ego:51 475 if (p.flags & branchPageFlag) != 0 { 476 //line page.ego:52 477 if _, err := fmt.Fprintf(w, "\n "); err != nil { 478 return err 479 } 480 //line page.ego:52 481 if _, err := fmt.Fprintf(w, "<h3>Branch Elements ("); err != nil { 482 return err 483 } 484 //line page.ego:52 485 if _, err := fmt.Fprintf(w, "%v", p.count); err != nil { 486 return err 487 } 488 //line page.ego:52 489 if _, err := fmt.Fprintf(w, ")"); err != nil { 490 return err 491 } 492 //line page.ego:52 493 if _, err := fmt.Fprintf(w, "</h3>\n "); err != nil { 494 return err 495 } 496 //line page.ego:53 497 if _, err := fmt.Fprintf(w, "<table>\n "); err != nil { 498 return err 499 } 500 //line page.ego:54 501 if _, err := fmt.Fprintf(w, "<thead>\n "); err != nil { 502 return err 503 } 504 //line page.ego:55 505 if _, err := fmt.Fprintf(w, "<tr>\n "); err != nil { 506 return err 507 } 508 //line page.ego:56 509 if _, err := fmt.Fprintf(w, "<th align=\"left\">Key"); err != nil { 510 return err 511 } 512 //line page.ego:56 513 if _, err := fmt.Fprintf(w, "</th>\n "); err != nil { 514 return err 515 } 516 //line page.ego:57 517 if _, err := fmt.Fprintf(w, "<th align=\"left\">Page ID"); err != nil { 518 return err 519 } 520 //line page.ego:57 521 if _, err := fmt.Fprintf(w, "</th>\n "); err != nil { 522 return err 523 } 524 //line page.ego:58 525 if _, err := fmt.Fprintf(w, "<th align=\"left\">Size (k)"); err != nil { 526 return err 527 } 528 //line page.ego:58 529 if _, err := fmt.Fprintf(w, "</th>\n "); err != nil { 530 return err 531 } 532 //line page.ego:59 533 if _, err := fmt.Fprintf(w, "<th align=\"center\">%%Util"); err != nil { 534 return err 535 } 536 //line page.ego:59 537 if _, err := fmt.Fprintf(w, "</th>\n "); err != nil { 538 return err 539 } 540 //line page.ego:60 541 if _, err := fmt.Fprintf(w, "</tr>\n "); err != nil { 542 return err 543 } 544 //line page.ego:61 545 if _, err := fmt.Fprintf(w, "</thead>\n "); err != nil { 546 return err 547 } 548 //line page.ego:62 549 if _, err := fmt.Fprintf(w, "<tbody>\n "); err != nil { 550 return err 551 } 552 //line page.ego:63 553 for i := uint16(0); i < p.count; i++ { 554 //line page.ego:64 555 if _, err := fmt.Fprintf(w, "\n "); err != nil { 556 return err 557 } 558 //line page.ego:64 559 e := p.branchPageElement(i) 560 //line page.ego:65 561 if _, err := fmt.Fprintf(w, "\n "); err != nil { 562 return err 563 } 564 //line page.ego:65 565 subpage := pageAt(tx, e.pgid) 566 //line page.ego:66 567 if _, err := fmt.Fprintf(w, "\n "); err != nil { 568 return err 569 } 570 //line page.ego:66 571 substats := subpage.stats(pageSize) 572 //line page.ego:67 573 if _, err := fmt.Fprintf(w, "\n "); err != nil { 574 return err 575 } 576 //line page.ego:67 577 if _, err := fmt.Fprintf(w, "<tr>\n "); err != nil { 578 return err 579 } 580 //line page.ego:68 581 if _, err := fmt.Fprintf(w, "<td>"); err != nil { 582 return err 583 } 584 //line page.ego:68 585 if _, err := fmt.Fprintf(w, "%v", trunc(tostr(e.key()), 40)); err != nil { 586 return err 587 } 588 //line page.ego:68 589 if _, err := fmt.Fprintf(w, "</td>\n "); err != nil { 590 return err 591 } 592 //line page.ego:69 593 if _, err := fmt.Fprintf(w, "<td>"); err != nil { 594 return err 595 } 596 //line page.ego:69 597 if _, err := fmt.Fprintf(w, "<a href=\""); err != nil { 598 return err 599 } 600 //line page.ego:69 601 if _, err := fmt.Fprintf(w, "%v", subpagelink(indexes, int(i))); err != nil { 602 return err 603 } 604 //line page.ego:69 605 if _, err := fmt.Fprintf(w, "\">"); err != nil { 606 return err 607 } 608 //line page.ego:69 609 if _, err := fmt.Fprintf(w, "%v", e.pgid); err != nil { 610 return err 611 } 612 //line page.ego:69 613 if _, err := fmt.Fprintf(w, "</a>"); err != nil { 614 return err 615 } 616 //line page.ego:69 617 if _, err := fmt.Fprintf(w, "</td>\n "); err != nil { 618 return err 619 } 620 //line page.ego:70 621 if _, err := fmt.Fprintf(w, "<td>"); err != nil { 622 return err 623 } 624 //line page.ego:70 625 if _, err := fmt.Fprintf(w, "%v", len(e.key())); err != nil { 626 return err 627 } 628 //line page.ego:70 629 if _, err := fmt.Fprintf(w, "</td>\n "); err != nil { 630 return err 631 } 632 //line page.ego:71 633 if _, err := fmt.Fprintf(w, "<td align=\"right\">"); err != nil { 634 return err 635 } 636 //line page.ego:71 637 if _, err := fmt.Fprintf(w, "%v", fmt.Sprintf("%.2f%%", substats.utilization*100)); err != nil { 638 return err 639 } 640 //line page.ego:71 641 if _, err := fmt.Fprintf(w, "</td>\n "); err != nil { 642 return err 643 } 644 //line page.ego:72 645 if _, err := fmt.Fprintf(w, "</tr>\n "); err != nil { 646 return err 647 } 648 //line page.ego:73 649 } 650 //line page.ego:74 651 if _, err := fmt.Fprintf(w, "\n "); err != nil { 652 return err 653 } 654 //line page.ego:74 655 if _, err := fmt.Fprintf(w, "</tbody>\n "); err != nil { 656 return err 657 } 658 //line page.ego:75 659 if _, err := fmt.Fprintf(w, "</table>\n \n "); err != nil { 660 return err 661 } 662 //line page.ego:77 663 } else if (p.flags & leafPageFlag) != 0 { 664 //line page.ego:78 665 if _, err := fmt.Fprintf(w, "\n "); err != nil { 666 return err 667 } 668 //line page.ego:78 669 if _, err := fmt.Fprintf(w, "<h3>Leaf Elements ("); err != nil { 670 return err 671 } 672 //line page.ego:78 673 if _, err := fmt.Fprintf(w, "%v", p.count); err != nil { 674 return err 675 } 676 //line page.ego:78 677 if _, err := fmt.Fprintf(w, ")"); err != nil { 678 return err 679 } 680 //line page.ego:78 681 if _, err := fmt.Fprintf(w, "</h3>\n "); err != nil { 682 return err 683 } 684 //line page.ego:79 685 if _, err := fmt.Fprintf(w, "<table>\n "); err != nil { 686 return err 687 } 688 //line page.ego:80 689 if _, err := fmt.Fprintf(w, "<thead>\n "); err != nil { 690 return err 691 } 692 //line page.ego:81 693 if _, err := fmt.Fprintf(w, "<tr>\n "); err != nil { 694 return err 695 } 696 //line page.ego:82 697 if _, err := fmt.Fprintf(w, "<th align=\"left\">Key"); err != nil { 698 return err 699 } 700 //line page.ego:82 701 if _, err := fmt.Fprintf(w, "</th>\n "); err != nil { 702 return err 703 } 704 //line page.ego:83 705 if _, err := fmt.Fprintf(w, "<th align=\"left\">Value"); err != nil { 706 return err 707 } 708 //line page.ego:83 709 if _, err := fmt.Fprintf(w, "</th>\n "); err != nil { 710 return err 711 } 712 //line page.ego:84 713 if _, err := fmt.Fprintf(w, "<th align=\"left\">Size (k/v)"); err != nil { 714 return err 715 } 716 //line page.ego:84 717 if _, err := fmt.Fprintf(w, "</th>\n "); err != nil { 718 return err 719 } 720 //line page.ego:85 721 if _, err := fmt.Fprintf(w, "<th align=\"center\">%%Util"); err != nil { 722 return err 723 } 724 //line page.ego:85 725 if _, err := fmt.Fprintf(w, "</th>\n "); err != nil { 726 return err 727 } 728 //line page.ego:86 729 if _, err := fmt.Fprintf(w, "</tr>\n "); err != nil { 730 return err 731 } 732 //line page.ego:87 733 if _, err := fmt.Fprintf(w, "</thead>\n "); err != nil { 734 return err 735 } 736 //line page.ego:88 737 if _, err := fmt.Fprintf(w, "<tbody>\n "); err != nil { 738 return err 739 } 740 //line page.ego:89 741 for i := uint16(0); i < p.count; i++ { 742 //line page.ego:90 743 if _, err := fmt.Fprintf(w, "\n "); err != nil { 744 return err 745 } 746 //line page.ego:90 747 e := p.leafPageElement(i) 748 //line page.ego:91 749 if _, err := fmt.Fprintf(w, "\n "); err != nil { 750 return err 751 } 752 //line page.ego:91 753 if (e.flags & bucketLeafFlag) != 0 { 754 //line page.ego:92 755 if _, err := fmt.Fprintf(w, "\n "); err != nil { 756 return err 757 } 758 //line page.ego:92 759 b := ((*bucket)(unsafe.Pointer(&e.value()[0]))) 760 //line page.ego:93 761 if _, err := fmt.Fprintf(w, "\n "); err != nil { 762 return err 763 } 764 //line page.ego:94 765 util := "-" 766 if b.root != 0 { 767 substats := pageAt(tx, b.root).stats(pageSize) 768 util = fmt.Sprintf("%.2f%%", substats.utilization*100) 769 } 770 771 //line page.ego:101 772 if _, err := fmt.Fprintf(w, "\n "); err != nil { 773 return err 774 } 775 //line page.ego:101 776 if _, err := fmt.Fprintf(w, "<tr>\n "); err != nil { 777 return err 778 } 779 //line page.ego:102 780 if _, err := fmt.Fprintf(w, "<td>"); err != nil { 781 return err 782 } 783 //line page.ego:102 784 if _, err := fmt.Fprintf(w, "<strong>"); err != nil { 785 return err 786 } 787 //line page.ego:102 788 if _, err := fmt.Fprintf(w, "%v", trunc(tostr(e.key()), 40)); err != nil { 789 return err 790 } 791 //line page.ego:102 792 if _, err := fmt.Fprintf(w, "</strong>"); err != nil { 793 return err 794 } 795 //line page.ego:102 796 if _, err := fmt.Fprintf(w, "</td>\n "); err != nil { 797 return err 798 } 799 //line page.ego:103 800 if _, err := fmt.Fprintf(w, "<td>\n <bucket(root="); err != nil { 801 return err 802 } 803 //line page.ego:104 804 if b.root != 0 { 805 //line page.ego:104 806 if _, err := fmt.Fprintf(w, "<a href=\""); err != nil { 807 return err 808 } 809 //line page.ego:104 810 if _, err := fmt.Fprintf(w, "%v", subpagelink(indexes, int(i))); err != nil { 811 return err 812 } 813 //line page.ego:104 814 if _, err := fmt.Fprintf(w, "\">"); err != nil { 815 return err 816 } 817 //line page.ego:104 818 } 819 //line page.ego:104 820 if _, err := fmt.Fprintf(w, "%v", b.root); err != nil { 821 return err 822 } 823 //line page.ego:104 824 if b.root != 0 { 825 //line page.ego:104 826 if _, err := fmt.Fprintf(w, "</a>"); err != nil { 827 return err 828 } 829 //line page.ego:104 830 } 831 //line page.ego:104 832 if _, err := fmt.Fprintf(w, "; seq="); err != nil { 833 return err 834 } 835 //line page.ego:104 836 if _, err := fmt.Fprintf(w, "%v", b.sequence); err != nil { 837 return err 838 } 839 //line page.ego:104 840 if _, err := fmt.Fprintf(w, ">\n "); err != nil { 841 return err 842 } 843 //line page.ego:105 844 if _, err := fmt.Fprintf(w, "</td>\n "); err != nil { 845 return err 846 } 847 //line page.ego:106 848 if _, err := fmt.Fprintf(w, "<td>"); err != nil { 849 return err 850 } 851 //line page.ego:106 852 if _, err := fmt.Fprintf(w, "%v", len(e.key())); err != nil { 853 return err 854 } 855 //line page.ego:106 856 if _, err := fmt.Fprintf(w, " / "); err != nil { 857 return err 858 } 859 //line page.ego:106 860 if _, err := fmt.Fprintf(w, "%v", len(e.value())); err != nil { 861 return err 862 } 863 //line page.ego:106 864 if _, err := fmt.Fprintf(w, "</td>\n "); err != nil { 865 return err 866 } 867 //line page.ego:107 868 if _, err := fmt.Fprintf(w, "<td align=\"right\">"); err != nil { 869 return err 870 } 871 //line page.ego:107 872 if _, err := fmt.Fprintf(w, "%v", util); err != nil { 873 return err 874 } 875 //line page.ego:107 876 if _, err := fmt.Fprintf(w, "</td>\n "); err != nil { 877 return err 878 } 879 //line page.ego:108 880 if _, err := fmt.Fprintf(w, "</tr>\n "); err != nil { 881 return err 882 } 883 //line page.ego:109 884 } else { 885 //line page.ego:110 886 if _, err := fmt.Fprintf(w, "\n "); err != nil { 887 return err 888 } 889 //line page.ego:110 890 if _, err := fmt.Fprintf(w, "<tr>\n "); err != nil { 891 return err 892 } 893 //line page.ego:111 894 if _, err := fmt.Fprintf(w, "<td>"); err != nil { 895 return err 896 } 897 //line page.ego:111 898 if _, err := fmt.Fprintf(w, "%v", trunc(tostr(e.key()), 40)); err != nil { 899 return err 900 } 901 //line page.ego:111 902 if _, err := fmt.Fprintf(w, "</td>\n "); err != nil { 903 return err 904 } 905 //line page.ego:112 906 if _, err := fmt.Fprintf(w, "<td>"); err != nil { 907 return err 908 } 909 //line page.ego:112 910 if _, err := fmt.Fprintf(w, "%v", trunc(tostr(e.value()), 40)); err != nil { 911 return err 912 } 913 //line page.ego:112 914 if _, err := fmt.Fprintf(w, "</td>\n "); err != nil { 915 return err 916 } 917 //line page.ego:113 918 if _, err := fmt.Fprintf(w, "<td>"); err != nil { 919 return err 920 } 921 //line page.ego:113 922 if _, err := fmt.Fprintf(w, "%v", len(e.key())); err != nil { 923 return err 924 } 925 //line page.ego:113 926 if _, err := fmt.Fprintf(w, " / "); err != nil { 927 return err 928 } 929 //line page.ego:113 930 if _, err := fmt.Fprintf(w, "%v", len(e.value())); err != nil { 931 return err 932 } 933 //line page.ego:113 934 if _, err := fmt.Fprintf(w, "</td>\n "); err != nil { 935 return err 936 } 937 //line page.ego:114 938 if _, err := fmt.Fprintf(w, "<td> "); err != nil { 939 return err 940 } 941 //line page.ego:114 942 if _, err := fmt.Fprintf(w, "</td>\n "); err != nil { 943 return err 944 } 945 //line page.ego:115 946 if _, err := fmt.Fprintf(w, "</tr>\n "); err != nil { 947 return err 948 } 949 //line page.ego:116 950 } 951 //line page.ego:117 952 if _, err := fmt.Fprintf(w, "\n "); err != nil { 953 return err 954 } 955 //line page.ego:117 956 } 957 //line page.ego:118 958 if _, err := fmt.Fprintf(w, "\n "); err != nil { 959 return err 960 } 961 //line page.ego:118 962 if _, err := fmt.Fprintf(w, "</tbody>\n "); err != nil { 963 return err 964 } 965 //line page.ego:119 966 if _, err := fmt.Fprintf(w, "</table>\n "); err != nil { 967 return err 968 } 969 //line page.ego:120 970 } 971 //line page.ego:121 972 if _, err := fmt.Fprintf(w, "\n\n "); err != nil { 973 return err 974 } 975 //line page.ego:122 976 if showUsage { 977 //line page.ego:123 978 if _, err := fmt.Fprintf(w, "\n "); err != nil { 979 return err 980 } 981 //line page.ego:124 982 mins, maxs, values := bucketize(histogram) 983 vmax, maxlen := 0, 20 984 for _, v := range values { 985 if v > vmax { 986 vmax = v 987 } 988 } 989 990 //line page.ego:133 991 if _, err := fmt.Fprintf(w, "\n\n "); err != nil { 992 return err 993 } 994 //line page.ego:134 995 if _, err := fmt.Fprintf(w, "<h3>Bhojpur Cache - Page Usage Histogram"); err != nil { 996 return err 997 } 998 //line page.ego:134 999 if _, err := fmt.Fprintf(w, "</h3>\n "); err != nil { 1000 return err 1001 } 1002 //line page.ego:135 1003 if _, err := fmt.Fprintf(w, "<table>\n "); err != nil { 1004 return err 1005 } 1006 //line page.ego:136 1007 if _, err := fmt.Fprintf(w, "<thead>\n "); err != nil { 1008 return err 1009 } 1010 //line page.ego:137 1011 if _, err := fmt.Fprintf(w, "<tr>\n "); err != nil { 1012 return err 1013 } 1014 //line page.ego:138 1015 if _, err := fmt.Fprintf(w, "<th align=\"left\">Usage (bytes)"); err != nil { 1016 return err 1017 } 1018 //line page.ego:138 1019 if _, err := fmt.Fprintf(w, "</th>\n "); err != nil { 1020 return err 1021 } 1022 //line page.ego:139 1023 if _, err := fmt.Fprintf(w, "<th align=\"left\">Count"); err != nil { 1024 return err 1025 } 1026 //line page.ego:139 1027 if _, err := fmt.Fprintf(w, "</th>\n "); err != nil { 1028 return err 1029 } 1030 //line page.ego:140 1031 if _, err := fmt.Fprintf(w, "<th> "); err != nil { 1032 return err 1033 } 1034 //line page.ego:140 1035 if _, err := fmt.Fprintf(w, "</th>\n "); err != nil { 1036 return err 1037 } 1038 //line page.ego:141 1039 if _, err := fmt.Fprintf(w, "</tr>\n "); err != nil { 1040 return err 1041 } 1042 //line page.ego:142 1043 if _, err := fmt.Fprintf(w, "</thead>\n "); err != nil { 1044 return err 1045 } 1046 //line page.ego:143 1047 if _, err := fmt.Fprintf(w, "<tbody>\n "); err != nil { 1048 return err 1049 } 1050 //line page.ego:144 1051 for i := 0; i < len(values); i++ { 1052 //line page.ego:145 1053 if _, err := fmt.Fprintf(w, "\n "); err != nil { 1054 return err 1055 } 1056 //line page.ego:145 1057 if _, err := fmt.Fprintf(w, "<tr>\n "); err != nil { 1058 return err 1059 } 1060 //line page.ego:146 1061 if _, err := fmt.Fprintf(w, "<td>"); err != nil { 1062 return err 1063 } 1064 //line page.ego:146 1065 if _, err := fmt.Fprintf(w, "%v", mins[i]); err != nil { 1066 return err 1067 } 1068 //line page.ego:146 1069 if _, err := fmt.Fprintf(w, " - "); err != nil { 1070 return err 1071 } 1072 //line page.ego:146 1073 if _, err := fmt.Fprintf(w, "%v", maxs[i]); err != nil { 1074 return err 1075 } 1076 //line page.ego:146 1077 if _, err := fmt.Fprintf(w, "</th>\n "); err != nil { 1078 return err 1079 } 1080 //line page.ego:147 1081 if _, err := fmt.Fprintf(w, "<td>"); err != nil { 1082 return err 1083 } 1084 //line page.ego:147 1085 if _, err := fmt.Fprintf(w, "%v", values[i]); err != nil { 1086 return err 1087 } 1088 //line page.ego:147 1089 if _, err := fmt.Fprintf(w, "</th>\n "); err != nil { 1090 return err 1091 } 1092 //line page.ego:148 1093 if _, err := fmt.Fprintf(w, "<td>"); err != nil { 1094 return err 1095 } 1096 //line page.ego:148 1097 if _, err := fmt.Fprintf(w, "%v", strings.Repeat("█", int((float64(values[i])/float64(vmax))*float64(maxlen)))); err != nil { 1098 return err 1099 } 1100 //line page.ego:148 1101 if _, err := fmt.Fprintf(w, "</td>\n "); err != nil { 1102 return err 1103 } 1104 //line page.ego:149 1105 if _, err := fmt.Fprintf(w, "</tr>\n "); err != nil { 1106 return err 1107 } 1108 //line page.ego:150 1109 } 1110 //line page.ego:151 1111 if _, err := fmt.Fprintf(w, "\n "); err != nil { 1112 return err 1113 } 1114 //line page.ego:151 1115 if _, err := fmt.Fprintf(w, "</tbody>\n "); err != nil { 1116 return err 1117 } 1118 //line page.ego:152 1119 if _, err := fmt.Fprintf(w, "</table>\n "); err != nil { 1120 return err 1121 } 1122 //line page.ego:153 1123 } else { 1124 //line page.ego:154 1125 if _, err := fmt.Fprintf(w, "\n "); err != nil { 1126 return err 1127 } 1128 //line page.ego:155 1129 u, q := r.URL, r.URL.Query() 1130 q.Set("usage", "true") 1131 u.RawQuery = q.Encode() 1132 1133 //line page.ego:160 1134 if _, err := fmt.Fprintf(w, "\n\n "); err != nil { 1135 return err 1136 } 1137 //line page.ego:161 1138 if _, err := fmt.Fprintf(w, "<p>"); err != nil { 1139 return err 1140 } 1141 //line page.ego:161 1142 if _, err := fmt.Fprintf(w, "<a href=\""); err != nil { 1143 return err 1144 } 1145 //line page.ego:161 1146 if _, err := fmt.Fprintf(w, "%v", u.String()); err != nil { 1147 return err 1148 } 1149 //line page.ego:161 1150 if _, err := fmt.Fprintf(w, "\">Show Page Usage"); err != nil { 1151 return err 1152 } 1153 //line page.ego:161 1154 if _, err := fmt.Fprintf(w, "</a>"); err != nil { 1155 return err 1156 } 1157 //line page.ego:161 1158 if _, err := fmt.Fprintf(w, "</p>\n "); err != nil { 1159 return err 1160 } 1161 //line page.ego:162 1162 } 1163 //line page.ego:163 1164 if _, err := fmt.Fprintf(w, "\n\n "); err != nil { 1165 return err 1166 } 1167 //line page.ego:164 1168 if _, err := fmt.Fprintf(w, "<br/>"); err != nil { 1169 return err 1170 } 1171 //line page.ego:164 1172 if _, err := fmt.Fprintf(w, "<br/>\n "); err != nil { 1173 return err 1174 } 1175 //line page.ego:165 1176 if _, err := fmt.Fprintf(w, "<form action=\"page\" method=\"GET\">\n Go to page: "); err != nil { 1177 return err 1178 } 1179 //line page.ego:166 1180 if _, err := fmt.Fprintf(w, "<input type=\"text\" name=\"id\"/>\n "); err != nil { 1181 return err 1182 } 1183 //line page.ego:167 1184 if _, err := fmt.Fprintf(w, "<button type=\"submit\">Go"); err != nil { 1185 return err 1186 } 1187 //line page.ego:167 1188 if _, err := fmt.Fprintf(w, "</button>\n "); err != nil { 1189 return err 1190 } 1191 //line page.ego:168 1192 if _, err := fmt.Fprintf(w, "</form>\n "); err != nil { 1193 return err 1194 } 1195 //line page.ego:169 1196 if _, err := fmt.Fprintf(w, "<hr size=\"1px\"><center>Copyright © 2018 by <a href=\"https://www.bhojpur-consulting.com\">Bhojpur Consulting Private Limited</a>, India. All rights reserved.</center></body>\n"); err != nil { 1197 return err 1198 } 1199 //line page.ego:170 1200 if _, err := fmt.Fprintf(w, "</html>\n"); err != nil { 1201 return err 1202 } 1203 return nil 1204 }